jedisct1 / libsodium

A modern, portable, easy to use crypto library.
https://libsodium.org
Other
12.19k stars 1.74k forks source link

"unsigned long long" is not working with old software #950

Closed fergussoftware closed 4 years ago

fergussoftware commented 4 years ago

Dear teammates, I am from old school and trying to integrate "libsodium" with old 32bit software. Unfortunately, "unsigned long long" is failing because old pure 32bit software has not recognization about int64 or "long long". When I am replacing "long long" with "long" at mass scale in the complete source directory and considering 32bit limitation, all starts as expected. Is there any best way to achieve this without a tempering source code? Should we consider support to 32bit based integers in this project? Please share your thoughts. thanks Devang

jedisct1 commented 4 years ago

Sorry, 64 bit integers are mandatory. You can't just replace then with 32 bit integers and expect the same results.

Even on 32 bit systems, long long is required by the C99 standard, that was adopted 20 years ago.

fergussoftware commented 4 years ago

Dear Frank and team, thanks a lot for sharing good inputs, but what about a software that is older than 20 years. I am talking about PROGRESS 9.1e which obviously marked an end of life in 2015 but still, there are a lot of users using it. I am trying to build a bridge library between PROGRESS 9.1e and libsodium. When I replaced "long long" with "long" it started working fine for me. Obviously not all results I have tested, I only tested Sha256. In Progress 9.1e, the highest int value supported is 4294967296. (232) or 4-byte integer. But here with libsodium we need 8-byte integer. That crashing integration. If you can help with this issue or show me some way to deal with it. thanks Devang

On Tue, Apr 28, 2020 at 11:51 AM Frank Denis notifications@github.com wrote:

Closed #950 https://github.com/jedisct1/libsodium/issues/950.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/jedisct1/libsodium/issues/950#event-3278753352, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5MUJVGH3MNPCLFCRPMHN3ROZYXBANCNFSM4MSO36FQ .

-- Devang Modi (91-09909033475, 91-09377012569)

jedisct1 commented 4 years ago

I have absolutely no clue about what "PROGRESS 9.1e" is. But if you are writing bindings for some programming language that only supports 32-bit integers, maybe you can do something similar to what is being done for Javascript (even though JS has 64 bit integers now): encode 64-bit integers as two 32-bit integers.