Go to file
Tony Arcieri 08a11d1a05 crypto_scalarmult_raw()
This provides a more direct interface to the crypto_scalarmult function.
By default, this function includes some bit-twiddling, which, to the
best of my understanding, ensures the integer provided as the left
operand of the multiplication operation fits within a specific limit.
(I believe this limit is the order of NaCl's standard group element,
but am not entirely certain). This change allows a user to pass in
an integer which is not subject to this bit-twiddling and can be passed
in wholesale.

The reason NaCl provides this API is to intentionally make it
easy-to-use for the purposes of computing public keys from private keys
or for performing Diffie-Hellman. The API it provides now makes it
quite difficult to do anything wrong yet still get a correct answer.

If we split this function in half, however, we can expose some
power-user functionality. Specifically I need this to implement
semiprivate keys:

https://gist.github.com/tarcieri/4760215

I've been double checking my implementation against a similar version in
SAGE for the past week or so trying to figure out what's wrong, and
today it was pointed out to me that NaCl's scalar multiplication
function automatically performs bit-twiddling for you.

I would love to continue to experiment with semiprivate keys on top of
NaCl. I have no serious intentions of actually using them as part of a
cryptosystem until there's some sort of proof of their security, or at
the very least, some reasonably educated guesses as to its security
properties.

That said, I would love to have this API. If there's worries about
exposing power-user APIs like this, perhaps we can be a bit more
"shouty" in the API name?

crypto_scalarmult_dangerously_direct_access() ? ;)
2013-02-21 20:59:57 -08:00
dist-build Back to a stable Xcode version. 2013-02-08 01:25:55 -08:00
m4 No need for ax_pthread 2013-01-21 20:37:53 -08:00
src crypto_scalarmult_raw() 2013-02-21 20:59:57 -08:00
test Reintroduce shorthash, this time with the key... 2013-02-13 21:14:29 +08:00
.gitignore Add version.h to .gitignore 2013-02-18 15:29:21 -08:00
AUTHORS add AUTHORS file from designers/implementors files 2013-01-21 23:25:51 -02:00
autogen.sh Don't run autoheader 2013-01-21 18:52:51 -08:00
ChangeLog Fantastic ChangeLog 2013-01-21 19:58:38 -08:00
configure.ac CurveCP is optional 2013-02-18 15:28:43 -08:00
COPYING Add license file & THANKS file 2013-01-21 19:55:24 -08:00
logo.png Logo 2013-01-30 23:18:39 -08:00
Makefile.am Add license file & THANKS file 2013-01-21 19:55:24 -08:00
NEWS Fantastic ChangeLog 2013-01-21 19:58:38 -08:00
README Import libnacl from dnscrypt-proxy 2013-01-19 16:02:02 -08:00
README.markdown CurveCP is optional 2013-02-18 15:28:43 -08:00
THANKS Add license file & THANKS file 2013-01-21 19:55:24 -08:00

See README.markdown