-
-
Notifications
You must be signed in to change notification settings - Fork 397
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
Call SHA-1 with BYTES input. #26
Comments
Hmm, I suspect you're sending real bytes instead of my pseudo-byte string. Do you know what JavaScript type "mybytes" actually is? I can add some detection logic to routine to try to handle this. |
Closing this since more information has been needed for over 3 months. Feel free to reopen if you run into the issue again. |
Hi @Caligatio ! Please, check this plunker first. When you say BYTES, are you saying javascript binary object (ArrayBuffer or Blob)? Is it possible to pass a raw bytes object to the library without converting it to a string before? Thanks in advance! |
Ok, so TEXT vs BYTES: TEXT operates on the underlying string as a Unicode value and unfortunately has to do complicated bitwise operations stuff for it to work correctly (see str2binb). BYTES, on the other hand, treats each string character as a raw byte and doesn't do any bitwise operations. If the string passed as "TEXT" is an ASCII string, they'll operate the same. I started this library quite a few years ago back in the IE7 days when ArrayBuffers weren't a thing. I'm somewhat hesitant to start adding browser version dependent things because that seems like a slippery slope to everything I hate about JavaScript. It looks like ArrayBuffer requires IE10 or later and Blob isn't supported on mobile :( |
Ok, I'm not sure I fully understood your answer, but the difference lies in the fact that using TEXT, it converts the values using str2binb. However using BYTES the bitwise operations are unnecessary since each character is a raw byte. I think that 'BYTES' for that case is a little bit confusing for people like @lazydino and me. In my implementation I wish to be able to use an array of bytes, I understand you wish to maintain browser compatibility, but I believe a real binary read is necessary. |
Check out #43 and let me know if that branch works for you. |
Hi,
Does the package support raw bytes input for SHA-1? This is what I did:
// mybytes is a initialized byte array
var shaObj = new jsSHA(mybytes, "BYTES");
// create the HMAC by using password string as key
var authenticator = shaObj.getHMAC(password, "TEXT", "SHA-1", "BYTES");
Chrome browser says " c.charCodeAt is not a function " upon creation of shaObj on new jsSHA()?
Isn't v1.6 supporting bytes for input and output? Since my inputs are coming from websockets as raw bytes, and the program would need to send the authenticator as also raw bytes array on the wire. It would be less hassle for me to just deal with data in byte array.
Thanks.
The text was updated successfully, but these errors were encountered: