diff --git a/.gitattributes b/.gitattributes index 0eec45c..c08178c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ tests/fixtures/xmlenc/aleksey-xmlenc-01/*.tmpl -text whitespace=-trailing-space,-space-before-tab +tests/fixtures/xmlenc/01-phaos-xmlenc-3/** -text whitespace=-trailing-space,-space-before-tab diff --git a/scripts/import-donor-fixtures.sh b/scripts/import-donor-fixtures.sh index ee47227..d62f639 100755 --- a/scripts/import-donor-fixtures.sh +++ b/scripts/import-donor-fixtures.sh @@ -5,6 +5,36 @@ repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" donor_root="${XMLSEC_DONOR_ROOT:-$repo_root/donors/xmlsec/tests}" fixture_root="$repo_root/tests/fixtures" +replace_target() { + local replacement="$1" + local target="$2" + local target_parent target_name backup="" + target_parent="$(dirname "$target")" + target_name="$(basename "$target")" + + if [[ -e "$target" || -L "$target" ]]; then + backup="$(mktemp -d "$target_parent/.${target_name}.backup.XXXXXX")" + rm -rf "$backup" + if ! mv "$target" "$backup"; then + rm -rf "$replacement" + return 1 + fi + fi + + if mv "$replacement" "$target"; then + if [[ -n "$backup" ]]; then + rm -rf "$backup" + fi + return 0 + fi + + rm -rf "$replacement" + if [[ -n "$backup" ]] && ! mv "$backup" "$target"; then + printf 'failed to restore fixture target after replacement failure: %s\n' "$target" >&2 + fi + return 1 +} + fixture_paths=("$@") if (( ${#fixture_paths[@]} == 0 )); then fixture_paths=( @@ -19,11 +49,64 @@ if (( ${#fixture_paths[@]} == 0 )); then fi for relative_path in "${fixture_paths[@]}"; do - donor_path="${relative_path#xmldsig/}" - if [[ "$relative_path" == xmlenc/* ]]; then - donor_path="${relative_path#xmlenc/}" + # Normalize directory notation before deriving source and target prefixes. + while [[ "$relative_path" == */ ]]; do + relative_path="${relative_path%/}" + done + case "$relative_path" in + xmldsig/*) donor_path="${relative_path#xmldsig/}" ;; + xmlenc/*) donor_path="${relative_path#xmlenc/}" ;; + *) + printf 'fixture path must start with xmldsig/ or xmlenc/: %s\n' "$relative_path" >&2 + exit 1 + ;; + esac + if [[ -z "$donor_path" + || "$donor_path" == /* + || "$donor_path" == *//* + || "/$donor_path/" == *"/./"* + || "/$donor_path/" == *"/../"* ]]; then + printf 'fixture path contains an empty, current, or parent component: %s\n' "$relative_path" >&2 + exit 1 fi target="$fixture_root/$relative_path" - mkdir -p "$(dirname "$target")" - install -m 0644 "$donor_root/$donor_path" "$target" + source="$donor_root/$donor_path" + if [[ -d "$source" ]]; then + # Build the complete snapshot before replacing the last known-good target. + target_parent="$(dirname "$target")" + target_name="$(basename "$target")" + mkdir -p "$target_parent" + staging="$(mktemp -d "$target_parent/.${target_name}.import.XXXXXX")" + manifest="$(mktemp "$target_parent/.${target_name}.files.XXXXXX")" + if ! find "$source" -type f -print0 > "$manifest"; then + rm -rf "$staging" "$manifest" + exit 1 + fi + copy_failed=false + while IFS= read -r -d '' donor_file; do + suffix="${donor_file#"$source/"}" + target_file="$staging/$suffix" + if ! mkdir -p "$(dirname "$target_file")" \ + || ! install -m 0644 "$donor_file" "$target_file"; then + copy_failed=true + break + fi + done < "$manifest" + rm -f "$manifest" + if [[ "$copy_failed" == true ]]; then + rm -rf "$staging" + exit 1 + fi + replace_target "$staging" "$target" + else + target_parent="$(dirname "$target")" + target_name="$(basename "$target")" + mkdir -p "$target_parent" + staging="$(mktemp "$target_parent/.${target_name}.import.XXXXXX")" + if ! install -m 0644 "$source" "$staging"; then + rm -f "$staging" + exit 1 + fi + replace_target "$staging" "$target" + fi done diff --git a/src/xmlenc/parse.rs b/src/xmlenc/parse.rs index af91586..e33e1fe 100644 --- a/src/xmlenc/parse.rs +++ b/src/xmlenc/parse.rs @@ -57,6 +57,7 @@ fn parse_key_info(node: Node<'_, '_>) -> Result { require_element(node, XMLDSIG_NS, "KeyInfo")?; let mut key_name = None; let mut encrypted_keys = Vec::new(); + let mut unsupported_agreement = None; for child in node.children().filter(Node::is_element) { if child.has_tag_name((XMLDSIG_NS, "KeyName")) { if key_name.is_some() { @@ -67,8 +68,24 @@ fn parse_key_info(node: Node<'_, '_>) -> Result { key_name = Some(parse_key_name(child)?); } else if child.has_tag_name((XMLENC_NS, "EncryptedKey")) { encrypted_keys.push(parse_encrypted_key(child)?); + } else if child.has_tag_name((XMLENC_NS, "AgreementMethod")) { + // Agreement methods require a separate key-derivation trust boundary. + // Keep the URI as a fallback error while allowing another advertised + // key candidate to be selected by the caller's resolver. + let algorithm = child + .attribute("Algorithm") + .ok_or(XmlEncError::MissingRequired( + "AgreementMethod Algorithm attribute", + ))?; + unsupported_agreement.get_or_insert_with(|| algorithm.to_owned()); } } + if key_name.is_none() + && encrypted_keys.is_empty() + && let Some(algorithm) = unsupported_agreement + { + return Err(XmlEncError::UnsupportedAlgorithm(algorithm)); + } Ok(ParsedKeyInfo { key_name, encrypted_keys, @@ -488,6 +505,46 @@ mod tests { ); } + /// Verifies that a lone unsupported agreement reports its algorithm URI. + #[test] + fn rejects_unsupported_key_agreement_explicitly() { + // AgreementMethod is outside the supported secure profile. Reporting its + // URI avoids misclassifying a present but unsupported key as missing. + let xml = format!( + r#"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="# + ); + assert!(matches!( + parse_encrypted_data(&xml), + Err(XmlEncError::UnsupportedAlgorithm(uri)) + if uri == "http://www.w3.org/2001/04/xmlenc#dh" + )); + + let missing_algorithm = + xml.replace(" Algorithm=\"http://www.w3.org/2001/04/xmlenc#dh\"", ""); + assert!(matches!( + parse_encrypted_data(&missing_algorithm), + Err(XmlEncError::MissingRequired( + "AgreementMethod Algorithm attribute" + )) + )); + } + + /// Verifies that unsupported agreement metadata does not hide usable keys. + #[test] + fn retains_supported_key_candidates_alongside_unsupported_agreement() { + // Multi-recipient KeyInfo may advertise an unsupported agreement method + // before a key candidate that the configured resolver can actually use. + let xml = format!( + r#"content-keyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="# + ); + + let parsed = parse_encrypted_data(&xml) + .expect("a supported key candidate must take precedence over agreement fallback"); + assert_eq!(parsed.key_name.as_deref(), Some("content-key")); + assert_eq!(parsed.encrypted_keys.len(), 1); + assert_eq!(parsed.encrypted_keys[0].recipient.as_deref(), Some("alice")); + } + #[test] fn rejects_missing_algorithm_and_duplicate_oaep_parameters() { // Algorithm selection and OAEP parameter cardinality are security-sensitive, diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/Readme.txt b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/Readme.txt new file mode 100644 index 0000000..5d11ee2 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/Readme.txt @@ -0,0 +1,52 @@ +This directory contains the following files: + + Readme.txt -- This file. + + payment.xml -- A sample XML file. + + key.txt -- Keys for decrypting the encrypted XML files enc-*-*-*-*.xml. + + dh-priv-key.der + -- Diffie-Hellman private key encoded in PKCS#8 PrivateKeyInfo formate. + This key can be used to decrypt the files enc-*-*-ka-dh.xml. + rsa-priv-key.der + -- RSA private key encoded in PKCS#8 PrivateKeyInfo formate. + This key can be used to decrypt the files enc-*-*-kt-*.xml. + + enc-*-*-*-*.xml + -- XML document obtained by encrypting and replacing part of the + sample payment.xml. The data encryption key is in turn + encrypted. + + Each file has the form: enc-A-B-C-D.xml, where: + + A indicates the type of the data encrypted. This includes: + + element = The CreditCard element. + content = The content of the CreditCard element + (multiple elements). + text = The content of the Number element (text node). + + B indicates the data encryption algorithm. + + C indicates the key encryption protocols: + kt = key transport + kw = key wrap + ka = key agreement + + D indicates the key encryption algorithm. + +bad-*-enc-*-*-*-*.xml + -- some "screw-up" samples + +The sample encrypted XML files are produced from Phaos XML toolkit. + +Jiandong Guo +Phaos Technology +http://www.phaos.com + +jguo@phaos.com + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml new file mode 100644 index 0000000..b715657 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml @@ -0,0 +1,29 @@ + + + John Smith + + + + + + + my-tripledes-key + + + HgVuHoXxBQWD9fvi0gt9TanywZ5lJokM/12fcMG6gRoMjsCPulH+4A== + + + + + + + + + yUMIHkj5EETckjZ59fpda4+m4YLCrkJsnuRz+Q3e5sP+VvHKRH1kdeGkXw3kYURV + JM3nQjGl2egW80oUxSykQD2F9iDoIjNhLSgIbyuse64oo/5/v9IiaUpSvrAocwLP + AzFIUmOrxmIagAkRGDOeMR8tdHLD6g84dQj4O/aGfwhL/2wUo/l+7onrbmsd6pVI + fjNyvXm+eITuyUnkDTHrCR+dfb2sHaQ3g3McgyfP6ZjI/L50SPJZ/w== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/dh-priv-key.der b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/dh-priv-key.der new file mode 100644 index 0000000..8af4f0a Binary files /dev/null and b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/dh-priv-key.der differ diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.tmpl new file mode 100644 index 0000000..fa26733 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-aes192-key + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.xml new file mode 100644 index 0000000..4771f01 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.xml @@ -0,0 +1,30 @@ + + + John Smith + + + + + + + + my-aes192-key + + + 5+GpVUQNTAT3uY8pPedEg/PpftiX+fJsTCun+fgmIz0= + + + + + + + + + QBWlf/iYDXKbBWf0Pu3Bgzt5oLBwIs4NKPb/I0SxDYVnDc34i7tZG5UzHlztsWlX + udfbIW9l7k5WVdy9bfXZWrp6sXamBedUQTrr+z4v4u2jWaUyqEioLe7h36QeoU23 + QvkOzRO9AiWm/QCCzePZ3Frp4LM9lXOE + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.tmpl new file mode 100644 index 0000000..623a826 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-3des-key + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.xml new file mode 100644 index 0000000..7958d57 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.xml @@ -0,0 +1,30 @@ + + + John Smith + + + + + + + + my-3des-key + + + /PZvvn42E9dmMUZ8KCY6B5XtLaaIaG4X5YNDwgV5Vlo= + + + + + + + + + rINpr0HonGcKnnf/vYx8N3gnd+1rb+zwH1vnfjyt+bOoSU72w/QqniT71/GxtFFx + gwE0/arABVa1r8/PMRerWqyParMnpwIRq6dzQHKb5SqiqFEYPRZhytTGZFXN39oG + YZkSINOli5paMwTWrq6hDSPRozKvfEqhuI0VgZU4OLM= + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.tmpl new file mode 100644 index 0000000..11aa763 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-aes256-key + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml new file mode 100644 index 0000000..86a787b --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml @@ -0,0 +1,30 @@ + + + John Smith + + + + + + + + my-aes256-key + + + IbnoS1cvuIFIGB46jj1V1FGftc92irrCwcC7BoBvxwQ= + + + + + + + + + /RDTbL2ce9Ca+2GS0FLJbFMXcpEvDLlW5RnpeKLe+pIO1lNpxsi40/tsqCVauD66 + FOCaXkKPcQYaeHVtD4jnE/OHZYFVJ8zS8z4I7nDg44R1e9ZJ9xN3kAEub1T2MdeK + SVxPrhksHOWTwxFbPul9YRaNsrmi9a0XN4ggudJu+Rw= + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.tmpl new file mode 100644 index 0000000..709ee22 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.tmpl @@ -0,0 +1,24 @@ + + + + + + + + + my-rsa-key + + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml new file mode 100644 index 0000000..3f77c81 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml @@ -0,0 +1,63 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + Vc7VOXgJDlw/oQ0hOvIaBKsGiOwyvIArzkhd2W7mZBQyeFlkJlxZQdnPGGg4kJE9 + EGWeMWQZ0XavJy+xA9Z+PlIFqkpPHUXyos9jZZNniRxEtl6tLce2ReSVah+y8Lb3 + 3xSNSm+O9k2B42yP3Osrj175KNMSMLLM2ZuA0iq28aP7v7DmtDY7VNp0n+O4nJUM + Eyy4RO0jmtXctt3jUfpCmGkqy42/LG6F5h1kluyfszjHvi/9lD5LEkCl2Y/3az+j + 2vLuuXM45z6ef14Dlgsh7eJtqp3bRT0Tpp4JvBWMiuDZaV1zUcZq7q80lNMvXucb + mSrSmlXn2lWPttfTrcjXrw== + + + + + + + + + + p5MMs6F765jIUqOj5rH1vAro0Rx4/PLIoEOXCOWaEGbEdCHh0m86zifozutcmoBA + xy1SuxmJjtFDO32f/bpuDhdzFDgLrlVIcXrNeHGgken6NryC2n1NdGS9CiYsyaPF + B5CWEkx3Prtbak6S20z3XZTJltOdoqzeNOn8/IDavLA= + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-ka-dh.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-ka-dh.xml new file mode 100644 index 0000000..ec75a1a --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-ka-dh.xml @@ -0,0 +1,83 @@ + + + John Smith + + + + + YWJjZGU= + + + + + MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw + LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ + V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp + jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD + BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI + 6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI + e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8 + wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7 + oMfGG8PmU+sbN9sNXtIzOA== + + + + + + + MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM + KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb + it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p + dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD + AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV + 6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl + eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j + YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4 + rDa/YKrmL5K6S9GSF27rx40= + + + + + + + + BsIAtHyqE+foVEU2B8EoSAErEMjuunlXygmu+BC6SN+mYGFEsQ/frVzgiKBo2yRe + bbnuUqAwDx03wS4zqmW5lD1C6bm/9tUSSv8HcNr7vRqrx3tRQ51y6y5xRbhjK6Zi + vKHDXwZpxY4CnhfUwbtTSZisjNn/eV6UYxZdz2zmTxAJXAPI1dVFiPdqhljXhlDE + tVAt/1f+//u1D782NMCuPVUt09Mtbf0pcFJhtoCmx84NVT3XwK+2Tg== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.tmpl new file mode 100644 index 0000000..8328ebb --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.tmpl @@ -0,0 +1,23 @@ + + + + + + + + my-rsa-key + + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml new file mode 100644 index 0000000..2772fbd --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml @@ -0,0 +1,61 @@ + + + John Smith + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + bYDE3XSjELiEW/rX08ZQUcG1dK1l1uSw14EKhIHbwrM8DFZKF4fBaPXxG/91mkOA + cs3q0LZESrqHGVrm9UvqL48utkNrR56ud60FhIgSBgdKE/9qTMjrSCX1Vw7xfhJH + Fc4tD3vjhALLaO3SUT8esPQKPK4gEWYMNzdpyNQuD0mrLiQ/SnHuHKzBmSjjgKkk + xFcFVdiPT/XAhEZcuvkOyLMYgPN55slcnRzckOEq6zOcu8Ww6/2dG0a0TRioFeHW + ecqmW8jawxxOVnVVSdDNlqwYWpM+2XxgYuSifsDwkwaNwVAM/xXgj05ZPr49powT + 1nZJ5cARCmW5zLh6aNpQng== + + + + + + + + + + LBisCaY4C+s7h8LjVpi8++dCzxxM2P7jR+rw+W0bVZz/YNfG9Q4Id/GkTlcYP/aT + WNJfNVhip8KD6QiQqjsRkaF81w8Uam1lVXz8X2Gc6Rsx5L7j+1OblmB6VLPuIwBJ + wImjNiEX4RhrS4TfxF/zIq0sLT2DCHdHI752VCnZ8ulVKDnamCZUvT95YqlcCYnc + VWAOV5fYH3YvtZ6S/zpTEKW79dnGQZL8od5aJsRrid5fq49X/5KtMw== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.tmpl new file mode 100644 index 0000000..3405bd9 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.tmpl @@ -0,0 +1,22 @@ + + + + + + + + + + my-rsa-key + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml new file mode 100644 index 0000000..2cce7a1 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml @@ -0,0 +1,63 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + ZF0JPSfv75/8M+O2O/xi+8N1b9KT94a4l1D1Q65hnX6F00t+wAWZSkcDUoD/y2/E + RKGUyuQwsG6l58e4MwYpmDI4RhHrUYLCQBacAehqVZhwNxv99L7ANsqrZJoT7N0k + ER9MbmuIZGb4qisLDfZtzIGKKUUiA3ARfQny4MUxFovSmVUF2OjqSBXUVV/PjMLi + fVTVyqCMv08YwmM4abj33tKOEMtiZqAa09lUIpnCUzq2IAShSRNBzWIHe+ndoB6G + 2p6ufk0TuRidwdQZkZwTW/2PjK1x7KejaqADWaOIImKhSBMpGzkVfDuv8aAFXOtf + +LV67Ov6hJAt7FB65tE9Hg== + + + + + + + + + + kY6scZxpyRXQbaDZp+LbuvSFYgmI3pQrfsrCVt3/9sZzpeUTPXJEatQ5KPOXYpJC + Gid01h/T8PIezic0Ooz/jU+r3kYMKesMYiXin4CXTZYcGhd0TjmOd4kg1vlhE8kt + WLC7JDzFLPAqXbOug3ghmWunFiUETbGJaF5V4AHIoZrYP+RS3DTLgJcATuDeWyOd + ueqnLefXiCDNqgSTsK4OyNlX0fpUJgKbL+Mhf5vsqxyIqDsS/p6cRA== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.tmpl new file mode 100644 index 0000000..0f6d9a5 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.tmpl @@ -0,0 +1,28 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml new file mode 100644 index 0000000..29c9730 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml @@ -0,0 +1,63 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + Y97gGuJRx1Vt31KHkKJfJCh/7XSSQxMH8rF+GAlnEMd4fq8+sL92XBMtLiLiNeWC + VNaiBorxZrqIW9xPAcOdvN1v1QIxlhf8LtiFyBMWKQm9i61t64cJC2ZRCdT8nPxy + Qt+fvUXGpLn0LA4cHyMukeLPO4EUQY8whunVXkuSgTKjJICxYKF8HNYsHUr1/fyy + QL2PW1/UfyEpSBJAZMg+TQFuBSCbAuWbFK2AgSupV5NIppBNU/eRhArReeuAgzSu + nY9dX1ofdZs8GzvuV8tfcBHzT/h59MPYMxl4sZrl/0NeMQ0ewZhX3yygebgyzZNP + 4TB4QzQZHRoXNIPUs0vkfA== + + + + + + + + + + 3Bg5VZK+B/FETt4rT4baIJ4jFKBraqxPnltaSNC672NTcMxBlWG5omCGsbL31gAe + BDNelmi+3OmqhPLYYsbNOSl6O7YKoP6JvbXVcUcwWwsjEt9Fm6PTrTMy+vp+bgFM + J8L0WCwyPXnCl/DJS99eaGSG518ynfM/cEmDUINFatT8PX55B4Pd+o1BWkmVxg+E + jOgiai7L35HCOTpiBwLUUErvvulujk9iFW5ZvqkgIDLOlDLfx4/V9A== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.tmpl new file mode 100644 index 0000000..e5cf1a4 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.tmpl @@ -0,0 +1,28 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml new file mode 100644 index 0000000..3cdc2a1 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml @@ -0,0 +1,63 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + bJVDvrtv578zcv3L/pK2YCCJtvMTDupUJB5+ZNlr6QjWolttow3QRrYHXj/W00SX + lGMdqRuJOkn575Xq3PHO1smO5cxWl5j7sTzVSAkzx/Z5xqiMhrFV+lBWOA/vp437 + mEyGUxDrlE3E2NwvKCn8ovP3OrLIz3TVzy3U16hm0yriWcIZAQEpCQsSLxtPWVXt + +MMVvn/9y1CLAZh6dHBVHipp/mpf2X2ki4XuHvCRvaAB0fynB3mVbOUAi/NYR65o + u5BOfeS7HgTkWpo/XTa7e/XpkGsShodOm4ixJ+wKSNsMgNXivYmtghQR79x8H0+J + lMeTf3dYtV3RUJvi5n1CRA== + + + + + + + + + + HkxiYRptVjgbv1UjUpyAYp/ty8vBgGgQY/Zr+0tz5Z8W16gp7kvHxAIcyL3E81yO + 7G54qhvQS4Ie1Et+j9/XEgBL8RdF8TdBnQ5PlPaoW0ckIV/f8gIxxGU0akjciUSG + iXHKL059fdr46aDFLYtwniNiJYG16eG/FFhlDdplWIK+FkaTEMMADEG78Dryle+A + DTl1V63WGBpS73k21hag/Mwv2xw5HUasmP1RFuLX4JCxcZAwJrPzoA== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.tmpl new file mode 100644 index 0000000..072859b --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-tripledes-key + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.xml new file mode 100644 index 0000000..dad2ccc --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-3des-kw-3des.xml @@ -0,0 +1,29 @@ + + + John Smith + + + + + + + my-tripledes-key + + + HgVuHoXxBQWD9fvi0gt9TanywZ5lJokM/12fcMG6gRoMjsCPulH+4A== + + + + + + + + + yUMIHkj5EETckjZ59fpda4+m4YLCrkJsnuRz+Q3e5sP+VvHKRH1kdeGkXw3kYURV + JM3nQjGl2egW80oUxSykQD2F9iDoIjNhLSgIbyuse64oo/5/v9IiaUpSvrAocwLP + AzFIUmOrxmIagAkRGDOeMR8tdHLD6g84dQj4O/aGfwhL/2wUo/l+7onrbmsd6pVI + fjNyvXm+eITuyUnkDTHrCR+dfb2sHaQ3g3McgyfP6ZjI/L50SPJZ/w== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-ka-dh.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-ka-dh.xml new file mode 100644 index 0000000..4672de7 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-ka-dh.xml @@ -0,0 +1,83 @@ + + + John Smith + + + + + YWJjZGU= + + + + + MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw + LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ + V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp + jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD + BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI + 6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI + e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8 + wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7 + oMfGG8PmU+sbN9sNXtIzOA== + + + + + + + MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM + KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb + it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p + dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD + AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV + 6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl + eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j + YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4 + rDa/YKrmL5K6S9GSF27rx40= + + + + + + + + 2+4oM3TFfOQ5JMIvRbTk3SbeWqbSVAhMb9zT+3BatcUJuhxzzXtLKEzkfPT09iTP + NmwEoUysB5uETmQ49Fd/0l21QjUmctAaCBIbWSrP4f3K2SUGxjKNZE4Pes+8DwiT + H1cak+3qT0zbqFa6rXcdLxS/ucxJOPMJV9ZCE4SkvFt2ZME8uRevFEYIqp/HInFZ + OjY9Lf8+hHOXVOVqrMObx7/CFzm0AS2aL4WmyfGM3zyUN1BF3nS4zzVOHNfIFopX + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.tmpl new file mode 100644 index 0000000..78b6a0f --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.tmpl @@ -0,0 +1,20 @@ + + + + + + + + my-rsa-key + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml new file mode 100644 index 0000000..ff5816e --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml @@ -0,0 +1,61 @@ + + + John Smith + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + cCxxYh3xGBTqlXbhmKxWzNMlHeE28E7vPrMyM5V4T+t1Iy2csj1BoQ7cqBjEhqEy + Eot4WNRYsY7P44mWBKurj2mdWQWgoxHvtITP9AR3JTMxUo3TF5ltW76DLDsEvWlE + uZKam0PYj6lYPKd4npUULeZyR/rDRrth/wFIBD8vbQlUsBHapNT9MbQfSKZemOuT + UJL9PNgsosySpKrX564oQw398XsxfTFxi4hqbdqzA/CLL418X01hUjIHdyv6XnA2 + 98Bmfv9WMPpX05udR4raDv5X8NWxjH00hAhasM3qumxoyCT6mAGfqvE23I+OXtrN + lUvE9mMjANw4zweCHsOcfw== + + + + + + + + + + u2vogkwlvFqeknJ0lYTBZkWS/eX8LR1fDPFMfyK1/UY0EyZfHvbONfDHcC/HLv/f + aAOOO2Y0GqsknP0LYT1OznkiJrzx134cmJCgbyrYXd3Mp21Pq3rs66JJ34Qt3/+I + EyJBUSMT8TdT3fBD44BtOqH2op/hy2g3hQPFZul4GiHBEnNJL/4nU1yad3bMvtAB + mzhx80lJvPGLcruj5V77WMvkvZfoeEqMq4qPWK02ZURsJsq0iZcJDi39NB7OCiON + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.tmpl new file mode 100644 index 0000000..f42357f --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.tmpl @@ -0,0 +1,22 @@ + + + + + + + + + + my-rsa-key + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml new file mode 100644 index 0000000..e8ec21f --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml @@ -0,0 +1,63 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + W6N0IhRF2AdgfzzkZSp/u1kH5KmH8L4W8k4mdNMboLsYgnBUV3lsRvoFrVTXluMV + DtXY1ju7aAEUJP9eMRU676kvRR5nSVuAbWCAejgkHMtGShJHU1s/JMzbu3iaxsuy + PosT7/iafinNIXumvqLM/WQl9KbsmcWoAmJISbK1+WJ2kahrXNav4+7vMJq90BOP + l8bXIzeKIsps7OGwEvrFaJ5RzVjZXi9SDXXD1vd6tJBcCfcZ347Mat1tZkR3cYrC + MhDdte3gYGUQLzUlMYucvWz1slzTX3rYea/vhgA+OLOpdZxwM4igx1d8j5jjmo8F + R1rxwd0G4NHA1bZ6TOy/IA== + + + + + + + + + + YjIkLPqklVVN1faEsX1t5EXXxdlW3B0rKoZsT5DtaS+pChdcceQV605clJ8YEhOj + EhM0oCGf855bQVWp7J3TJqUFlxahREEWCfEvsIUzy/wNMHV6Z/mTFkQUWnrO3C3D + SC6rTglijkPp592Sh1Cb6HTD60Nc/Myn3QLnwlSj+30x3uTUiAVEL+xduAnppCR1 + vhRsB3yw32TjRfZt1b+UURRzCts5oLrVAu9SSrmgJI+vUX9gsRgvwkmsi4AAq38a + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.tmpl new file mode 100644 index 0000000..dc60d67 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-aes128-key + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml new file mode 100644 index 0000000..aa6f0ff --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml @@ -0,0 +1,29 @@ + + + John Smith + + + + + + + my-aes128-key + + + GPl6bneL1jKl0/lGnf9gejlYHRI6XxFz + + + + + + + + + AbJmB4dsNP5svH3n260KeHFFqRoXaBoDYIqtrhXHE0t1TvJaGtvwjJt2pgM8Yffc + xKyOLWJljv+FraXUZFnW+VJloMTAXQ8DyeR8ds1sj6X7hT62RFIKm0DvggdBAh9d + tpeF6fwtOeUUCmidna7im7SLh9a9/CKTBb9RqDzKXQ+Sai6knJPZHtX/yF6ZedgX + GOUFLX3EdzwVgJ3jnKcB/LZjapsPrRs+6lMdck26aRizWJBHYpY86gWWnu+Ob+/k + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.tmpl new file mode 100644 index 0000000..b139039 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-aes256-key + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml new file mode 100644 index 0000000..2b376a1 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml @@ -0,0 +1,29 @@ + + + John Smith + + + + + + + my-aes256-key + + + ic+Om6/3ZKcThVN3iv9lUEankNkDv3Et + + + + + + + + + T+1ay9FMWTWWnoPYUhVHMA2SNV2w9OirluWOrMSZvRUC8mQHmYfKcuD9WshrgtVd + dnsiPobRS+Q0DJgfX8CtfjJ3wtQ2DXX9GFgV8662G0hZEjQ4SGgWhxtQEusjVFSl + Uw4/pxmECD5O6K7N9PwnlYwMm9teksvfWcG5xir+w4k24cc9njLj5Yd0uX2o5Nj1 + sjjNFzbw5cQ4Fx3KSG2HGwnnC/+5/xyoX1eJgdOxdKQvR8uSMmyIcTPGVtRAzH3l + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-ka-dh.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-ka-dh.xml new file mode 100644 index 0000000..d722ccd --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-ka-dh.xml @@ -0,0 +1,83 @@ + + + John Smith + + + + + YWJjZGU= + + + + + MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw + LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ + V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp + jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD + BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI + 6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI + e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8 + wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7 + oMfGG8PmU+sbN9sNXtIzOA== + + + + + + + MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM + KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb + it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p + dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD + AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV + 6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl + eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j + YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4 + rDa/YKrmL5K6S9GSF27rx40= + + + + + + + + jg5SecwV6R7dluAMEUsPwWmrTc236XCF8xEVEV7cyEJDfTmdk6BNX4w5BKfFDfOP + ph4t428f9HI3WIg48BVY8DDaYOReo0a3BKcIoiDjo80V5eZdAQdlWLOecKmD339+ + gqxeBIdJkmQyIpKqDM2NAlqcKM0p+utAn5M8fUosBBO7boJ8i/lnOvDrkqiELHQy + ZZZKgWsYoIZNKPq1Fd6AUVBAIod3ruMfZYVfXL5G2S1jYa8JNcwp2MU32SIuSIxL + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.tmpl new file mode 100644 index 0000000..ca51a47 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.tmpl @@ -0,0 +1,22 @@ + + + + + + + + + + my-rsa-key + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml new file mode 100644 index 0000000..ecad1eb --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml @@ -0,0 +1,63 @@ + + + John Smith + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + ELSmG8oo52p2ANjbCRJDV0K6M/3W+1b+3A1c07oNWdxeUerdUBarYe5BQingndIv + y4qfD9hGif8AmY0IXuLWptmZYx8TlHLSYw7TUfLxYMVLzUVtDgrPAqXStNcpJK/l + 0INMurXU+xnvDXpQEcCthh6C8AWxvXDVKW+8Ud8vLYkGGNVgtEPtdAybx2WptfzJ + TSYvkRr0VEjDJSg9ZPSJLCeOwQZ9+YvP9F9E556EHK5A476fAgeNL3uefsZ4Yo4Q + 1UANOvSBtY2ro8xOj6PyBI/5RiW9AVUQd+5UiPq1/jWSoKTFaWib4xr5WhI4dQlc + nkYU3EYhmST4pokqevZplw== + + + + + + + + + + WeFDc5EMzI4i77yhGpY2Ae+5VvbPSdnrmXvlRrntz5v6snRmVxtSAXJQgJiouER8 + BNVTiMdB/YcpzOeWLAEfEZG1PswYFsmkYd9QCvGpv1oXisv9Cv8uR9BBmz/ylOmX + pBCfU38i0fR90JOkGMjwtlkNTwPwOsG5EFRch8jx/wk6qaj6qojJOA21IlFsTKFA + ugZ3uZeDFPNBJMSVnLudyMFrQYWT14ji/aFETqhQxwlHkgrx1WDN26tBN/9Q6aTZ + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.tmpl new file mode 100644 index 0000000..a90d325 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-aes192-key + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml new file mode 100644 index 0000000..d3cc630 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml @@ -0,0 +1,29 @@ + + + John Smith + + + + + + + my-aes192-key + + + iuZvvGBWScikHld9TtNIOz0Sm7Srg5AcxOBMA8qIvQY= + + + + + + + + + /zILD8Eq5vvZK7A+XJaHzoXVqPkk91sOunyhqj+yFA6ZJquaFSUz3A/aQ8AkTrVS + /rGiNCXDOfmpIab6DRH5deOG0RNxDQvtSiAmM+Beb+Aas5WJ9UNKk1ff8sBdgznl + 9u8ApmELFPj5u2ucOdCOGS+Re708aSI6SGmqUEJusoXLWJSSD0gE1xW1hmukrTaR + p8kkchaNNTM+x4gLbq3sSsfncnCo9E/MpeQqQfBPL7r92UwvUMY/DEVz0BbKLomG + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-ka-dh.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-ka-dh.xml new file mode 100644 index 0000000..221665f --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-ka-dh.xml @@ -0,0 +1,83 @@ + + + John Smith + + + + + YWJjZGU= + + + + + MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw + LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ + V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp + jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD + BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI + 6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI + e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8 + wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7 + oMfGG8PmU+sbN9sNXtIzOA== + + + + + + + MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV + BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG + SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA + uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of + X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi + IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9 + G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s + UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm + yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E + GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52 + TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa + 1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM + KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb + it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p + dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD + AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV + 6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl + eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j + YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4 + rDa/YKrmL5K6S9GSF27rx40= + + + + + + + + aXXD/Yz+ENFF/uop7z9RwfeVfdFteZwcxMILahK/NKF58LMsUKcr0C9jk5IkMZqJ + m+bszCs5O61zLI/iJcKFUU2VrokeTuYUP2BZMoxL7q0zqUs7bIwm61IEmU0ghtAT + 5jSGCbZLPfz3SRe3de023098UbTg+xC/zLslLxBvEtuZh/rNIoNlCA1WwUNV7oRG + tFoqxzDDh/hyBJzSMAw/S/efNORn4Bbfqu4WjO5bN8wxCi1ATFtAmhSVh3c6t1/U + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.tmpl new file mode 100644 index 0000000..95d1698 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.tmpl @@ -0,0 +1,22 @@ + + + + + + + + my-aes256-key + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml new file mode 100644 index 0000000..9730db8 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml @@ -0,0 +1,29 @@ + + + John Smith + + + + + + + my-aes256-key + + + IMwdsyg89IZ4Txf1SYYZNKUOKuYdDoIi/zEKXCjj4j9PM6BdkZligA== + + + + + + + + + sKcjsnw0spmr+iFPf2FWILKQz32+8DvSGm6WTtmMd9syqY/+BIubjH3PS7ROuGY6 + xaotStXfOXm5fE4R3Haqw/04gfV4jJU3vIZZHYj9blDIn602YtqI+xti2zZOhGZ4 + 9gssg7m8ZOJ28yfbQfNw97RdwQiSnIU/Bh87xQJRDK0/M3fOHylMUTH7xMMbQu5m + rhYj49kNpnVK7XyP7jCek0lT2ei7KYdKaxD/Jm/xWPxaxyS2C8q9bku5HMsEKJOn + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.tmpl new file mode 100644 index 0000000..37e2827 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.tmpl @@ -0,0 +1,23 @@ + + + + + + + + my-aes256-key + + + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.xml new file mode 100644 index 0000000..b972f1d --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.xml @@ -0,0 +1,32 @@ + + + John Smith + + + + + + + + my-aes256-key + + + + jOvQe4SxDqEMvAHcmb3Z+/Uedj23pvL6BRQsl2sjJlQ= + + + + + + + + + + tY3V4h8kopDTZXb80BoqEWH7/nWryHZhU504S1ZRPLw= + + + + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.tmpl new file mode 100644 index 0000000..5da8324 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.tmpl @@ -0,0 +1,21 @@ + + + + + + + + my-aes192-key + + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml new file mode 100644 index 0000000..a380abb --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml @@ -0,0 +1,28 @@ + + + John Smith + + + + + + + + my-aes192-key + + + PeDwjnCsg6xWzs3SmzUtc2nyUz28nGu7 + + + + + + + + 6hfMgI39JG5aIId4ZxZkXLGSGVcC7Wu4yOSdkC4H3NJ50pMdcZI2c38YoFHpFZFS + + + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.tmpl new file mode 100644 index 0000000..7b96173 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.tmpl @@ -0,0 +1,20 @@ + + + + + + + + my-rsa-key + + + + + + + + + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml new file mode 100644 index 0000000..46f5844 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml @@ -0,0 +1,62 @@ + + + John Smith + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + fiDteajx7IJTorLOQoMiXyblOh3zNix23qAy0hcKKP1/7OeLDT1hEnrXkKVvG83h + No3WF89VPuZGuGeEIJl4xcMklHItcI370NmGjCgKI5GQS/6yxMr4mEbiUL2X8Ycy + wVa2GUV9qFlkv6C8OnFpCUqBgJOjbUAu9pQ3OWa35Nv8tKqyaphPUaQtPc8ZMehS + cLHtkYKeByWqz5Djp11rklDp4v1QSeDWEn9zCKkaFiD0DZRtqpnTzwjj1tZsDNp8 + mbps2mAlqnU0L+EsR+8KTRh5vzmxueM+lsLkGH2Rusy2qi/GqmF/NiwyTBdokWoM + Vd9qzUAODGnwGzf7ymyVKg== + + + + + + + + + + hg1h2JBeLhLq1QxPKsOQUE/ThbnjAdFCfQYKeqO1ipbi6lTZr5XPP3XsIybze0nX + + + + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.data b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.data new file mode 100644 index 0000000..1d79428 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.data @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.tmpl b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.tmpl new file mode 100644 index 0000000..199da11 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.tmpl @@ -0,0 +1,22 @@ + + + + + + + + + + my-rsa-key + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml new file mode 100644 index 0000000..a44829f --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml @@ -0,0 +1,64 @@ + + + John Smith + + + + + + + + + + my-rsa-key + + + MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx + CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg + U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0 + IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx + MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE + CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l + MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh + BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B + AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk + Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J + xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A + ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH + +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW + W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV + HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB + ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym + OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y + WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO + p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf + O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa + kKO/vB9Ay64Rt88XbLnnGns= + + + + + + FCMw2HiQoGdINvvQYoMdRH0fE5oM9i3E9D4IRx9nwvnZLbA/Oi5snoKYEjYQ8ALK + QxYkGKhHtvwsUpVyxA9wGxbNP19Qt1yJIthG6mHUrGTcN9iYvY85FacG3NQWmdMh + HjqmylWZAqY4b+qDHczciqzT9i/M3AVct8RrgfVL/MgYyo1WLM0n+svRtc+GFYu6 + QupE5bV1UFb/x3FaQtlzm6fIin+BSThCPKfnanj5Z1rAZsi7Wo9TiK610DKh9zXx + ONfiLcv9fpoHxpsEzCvAp+RUzLTuqxsLR1rdOveQLy/lTx9eClK8YepzlQIaXiOY + y0UqwPAQnEjuVzOmT3CsrQ== + + + + + + + + + + DpNYC0Np5hHaQAUyHWpM3MQ99wkDFtGRc7TywqxmhI4sJKDXM5SRjVlKf6st5wOz + + + + Bank of the Internet + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/key.txt b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/key.txt new file mode 100644 index 0000000..d08983a --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/key.txt @@ -0,0 +1,117 @@ +This file contains keys to decrypt the sample xml documents: enc-*-*-*-*.xml. + +All the keys are expressed in hex string. + +The symmetric keys (Triple DES Key, AES-128 Key, AES-192 Key, AES-256 Key) are +key wrap keys. They can be used to decrypt the EncryptedKey element in the files: enc-*-*-kw-*.xml. + +The RSA Private Key is for decrypting the EncryptedKey element in the files: enc-*-*-kt-*.xml. + +The Diffie-Hellman Private Key is the Recipient's private key which can be used to derive +the data decryption key for the EncryptedData element in the files: enc-*-*-ka-dh.xml. + +#Triple DES Key (identified by the key name = my-3des-key): +#---------------------------------------------------------- +c8 8f 89 d5 fd e9 b9 80 04 46 32 1c 4f ab df 83 a4 62 b6 62 97 f2 70 f4 + +#AES-128 Key (identified by the key name = my-aes128-key): +#--------------------------------------------------------- +d3 5f b2 b9 0d a1 b8 f4 b5 f9 0b f4 2c 7f b3 69 + +#AES-192 Key (identified by the key name = my-aes192-key): +#--------------------------------------------------------- +22 57 ee 4b 8d 0b bd 2b 55 53 43 23 f1 e3 eb ac 61 d5 84 06 f8 f3 2f be + +#AES-256 Key (identified by the key name = my-aes256-key): +#--------------------------------------------------------- +66 16 78 bf 74 65 c1 39 42 10 ea 48 ac 77 cb 29 5c 89 38 10 ed 10 93 8e 40 36 +ad ff 8c 51 d5 b0 + +#RSA Private Key: +#---------------- + +#Modulus: +82 3d d3 3b 25 2d 82 0f 7d a0 47 ec 9b c8 7d 25 36 41 c5 49 33 62 45 d5 50 e1 +f1 23 09 e4 17 0a 78 cb d6 67 ac 68 da fe 3f a4 a5 1c 8a bd 83 f9 0a 43 5d ab +47 b9 f3 fa fb 18 b5 e3 e3 98 aa 77 4d d7 8e c1 4d 4d d8 f2 e0 e2 0e 81 fe c9 +c4 c1 bb cf e8 44 07 52 d3 da cc 13 b3 5d 06 20 b1 56 3c 1c 91 97 7f c1 12 c9 +de 90 b6 5d a2 a3 68 26 bb e7 b6 d5 64 c6 0b b7 c7 cd 09 8b 7f c0 64 3f 14 6f +f9 01 18 e4 8f ca ee a9 9f 73 9d 9c c4 dc e6 ae 2b d6 a5 1e f7 ce 65 43 30 99 +bc 23 30 e8 0a 06 78 2c 89 a1 d3 6e d8 c6 ef 78 d7 87 f9 83 e3 46 02 c2 41 fc +ef 38 54 6a fb da 8c b4 4f 17 7d 42 59 74 d8 4f 66 18 1d b0 e1 9f f2 e2 5a b9 +37 08 1d b0 32 c3 b0 61 c4 fc ba 46 29 16 5b 9c a2 59 49 81 c9 af bb b7 8c b5 +4d 02 73 85 a9 bf d3 2d 33 53 74 c0 03 b6 ff ac 3a d4 ef 19 8d 3f + +#Public Expotent +01 00 01 + +#Exponent +52 be 3c 88 82 e2 1a 93 04 d8 e3 58 ea cf c0 d1 f7 5a 69 a0 4b c8 cf 5c ea 79 e0 +dc c5 d7 e6 db 7c 4a e3 f8 11 8c bc 34 72 f2 83 03 53 11 7b da a8 2e 8c 3f d8 dd +c6 a7 59 07 25 e7 96 1c d3 8f e0 20 66 4d 60 73 68 b5 45 31 d8 cd b5 b5 32 0f 72 +e6 6f 45 68 f1 b2 2e 7b 20 b8 ff 0c 79 90 b0 9c 97 f9 d7 2a 0e db 84 ec a5 3b 76 +d9 70 bf 26 7c 92 85 91 a4 e8 3d 61 90 ca 2e 9a 35 9b 61 13 d1 18 f2 34 49 bd 7e +fb 7a 9b 76 70 49 ac 00 f5 8b b4 c5 25 6f 54 8b a4 34 89 7b 7a 29 90 cc 16 1e 19 +0c 06 c2 13 20 32 8c 9b 41 68 f0 20 ea 67 6e f7 11 7d 3f e2 02 1f 67 fc 0c 97 72 +3b 4e 30 6c 16 86 27 e3 7a 5f 94 d5 73 0c 86 b7 0b de 60 39 c5 bf a0 19 0a 59 ed +34 e8 4d f9 8e 10 97 95 0a 1f 41 44 aa 60 9e 21 f8 25 50 a5 86 24 ce 78 de 15 4c +b6 58 83 f0 46 98 64 e3 ac 46 4a 5f 81 + +#Prime 1 +8a 00 d7 b6 c1 27 b3 df 90 56 c4 0a 62 89 48 fc 61 34 11 d9 1d d4 e9 32 1b 0d 75 +37 76 08 30 d3 73 3a 8b 5c 0c aa 14 d3 f2 6d d6 12 3b 35 a5 91 82 2f 7f 2f 2a 61 +98 43 3f 74 16 8d 9e b3 56 e8 63 c8 11 34 a3 51 0f 45 b8 ad 8b cb 09 0d 52 23 36 +0f e5 05 b0 b9 6a 10 9e 12 e7 4f fb 91 d5 ce 0b 7b 7d ae 6f 6d 88 83 f2 ab 02 4a +37 14 66 c8 00 0a 7e 24 5b 62 21 2d aa a4 79 cd d1 97 70 11 + +#Prime 2 +f1 9a 06 c5 37 17 23 ba 6a 9a 45 9c 23 ce ec 88 78 6d 87 58 c5 08 6b f7 10 cc 00 +78 8c b8 b6 4e 07 06 4c 63 66 80 72 fe 15 36 9b 1b e2 60 f8 6e 14 43 e3 25 32 84 +6e 24 11 79 b5 4b c1 a4 c9 c6 ce 78 dd d7 86 43 5b 21 75 51 d3 d7 4d 39 c3 21 b2 +86 e2 15 5d 80 b9 e9 78 6e fb c0 76 cb 7d ba e7 4f d7 c1 14 d2 51 7c 4f fd e4 3e +41 bd 8c 78 33 d9 d1 78 29 1e 15 3b e1 96 b8 17 cd 76 78 4f + +#Prime exponent 1 +01 37 0a af 28 3a 32 42 38 a2 1a ed c0 7a 56 f3 29 e3 ec 78 4d e3 ee fd aa f1 4e +63 e3 9d 24 d8 e7 bd cf 36 4b 42 40 16 b1 9e b7 f0 c7 26 ac c3 80 32 ec da bc 73 +c9 84 66 0d 9e 99 36 99 7b 9d 66 2b 7f c3 47 e0 d1 d2 9a 52 a4 d5 6f c9 f7 3c 2a +20 af b2 82 20 cf c7 3f ad 08 ee 52 57 b1 5b 34 0c ad 49 98 df 8d 01 24 64 cf 0b +5a 3a ca c0 de 07 39 9f 16 52 e1 d9 e6 13 b6 a2 d2 42 94 11 + +#Prime exponent 2 +47 c0 ff 11 c3 72 d3 e1 a1 97 7f e5 07 9d 85 12 62 f1 e4 a8 b0 9b f7 b4 c1 00 55 +83 78 07 c3 dd 18 a8 fe 36 e7 52 6e d4 97 68 48 58 d7 bb 05 0d 6c 67 5d 26 c7 02 +1d 40 7c 52 82 77 55 d2 78 67 21 f0 08 8e 99 d0 fe 27 5f 77 f5 f0 77 32 bf ec 4c +c9 e8 37 5f e8 4f 82 33 6c 58 a3 de 72 e5 00 bc de f4 be 81 95 1e 7e 07 ca f6 6c +ff ca 3e a6 99 24 c3 ac f9 ea 71 + +#CrtCoffieient: +75 5e b2 85 d4 5c 52 b4 81 83 a7 bc 43 67 f5 a2 be cb 79 8c e2 eb 15 a3 7f 54 51 +8e a3 ce 81 fe 95 07 fc 62 32 61 7a 46 76 4a b9 15 33 2b d8 9e 46 70 21 b4 31 49 +4d 2d 67 3d b7 d5 2c f4 ac 01 2c f1 01 a1 90 19 d6 77 02 c1 c3 e2 3a 74 de 30 b2 +2a d0 5a 3c a7 43 cd e5 6b ae b2 18 3d cc 99 e0 e0 5e a0 55 94 bf 39 43 12 d1 1c +a8 97 37 38 dc 29 35 66 a5 ee 78 4a 11 b6 ff 02 3a 85 9a 98 + + +#Diffie-Hellman Private Key: +#--------------------------- + +#Prime P +b9 ab da b7 b8 ba 34 ea 67 44 e6 dd c7 b1 b3 df c8 7c c6 48 26 bf 6d 17 51 a8 f5 +26 37 ef 30 04 1f 40 53 07 7a c8 46 85 8d 90 d2 6c 2f 27 53 9f 5f f9 19 e1 c3 1b +49 85 32 c2 1d d6 01 8e b3 42 cf 16 da ec 60 f0 67 9d b8 22 de 6c d4 06 4d a1 d5 +15 59 ab 24 c4 1a c2 55 75 6c 83 10 fa 40 e2 21 03 51 fc 53 ea 48 d1 ca 0f 64 3d +fe ea 06 0f 97 76 97 82 8f de a1 fc 76 fe 47 39 3f 1f 0b 05 + +#Generator G +71 ba 7a a6 52 e2 99 15 33 4a 26 11 fd 1b a5 08 36 52 3f 5e bf 63 3d eb 23 e7 f2 +3c 7e 95 a0 c5 9c 6c 82 4c e4 b2 a8 ac 0c 2b 25 67 4f 6e 65 30 13 ac 61 53 17 77 +e4 ea 43 61 c7 6e 6c 50 2b 58 1c 72 b5 1f 34 26 b0 b3 2e d8 15 8d 05 0a e4 2c 2f +8c 91 dd dd df d5 1d 35 db 8f 5b 89 02 32 97 1d a0 70 21 fb 34 ea 00 7d 90 90 a2 +66 cb 17 3f c7 42 de be 44 94 93 ca d7 f0 31 5a df 2d 79 d9 + +#Prime Q +bf 84 a3 88 0f 2f 7d fd 76 4e e2 9e af 3b 3e 74 75 3d 6b 87 + +#Private Key Value +6d 27 17 0e c9 ff b3 29 8e 12 2c 1f a7 a8 48 64 42 f2 12 b3 diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/keys.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/keys.xml new file mode 100644 index 0000000..ecaa08a --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/keys.xml @@ -0,0 +1,61 @@ + + + + my-rsa-key + + + + gj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnkFwp4y9ZnrGja/j+kpRyKvYP5 + CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7JxMG7z+hEB1LT2swTs10GILFW + PByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/AZD8Ub/kBGOSPyu6pn3OdnMTc + 5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH+YPjRgLCQfzvOFRq+9qMtE8X + fUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikWW5yiWUmBya+7t4y1TQJzham/ + 0y0zU3TAA7b/rDrU7xmNPw== + + + AQAB + + + + + + my-tripledes-key + + + yI+J1f3puYAERjIcT6vfg6RitmKX8nD0 + + + + + my-3des-key + + + yI+J1f3puYAERjIcT6vfg6RitmKX8nD0 + + + + + my-aes256-key + + + ZhZ4v3RlwTlCEOpIrHfLKVyJOBDtEJOOQDat/4xR1bA= + + + + + my-aes192-key + + + IlfuS40LvStVU0Mj8ePrrGHVhAb48y++ + + + + + my-aes128-key + + + 01+yuQ2huPS1+Qv0LH+zaQ== + + + + diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/payment.xml b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/payment.xml new file mode 100644 index 0000000..e7b50c7 --- /dev/null +++ b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/payment.xml @@ -0,0 +1,9 @@ + + + John Smith + + 4019 2445 0277 5567 + Bank of the Internet + + + \ No newline at end of file diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/rsa-priv-key.der b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/rsa-priv-key.der new file mode 100644 index 0000000..09b04d7 Binary files /dev/null and b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/rsa-priv-key.der differ diff --git a/tests/fixtures/xmlenc/01-phaos-xmlenc-3/rsa-priv-key.p12 b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/rsa-priv-key.p12 new file mode 100644 index 0000000..b5360aa Binary files /dev/null and b/tests/fixtures/xmlenc/01-phaos-xmlenc-3/rsa-priv-key.p12 differ diff --git a/tests/fixtures/xmlenc/README.md b/tests/fixtures/xmlenc/README.md index e6951f5..14d5e68 100644 --- a/tests/fixtures/xmlenc/README.md +++ b/tests/fixtures/xmlenc/README.md @@ -5,6 +5,10 @@ on network access or a local xmlsec1 checkout. They were imported from the `xmlsec_1_3_12` tag of [lsh123/xmlsec](https://github.com/lsh123/xmlsec/tree/xmlsec_1_3_12/tests). +Imported donor artifacts are kept byte-for-byte, including upstream wording +and spelling. Repository-specific clarifications belong in this wrapper rather +than in the corpus files whose provenance the tests are intended to preserve. + All private keys in this directory are public test material from that corpus. They must never be used outside tests. @@ -42,15 +46,24 @@ Decrypted XML is compared with donor plaintext after canonicalization because xmlsec1 encrypts parsed XML rather than preserving declaration and empty-tag serialization. +### `01-phaos-xmlenc-3` + +The complete independent Phaos XML Encryption corpus, including its public test +keys and templates. Five vectors are inside the crate's secure profile and must +decrypt end-to-end: AES-128/256-CBC with RSA-OAEP-SHA1 and AES-128/256 Key Wrap. +All remaining ciphertexts are exhaustively classified as fail-closed because +they use Triple-DES, RSA-PKCS#1 v1.5 encryption, AES-192, unsupported key-wrap +algorithms, Diffie-Hellman agreement, or deliberately malformed metadata. + ## Importing Vectors Point the repository helper at an xmlsec1 1.3.12 test checkout and pass paths -under the destination corpus: +under the destination corpus. A directory argument imports its complete tree: ```sh XMLSEC_DONOR_ROOT=/path/to/xmlsec/tests \ scripts/import-donor-fixtures.sh \ - xmlenc/aleksey-xmlenc-01/enc-aes128gcm-keyname.xml + xmlenc/01-phaos-xmlenc-3 ``` Every imported positive vector must be exercised through the full public diff --git a/tests/fixtures_smoke.rs b/tests/fixtures_smoke.rs index 625fb4b..1d77b43 100644 --- a/tests/fixtures_smoke.rs +++ b/tests/fixtures_smoke.rs @@ -180,7 +180,7 @@ fn fixture_file_count_matches_expected() { ("c14n", 41), ("xmldsig", 78), ("saml", 2), - ("xmlenc", 410), + ("xmlenc", 482), ]; for (corpus, expected_count) in expected { diff --git a/tests/import_donor_fixtures.rs b/tests/import_donor_fixtures.rs new file mode 100644 index 0000000..a0966bf --- /dev/null +++ b/tests/import_donor_fixtures.rs @@ -0,0 +1,289 @@ +#![cfg(unix)] + +//! Integration coverage for the donor fixture import workflow. + +use std::path::{Path, PathBuf}; +use std::process::Command; + +use std::os::unix::fs::PermissionsExt; + +/// Isolated repository-shaped directory removed after each importer test. +struct TestDirectory(PathBuf); + +impl TestDirectory { + /// Creates a process-unique temporary directory for one test scenario. + fn new() -> Self { + let path = std::env::temp_dir().join(format!( + "xml-sec-fixture-import-{}-{}", + std::process::id(), + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .expect("system clock must follow the Unix epoch") + .as_nanos() + )); + std::fs::create_dir_all(&path).expect("temporary test directory must be creatable"); + Self(path) + } + + /// Returns the temporary repository root. + fn path(&self) -> &Path { + &self.0 + } +} + +impl Drop for TestDirectory { + /// Removes every donor, fixture, and fake tool created by the scenario. + fn drop(&mut self) { + std::fs::remove_dir_all(&self.0).expect("temporary test directory must be removable"); + } +} + +/// Verifies that directory imports are snapshots rather than stale overlays. +#[test] +fn directory_import_removes_files_deleted_by_the_donor() { + // A complete-directory import is a reproducible snapshot, not an overlay: + // files removed upstream must not survive and alter corpus accounting. + let root = TestDirectory::new(); + let scripts = root.path().join("scripts"); + let donor = root.path().join("donor/corpus"); + let target = root.path().join("tests/fixtures/xmlenc/corpus"); + std::fs::create_dir_all(&scripts).expect("scripts directory must be creatable"); + std::fs::create_dir_all(&donor).expect("donor directory must be creatable"); + std::fs::create_dir_all(&target).expect("fixture directory must be creatable"); + std::fs::copy( + "scripts/import-donor-fixtures.sh", + scripts.join("import-donor-fixtures.sh"), + ) + .expect("import script must be copied into the isolated repository"); + std::fs::write(donor.join("current.xml"), "") + .expect("donor fixture must be writable"); + std::fs::write(target.join("obsolete.xml"), "") + .expect("obsolete fixture must be writable"); + + let status = Command::new("bash") + .arg(scripts.join("import-donor-fixtures.sh")) + .arg("xmlenc/corpus") + .env("XMLSEC_DONOR_ROOT", root.path().join("donor")) + .status() + .expect("fixture import script must run"); + + assert!(status.success(), "fixture import must succeed"); + assert_eq!( + std::fs::read_to_string(target.join("current.xml")) + .expect("current donor fixture must be imported"), + "" + ); + assert!( + !target.join("obsolete.xml").exists(), + "directory import must remove fixtures deleted by the donor" + ); +} + +/// Verifies that a trailing separator does not alter the imported directory layout. +#[test] +fn directory_import_normalizes_a_trailing_separator() { + // Shell callers commonly append a slash to directory arguments. The donor + // prefix still has to be stripped before each file is placed in staging. + let root = TestDirectory::new(); + let scripts = root.path().join("scripts"); + let donor = root.path().join("donor/corpus"); + let target = root.path().join("tests/fixtures/xmlenc/corpus"); + std::fs::create_dir_all(&scripts).expect("scripts directory must be creatable"); + std::fs::create_dir_all(&donor).expect("donor directory must be creatable"); + std::fs::copy( + "scripts/import-donor-fixtures.sh", + scripts.join("import-donor-fixtures.sh"), + ) + .expect("import script must be copied into the isolated repository"); + std::fs::write(donor.join("current.xml"), "") + .expect("donor fixture must be writable"); + + let status = Command::new("bash") + .arg(scripts.join("import-donor-fixtures.sh")) + .arg("xmlenc/corpus/") + .env("XMLSEC_DONOR_ROOT", root.path().join("donor")) + .status() + .expect("fixture import script must run"); + + assert!(status.success(), "fixture import must succeed"); + assert_eq!( + std::fs::read_to_string(target.join("current.xml")) + .expect("fixture must retain its donor-relative path"), + "" + ); +} + +/// Verifies that parent traversal cannot mutate an adjacent fixture tree. +#[test] +fn directory_import_rejects_paths_that_escape_the_fixture_root() { + // Directory synchronization removes its destination before copying. Reject + // traversal before that step so only repository fixture trees are mutable. + let root = TestDirectory::new(); + let scripts = root.path().join("scripts"); + let donor_escape = root.path().join("escape"); + let target_escape = root.path().join("tests/fixtures/escape"); + std::fs::create_dir_all(&scripts).expect("scripts directory must be creatable"); + std::fs::create_dir_all(&donor_escape).expect("donor directory must be creatable"); + std::fs::create_dir_all(&target_escape).expect("fixture directory must be creatable"); + std::fs::copy( + "scripts/import-donor-fixtures.sh", + scripts.join("import-donor-fixtures.sh"), + ) + .expect("import script must be copied into the isolated repository"); + std::fs::write(donor_escape.join("replacement.xml"), "") + .expect("donor fixture must be writable"); + std::fs::write(target_escape.join("sentinel.xml"), "") + .expect("sentinel fixture must be writable"); + + let status = Command::new("bash") + .arg(scripts.join("import-donor-fixtures.sh")) + .arg("xmlenc/../escape") + .env("XMLSEC_DONOR_ROOT", root.path().join("donor")) + .status() + .expect("fixture import script must run"); + + assert!(!status.success(), "path traversal must be rejected"); + assert!( + target_escape.join("sentinel.xml").exists(), + "rejected paths must not mutate files outside their corpus" + ); +} + +/// Verifies that normalized aliases cannot authorize replacing a corpus root. +#[test] +fn directory_import_rejects_fixture_root_aliases() { + // Empty and current-directory components can normalize to the corpus root; + // no user-supplied path may authorize replacing that whole directory. + for fixture_path in ["xmlenc/.", "xmlenc//", "xmlenc/./"] { + let root = TestDirectory::new(); + let scripts = root.path().join("scripts"); + let donor = root.path().join("donor"); + let target = root.path().join("tests/fixtures/xmlenc"); + std::fs::create_dir_all(&scripts).expect("scripts directory must be creatable"); + std::fs::create_dir_all(&donor).expect("donor directory must be creatable"); + std::fs::create_dir_all(&target).expect("fixture directory must be creatable"); + std::fs::copy( + "scripts/import-donor-fixtures.sh", + scripts.join("import-donor-fixtures.sh"), + ) + .expect("import script must be copied into the isolated repository"); + std::fs::write(donor.join("replacement.xml"), "") + .expect("donor fixture must be writable"); + std::fs::write(target.join("sentinel.xml"), "") + .expect("sentinel fixture must be writable"); + + let status = Command::new("bash") + .arg(scripts.join("import-donor-fixtures.sh")) + .arg(fixture_path) + .env("XMLSEC_DONOR_ROOT", &donor) + .status() + .expect("fixture import script must run"); + + assert!(!status.success(), "{fixture_path} must be rejected"); + assert!( + target.join("sentinel.xml").exists(), + "rejected alias {fixture_path} must not replace the corpus root" + ); + } +} + +/// Verifies that enumeration and copy failures preserve the last good snapshot. +#[test] +fn directory_import_failures_preserve_the_existing_snapshot() { + // Enumeration and copy failures must happen entirely in staging. The last + // known-good fixture tree remains authoritative until a full import exists. + for failing_tool in ["find", "install"] { + let root = TestDirectory::new(); + let scripts = root.path().join("scripts"); + let donor = root.path().join("donor/corpus"); + let target = root.path().join("tests/fixtures/xmlenc/corpus"); + let tools = root.path().join("tools"); + for directory in [&scripts, &donor, &target, &tools] { + std::fs::create_dir_all(directory).expect("test directory must be creatable"); + } + std::fs::copy( + "scripts/import-donor-fixtures.sh", + scripts.join("import-donor-fixtures.sh"), + ) + .expect("import script must be copied into the isolated repository"); + std::fs::write(donor.join("current.xml"), "") + .expect("donor fixture must be writable"); + std::fs::write(target.join("sentinel.xml"), "") + .expect("sentinel fixture must be writable"); + + let fake_tool = tools.join(failing_tool); + std::fs::write(&fake_tool, "#!/bin/sh\nexit 23\n").expect("failing tool must be writable"); + let mut permissions = std::fs::metadata(&fake_tool) + .expect("failing tool metadata must be readable") + .permissions(); + permissions.set_mode(0o755); + std::fs::set_permissions(&fake_tool, permissions).expect("failing tool must be executable"); + let inherited_path = std::env::var_os("PATH").expect("test process must have PATH"); + let path = std::env::join_paths( + std::iter::once(tools.clone()).chain(std::env::split_paths(&inherited_path)), + ) + .expect("test PATH must be joinable"); + + let status = Command::new("bash") + .arg(scripts.join("import-donor-fixtures.sh")) + .arg("xmlenc/corpus") + .env("XMLSEC_DONOR_ROOT", root.path().join("donor")) + .env("PATH", path) + .status() + .expect("fixture import script must run"); + + assert!(!status.success(), "{failing_tool} failure must propagate"); + assert_eq!( + std::fs::read_to_string(target.join("sentinel.xml")) + .expect("existing snapshot must survive a failed import"), + "", + "{failing_tool} failure replaced the existing snapshot" + ); + assert!( + !target.join("current.xml").exists(), + "failed import must not expose a partial replacement" + ); + } +} + +/// Verifies that an upstream directory-to-file transition removes stale children. +#[test] +fn file_import_replaces_an_existing_directory() { + // A donor path may change type between upstream revisions. Importing a + // regular file must replace the previous directory snapshot, not copy the + // file beneath that stale directory. + let root = TestDirectory::new(); + let scripts = root.path().join("scripts"); + let donor = root.path().join("donor/corpus"); + let target = root.path().join("tests/fixtures/xmlenc/corpus"); + std::fs::create_dir_all(&scripts).expect("scripts directory must be creatable"); + std::fs::create_dir_all(&target).expect("fixture directory must be creatable"); + std::fs::create_dir_all(donor.parent().expect("donor file must have a parent")) + .expect("donor parent directory must be creatable"); + std::fs::copy( + "scripts/import-donor-fixtures.sh", + scripts.join("import-donor-fixtures.sh"), + ) + .expect("import script must be copied into the isolated repository"); + std::fs::write(&donor, "current fixture").expect("donor fixture must be writable"); + std::fs::write(target.join("obsolete.xml"), "") + .expect("stale fixture must be writable"); + + let status = Command::new("bash") + .arg(scripts.join("import-donor-fixtures.sh")) + .arg("xmlenc/corpus") + .env("XMLSEC_DONOR_ROOT", root.path().join("donor")) + .status() + .expect("fixture import script must run"); + + assert!(status.success(), "file import must succeed"); + assert!(target.is_file(), "the target must become a regular file"); + assert_eq!( + std::fs::read_to_string(&target).expect("imported fixture must be readable"), + "current fixture" + ); + assert!( + !target.join("obsolete.xml").exists(), + "the previous directory contents must not survive" + ); +} diff --git a/tests/xmlenc_donor_integration.rs b/tests/xmlenc_donor_integration.rs index 47a9e7d..c441fcb 100644 --- a/tests/xmlenc_donor_integration.rs +++ b/tests/xmlenc_donor_integration.rs @@ -18,14 +18,15 @@ use rsa::{RsaPrivateKey, pkcs1::DecodeRsaPrivateKey, pkcs8::DecodePrivateKey}; use xml_sec::c14n::{C14nAlgorithm, C14nMode, canonicalize, canonicalize_xml}; use xml_sec::xmlenc::{ DecryptedContent, DocumentDecryptionOptions, KekDecryptor, PrivateKeyDecryptor, - SymmetricKeyDecryptor, XmlEncError, decrypt, decrypt_data, decrypt_document_with_options, - parse_encrypted_data, + SymmetricKeyDecryptor, XmlEncError, decrypt, decrypt_data, decrypt_document, + decrypt_document_with_options, parse_encrypted_data, }; const VECTOR_DIR: &str = "tests/fixtures/xmlenc/aleksey-xmlenc-01"; const NIST_DIR: &str = "tests/fixtures/xmlenc/nist-aesgcm"; const INTEROP_DIR: &str = "tests/fixtures/xmlenc/xmlenc11-interop-2012"; const MERLIN_DIR: &str = "tests/fixtures/xmlenc/merlin-xmlenc-five"; +const PHAOS_DIR: &str = "tests/fixtures/xmlenc/01-phaos-xmlenc-3"; const KEY_INVENTORY: &str = "tests/fixtures/keys/keys.xml"; #[test] @@ -391,3 +392,202 @@ fn wrapped_key_xml(wrapped_key: &[u8], ciphertext: &[u8]) -> String { STANDARD.encode(ciphertext) ) } + +/// Loads the Phaos RSA transport key from the tracked donor corpus. +fn read_phaos_private_key() -> RsaPrivateKey { + let der = std::fs::read(format!("{PHAOS_DIR}/rsa-priv-key.der")) + .expect("tracked Phaos RSA key must be readable"); + RsaPrivateKey::from_pkcs1_der(&der).expect("Phaos RSA key must be PKCS#1 DER") +} + +/// Canonicalizes donor XML so serialization differences do not mask semantics. +fn canonicalize_fixture_document(xml: &[u8]) -> Vec { + canonicalize_xml(xml, &C14nAlgorithm::new(C14nMode::Inclusive1_0, false)) + .expect("Phaos fixture must be canonicalizable XML") +} + +/// Decrypts one Phaos vector and compares its canonical document to donor data. +fn assert_phaos_document(name: &str, resolver: &dyn xml_sec::xmlenc::DecryptionKeyResolver) { + let encrypted = std::fs::read_to_string(format!("{PHAOS_DIR}/{name}.xml")) + .expect("tracked Phaos ciphertext must be readable"); + let expected = std::fs::read(format!("{PHAOS_DIR}/{name}.data")) + .expect("tracked Phaos plaintext must be readable"); + let decrypted = decrypt_document(&encrypted, Some("ED"), resolver) + .unwrap_or_else(|error| panic!("{name} must decrypt: {error}")); + assert_eq!( + canonicalize_fixture_document(decrypted.as_bytes()), + canonicalize_fixture_document(&expected), + "{name}" + ); +} + +/// Exercises every Phaos vector supported by the crate's secure profile. +#[test] +fn decrypts_supported_phaos_rsa_oaep_and_aes_kw_vectors() { + // These Phaos-produced documents independently exercise RSA-OAEP and both + // RFC 3394 KEK sizes through Element and Content document replacement. + let private_key = read_phaos_private_key(); + for name in [ + "enc-element-aes128-kt-rsa_oaep_sha1", + "enc-text-aes256-kt-rsa_oaep_sha1", + ] { + assert_phaos_document(name, &PrivateKeyDecryptor::new(private_key.clone())); + } + + let keys = read_aes_keys(Path::new(&format!("{PHAOS_DIR}/keys.xml"))); + for (name, key_name) in [ + ("enc-element-aes128-kw-aes128", "my-aes128-key"), + ("enc-element-aes128-kw-aes256", "my-aes256-key"), + ("enc-element-aes256-kw-aes256", "my-aes256-key"), + ] { + let kek = keys.get(key_name).expect("Phaos KEK must exist"); + assert_phaos_document(name, &KekDecryptor::new(kek.clone())); + } +} + +/// Asserts that a donor vector fails at its explicitly classified algorithm URI. +fn assert_unsupported( + name: &str, + expected_uri: &str, + resolver: &dyn xml_sec::xmlenc::DecryptionKeyResolver, +) { + let xml = std::fs::read_to_string(format!("{PHAOS_DIR}/{name}.xml")) + .expect("tracked Phaos vector must be readable"); + let result = decrypt_document(&xml, Some("ED"), resolver); + assert!( + matches!(&result, Err(XmlEncError::UnsupportedAlgorithm(uri)) if uri == expected_uri), + "{name} must reject {expected_uri}, got {result:?}" + ); +} + +/// Counts encrypted Phaos vectors while excluding key and plaintext documents. +fn phaos_vector_count() -> usize { + std::fs::read_dir(PHAOS_DIR) + .expect("Phaos fixture directory must be readable") + .map(|entry| { + entry + .expect("Phaos directory entry must be readable") + .path() + }) + .filter(|path| { + path.extension().is_some_and(|extension| extension == "xml") + && path.file_name().is_some_and(|name| { + let name = name.to_string_lossy(); + name.starts_with("enc-") || name.starts_with("bad-") + }) + }) + .count() +} + +/// Proves that every encrypted Phaos vector has an explicit support classification. +#[test] +fn classifies_complete_phaos_decryption_corpus() { + // Every Phaos ciphertext is classified. Legacy algorithms remain visible + // interoperability boundaries rather than being silently skipped or enabled. + const TRIPLEDES: &str = "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"; + const AES192: &str = "http://www.w3.org/2001/04/xmlenc#aes192-cbc"; + const KW_TRIPLEDES: &str = "http://www.w3.org/2001/04/xmlenc#kw-tripledes"; + const KW_AES192: &str = "http://www.w3.org/2001/04/xmlenc#kw-aes192"; + const RSA_1_5: &str = "http://www.w3.org/2001/04/xmlenc#rsa-1_5"; + const DH: &str = "http://www.w3.org/2001/04/xmlenc#dh"; + + let direct = SymmetricKeyDecryptor::new([0_u8; 16]); + let mut classified = 5; + for name in [ + "enc-content-3des-kw-aes192", + "enc-element-3des-kt-rsa1_5", + "enc-element-3des-kt-rsa_oaep_sha1", + "enc-element-3des-kt-rsa_oaep_sha256", + "enc-element-3des-kt-rsa_oaep_sha512", + "enc-element-3des-kw-3des", + "enc-text-3des-kw-aes256", + ] { + assert_unsupported(name, TRIPLEDES, &direct); + classified += 1; + } + for name in [ + "enc-content-aes192-kw-aes256", + "enc-element-aes192-kt-rsa_oaep_sha1", + "enc-element-aes192-kw-aes192", + "enc-text-aes192-kt-rsa1_5", + ] { + assert_unsupported(name, AES192, &direct); + classified += 1; + } + + let kek = KekDecryptor::new([0_u8; 32]); + for name in [ + "bad-alg-enc-element-aes128-kw-3des", + "enc-content-aes128-kw-3des", + ] { + assert_unsupported(name, KW_TRIPLEDES, &kek); + classified += 1; + } + assert_unsupported("enc-text-aes128-kw-aes192", KW_AES192, &kek); + classified += 1; + + let private_key = PrivateKeyDecryptor::new(read_phaos_private_key()); + for name in [ + "enc-content-aes256-kt-rsa1_5", + "enc-element-aes128-kt-rsa1_5", + ] { + assert_unsupported(name, RSA_1_5, &private_key); + classified += 1; + } + for name in [ + "enc-element-3des-ka-dh", + "enc-element-aes128-ka-dh", + "enc-element-aes192-ka-dh", + "enc-element-aes256-ka-dh", + ] { + assert_unsupported(name, DH, &direct); + classified += 1; + } + + assert_eq!(classified, 25); + assert_eq!(classified, phaos_vector_count()); +} + +/// Verifies recipient-key mismatch and AES-KW integrity failure paths. +#[test] +fn rejects_phaos_wrong_rsa_key_and_tampered_wrapped_key() { + // Independent negative paths prove OAEP does not accept another recipient's + // key and RFC 3394 integrity is checked before donor content decryption. + let rsa_xml = std::fs::read_to_string(format!( + "{PHAOS_DIR}/enc-element-aes128-kt-rsa_oaep_sha1.xml" + )) + .expect("tracked Phaos RSA vector must be readable"); + let wrong_pem = std::fs::read_to_string("tests/fixtures/keys/rsa/rsa-2048-key.pem") + .expect("tracked unrelated RSA key must be readable"); + let wrong_key = RsaPrivateKey::from_pkcs8_pem(&wrong_pem) + .expect("tracked unrelated RSA key must be PKCS#8 PEM"); + let wrong_key_result = + decrypt_document(&rsa_xml, Some("ED"), &PrivateKeyDecryptor::new(wrong_key)); + assert!( + matches!(&wrong_key_result, Err(XmlEncError::Rsa(_))), + "wrong RSA key must fail OAEP decryption, got {wrong_key_result:?}" + ); + + let mut wrapped_xml = std::fs::read(format!("{PHAOS_DIR}/enc-element-aes128-kw-aes128.xml")) + .expect("tracked Phaos AES-KW vector must be readable"); + let marker = b""; + let start = wrapped_xml + .windows(marker.len()) + .position(|window| window == marker) + .expect("Phaos EncryptedKey must contain CipherValue") + + marker.len(); + let encoded = wrapped_xml[start..] + .iter_mut() + .find(|byte| !byte.is_ascii_whitespace()) + .expect("wrapped key must contain base64 data"); + *encoded = if *encoded == b'A' { b'B' } else { b'A' }; + let wrapped_xml = String::from_utf8(wrapped_xml).expect("Phaos XML must remain UTF-8"); + let keys = read_aes_keys(Path::new(&format!("{PHAOS_DIR}/keys.xml"))); + let kek = keys + .get("my-aes128-key") + .expect("Phaos AES-128 KEK must exist"); + assert!(matches!( + decrypt_document(&wrapped_xml, Some("ED"), &KekDecryptor::new(kek.clone())), + Err(XmlEncError::KeyWrapIntegrity) + )); +}