Hi Nathan I just wanted to send you a personal message to thank you. Changing SHA256_Update (and SHA256_Final) does the trick and things work. The only problem is that this is not elegant, and I don't want to release it like this.
I don't know Ben, and I don't know if he will be mad if I email him and ask him for help. If you think he will be happy, can you please give me his email address? Thanks so much again. Barry On Tue, Dec 11, 2012 at 7:31 PM, Nathan Rajlich <[email protected]>wrote: > Hey there Barry, > > > The problem comes in when I try incorporate the scrypt into a Node addon. > > Note that scrypt is a C library. Whenever I call the scrypt function, it > > always results in a segmentation fault. I traced the error to the > function > > `SHA256_Update`. It is defined by the scrypt author, yet it is not being > > called. I guess it is being linked to another `SHA256_Update` function, > and > > hence the `SHA256_Update` that the author wrote is not being called. > > So it *does* look like that function gets exported in the node > executable. I'm assuming this comes from OpenSSL, which gets > statically linked to the binary: > > $ nm `which node` | grep SHA256_Update > 00000001000df69f T _SHA256_Update > > > I have heard about node_g, yet I can't find any source to obtain it. > Please > > can someone tell me where to get it? > > You must compile a "debug" build of node: > > $ configure --debug && make > > After that it will be in the root of the node source code directory. > > > Scrypt is authored in C, so should I create a `static_library` in gyp, or > > should I compile it together with my main addon file. > > Personally, I'd recommend writing a dedicated gyp file for the scrypt > library (so using "static_library"). I wrote a blog article detailing > how to do this: http://n8.io/converting-a-c-library-to-gyp/ > > > I am forced to wrap my header file for scrypt in `extern "c"` for > correctly > > linking. This is correct, isn't it? > > Not *totally* positive but I believe this is correct. Ben or someone > else can probably clarify. > > > How can I ensure that the correct `SHA256_Update` is executed. And if > this > > is not being executed, what is? > > So this is kinda the tough problem right? Since you have control over > the scrypt code at this point, you could rename that particular > function since it seems to be incompatible with the SHA256_Update in > the node binary. Again, one of the more experienced C guys can > probably come up with a better solution for that particular problem. > > Cheers! > > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
