I’m trying to replicate a call to a remote REST API that uses hmac encoding to construct an authentication string.  I’m working from existing Python code that does the same thing.

 

What I’m seeing is that the crypto:hmac() function can return Base64 strings that include characters that must be escaped in URIs, i.e.:

 

mTA76dRZkiCf84WUKM/PWySydamj3dMZ6Tm26s9QGNI

 

(Note the “/”)

 

Python’s base64 support includes the method urlsafe_b64encode(), which avoids the characters “+” and “/”.

 

Unfortunately the handler of the API call fails if I escape the “/” or “+”—I’m not sure why.

 

So I need to construct the same URI-friendly base64 string that the Python method is generating.

 

I don’t see an obvious way to do this with the BaseX conversion package.

 

Is there a way short of implementing my own Base64 encoding algorithm to get a URI-friendly base64 string?

 

I’m using  9.6.4 at the moment but could upgrade if necessary.

 

Thanks,

 

E.

_____________________________________________

Eliot Kimber

Sr Staff Content Engineer

O: 512 554 9368

M: 512 554 9368

servicenow.com

LinkedIn | Twitter | YouTube | Facebook