RSA Encryption and Hash Used

While experimenting to solve my issue posted here, Kem Tekinay recollected that Xojo only used SHA-1 for the hash used as part of the crypto RSA functions.

While making modifications and testing to try getting a little farther in fixing my issue, I changed my Go client’s rsa.EncryptOAEP() to use a sha1.New() instead of sha512.New(), and part of the message was finally getting decrypted on the Xojo app when it decrypted the received stream of []bytes!

Question is, does anyone know if the situation with Xojo is what Kem speculated, that it’s only able to use SHA-1? I’m not sure how much this affects the security of the encrypted traffic.

It’s something that should be improved, so file a feature request. The trouble is fitting it in. Xojo can just flip a switch as our existing encryption would break. So they’d probably need to add a parameter that defaulted to SHA1, which wouldn’t be great since that implies it is the best. Or they could deprecate their current methods in favor of ones with more options, but that’s also not great. Maybe a new method that accepts a class with various options on it would be a good alternative.

The point is this can’t be improved without adding some level of complexity so that existing code doesn’t break.

See:

<https://xojo.com/issue/59479>