On Wed, 2016-04-20 at 13:51 +0100, Andrea Giammarchi wrote:
FYI actually I got it working via https://developer.gnome.org/glib/2. 48/glib-Data-HMACs.html#g-compute-hmac-for-string ``` GLib.compute_hmac_for_string( ChecksumType.SHA1, secret, str, str.length ); ```
This is slightly incorrect: it should be GLib.compute_hmac_for_string( ChecksumType.SHA1, secret, str, -1); The reason is that length should be in bytes but str.length is in UTF- 16 units. -1 means that str is nul-terminated (which it will be after UTF16-to-UTF8 conversion) As for g_compute_hmac_for_data(), indeed there seems to be an annotation problem: argument data should be marked (array length=length). Right now for some reason it's inferred as guint8 (ie, the pointer is lost), which is very wrong. Care to file a bug for glib? Cheers, Giovanni
Yet I think the data version should not fail with a core dumped. Best Regards On Wed, Apr 20, 2016 at 1:25 PM, Andrea Giammarchi <andrea.giammarchi @gmail.com> wrote:Thanks Alan, I've tried them "all" but nothing seems to work: ```js const GLib = imports.gi.GLib; // this works // https://developer.gnome.org/glib/2.48/glib-Data-Checksums.html#g -compute-checksum-for-data GLib.compute_checksum_for_data( GLib.ChecksumType.SHA1, 'the string', 'the string'.length ); // this doesn't // https://developer.gnome.org/glib/2.48/glib-Data-HMACs.html#g-com pute-hmac-for-data GLib.compute_hmac_for_data( GLib.ChecksumType.SHA1, 'secret', 'secret'.length, 'the string', 'the string'.length ); ``` If I try to create `utf8` strings I have got: ``` Error: Unsupported type gint64 for (out caller-allocates) ``` so `GLib.utf16_to_utf8` is not usable here. Should I file a bug? Best Regards On Wed, Apr 20, 2016 at 4:45 AM, Alan Knowles <alan roojs com> wrote:Andrea, probably worth trying this. Syntax: GLib.compute_hmac_for_string (ChecksumType digest_type, String key, guint64 key_len, String str, gint64 length) : String var out = GLib.compute_hmac_for_string ( GLib.Checksum.SHA1, 'secret', 'secret'.length, 'the string', 'the string'.length ) The doc's indicate that the last arg can be -1 if a \0 terminated string is passed - I can't remember if that occurs by default though. Otherwise it might be worth messing around with the gir file and changing the key into a utf8 string, rather than an array of chars Regards Alan On Tuesday, April 19, 2016 05:19 PM, Andrea Giammarchi wrote:Hello there, I wonder if I'm doing it wrong or if there's actually a bug in either GJS or the GLib I'm using. While it's straight forward to `new GLib.Checksum(GLib.Checksum.SHA1);` and then use `.update(data)` and `.get_string()`, it's basically impossible to do the same with `GLib.Hmac`. This is not exposed as constructor, so any attempt to `new GLib.Hmac` would fail, and on top of that, any attempt to use `GLib.compute_hmac_for_data` fails. Example: ```js GLib.compute_hmac_for_data( GLib.Checksum.SHA1, 'secret', 'secret'.length, 'generic data content', GLib.checksum_type_get_length(GLib.Checksum.SHA1) ); ``` I'm not sure there's something wrong in my invoke but I keep having this kind of error, no matter how I shuffle those parameters (well, actually in some case I also have Segmentation fault (core dumped)) ``` (gjs:7105): GLib-CRITICAL **: g_compute_hmac_for_data: assertion 'length == 0 || data != NULL' failed null ``` Thanks in advance for any sort of outcome. Best Regards _______________________________________________ javascript-list mailing list javascript-list gnome org https://mail.gnome.org/mailman/listinfo/javascript-list_______________________________________________ javascript-list mailing list javascript-list gnome org https://mail.gnome.org/mailman/listinfo/javascript-list_______________________________________________ javascript-list mailing list javascript-list gnome org https://mail.gnome.org/mailman/listinfo/javascript-list
Attachment:
signature.asc
Description: This is a digitally signed message part