Skip to content

[ENHANCEMENT]: Signature compliant to http://www.w3.org/2007/05/xmldsig-more#sha256-rsa-MGF1 #328

Closed

Description

@rahxam

Is your feature request related to a problem? Please describe...

I am trying to connect to a SAML IDP which expects a http://www.w3.org/2007/05/xmldsig-more#sha256-rsa-MGF1 Signature as described in rfc6931 RSASSA-PSS without Parameters.

Unfortunately, I am a bit stuck on how to implement it.

Describe teh solution you'd like...

I would like to have a new option to use http://www.w3.org/2007/05/xmldsig-more#sha256-rsa-MGF1 signatures.

Describe the alternatives you've considered...

I tried to use https://github.com/digitalbazaar/forge to calculate the signature, but did not have any success.

Activity

  1. added
    enhancementAdds a feature, option or export without breaking existing callers
    on Jul 2, 2023
  2. cjbarth commented on Jul 6, 2023

    @cjbarth
    Contributor

    The first step would be to see if NodeJS supports this. If so, then you can easily put up a PR that mimics the existing methods for doing this. If not, you'll have to figure that out yourself and create a function to do it by hand.

  3. added and removed
    enhancementAdds a feature, option or export without breaking existing callers
    on Jul 6, 2023
  4. rahxam commented on Jul 10, 2023

    @rahxam
    Author

    I was able to implement it with https://www.npmjs.com/package/node-forge#rsa, but I guess the dependency is a bit overkill for xml-crypto.

  5. cjbarth commented on Jul 11, 2023

    @cjbarth
    Contributor

    In that case you might just use the plugable nature of this library to add such support yourself. There should be information in the README on that.

  6. rahxam commented on Jul 11, 2023

    @rahxam
    Author

    Hey,
    Yes, I actually did, but I am using passport-saml and I needed to fork node-saml and xml-encryption as well to use the algorithm in xml-crypto and get everything running, which is lot's of forks for 10 lines of code.

  7. cjbarth commented on Jul 11, 2023

    @cjbarth
    Contributor

    If you'd like to add support for custom signing methods to node-saml, I'd be happy to look at that. This way you could just pass your function through node-saml to xml-crypto.

  8. cornzz commented on Dec 10, 2024

    @cornzz
    Contributor

    Hi @cjbarth, any info on whether this is planned?
    I have posted on the discussions board about this, our IDP (BundID) is switching to sha256-rsa-MGF1 next year and we would optimally like to keep using node-saml for our auth process. Maybe I can help?

  9. cjbarth commented on Dec 10, 2024

    @cjbarth
    Contributor

    @cornzz , I've been a little busy lately, but I always try to do a big release of all the updates and new features to coincide with the NodeJS release schedule. So, in the coming months we'll be doing that. I'm not writing much code for this anymore. The only bit of code that I'm thinking I might get to is #464. Other than that, I'll review code and consult on development, but I depend on others to write it. If you and @rahxam would like to put up a PR, I'll gladly look at it and get your changes merged in so that you don't have to use a fork.

  10. cornzz commented on Feb 13, 2025

    @cornzz
    Contributor

    Hi @cjbarth, I'm looking into integrating support for sha256-rsa-MGF1 in node-saml and I am confused as to what needs to be changed. For one, I understand that https://github.com/node-saml/xml-crypto/blob/master/src/signature-algorithms.ts and https://github.com/node-saml/xml-crypto/blob/master/src/types.ts need to be updated as these are used for the actual creation of the SAML payloads. But what about https://github.com/node-saml/node-saml/blob/master/src/algorithms.ts? It seems these are used in getAuthorizeUrlAsync(), getLogoutUrlAsync() and getLogoutResponseUrlAsync(), however I don't see where these functions are used? Are they obsolete? Or should both libraries be updated?

  11. cornzz commented on Feb 13, 2025

    @cornzz
    Contributor

    @cjbarth I assume both libraries have to be updated, I opened PRs in both repos #488 node-saml/node-saml#387
    The signer itself does not change, merely the additional parameters padding and saltLength have to be provided to crypto.sign(): https://nodejs.org/docs/latest-v18.x/api/crypto.html#signsignprivatekey-outputencoding
    Let me know if this seems about right to you.

  12. cjbarth commented on Oct 17, 2025

    @cjbarth
    Contributor

    This has been resolved by #488 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions