Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix encryption for @xmldom/xmldom 0.8.6 upgrade #511

Merged
merged 3 commits into from Feb 26, 2023

Commits on Feb 14, 2023

  1. fix: encryption for @xmldom/xmldom 0.8.6

    `@xmldom/xmldom` 0.8.6 included: fix: Properly check nodes before replacement.
    xmldom/xmldom#457
    
    Which caused the `.replaceChild` calls in `encryptAssertion` and `decryptAssertion` to error with:
    > "Not found: child not in parent"
    
    The root cause is a subtle difference in `@xmldom/xmldom` `Document` vs `Element` instances.
    The previous code was asking xmldom to replace an element from a top-level Document with another top-level Document. The patch to xmldom 0.8.6 started the enforcement of `.replaceChild` being passed `Nodes` who share a common parent Node.
    
    e.g. in the case of `encryptAssertion`: `doc.replaceChild(encryptAssertionNode, rawAssertionNode)`.
    It's important to distinguish that neither `doc` nor `encryptAssertionNode` are `Element` nodes, but instead `Document` Nodes. Meaning `doc` does _not_ refer to the `<samlp:Response>` node, but instead a meta object one level up. To reference the Response tag, you instead use the `Document#documentElement` attribute.
    Changing that line to the following as the same intended affect using the correct node references.
    `doc.documentElement.replaceChild(encryptAssertionNode.documentElement, rawAssertionNode)`
    I renamed a few of the variables in an attempt to clarify which are `Documents`.
    
    Also fixes an issue where the `ERR_NO_ASSERTION` and `ERR_UNDEFINED_ENCRYPTED_ASSERTION` errors were not being thrown if exactly zero nodes were found.
    
    fixes: tngan#495
    mastermatt committed Feb 14, 2023
    Configuration menu
    Copy the full SHA
    f04359d View commit details
    Browse the repository at this point in the history
  2. fix test: remove sessionIndex from failing logout request tests

    Seems to have been accidentally added in tngan#501,
    these never worked because `sessionIndex` is not part of the default logout request template,
    so whether the extractor works or not, the creation of the request will not include the value.
    
    And with this, the test suite passes again!
    mastermatt committed Feb 14, 2023
    Configuration menu
    Copy the full SHA
    5c78b94 View commit details
    Browse the repository at this point in the history

Commits on Feb 15, 2023

  1. review feedback tweaks

    mastermatt committed Feb 15, 2023
    Configuration menu
    Copy the full SHA
    ab696df View commit details
    Browse the repository at this point in the history