Commit Graph

9 Commits

Author SHA1 Message Date
Frank Denis
473e1718cc Add sodium_{malloc,allocarray,free}() and sodium_mprotect_*()
ptr = sodium_malloc(size) returns a pointer from which exactly "size" bytes
can be accessed.

ptr = sodium_allocarray(count, size) allocates enough storage space for
"count" pointers or scalars of unit size "size".

In both cases, the region is immediately followed by a guard page.
As a result, any attempt to access a memory location after ptr[size - 1] will
immediately trigger a segmentation fault.

The allocated region is mlock()ed and filled with 0xd0 bytes.

A read-only page with the size, a guard page, as well as a canary are
placed before the returned pointer.

The canary is checked by sodium_free(); as a result, altering data right
before ptr is likely to cause sodium_free() to kill the process.

sodium_free() munlock()s the region and fills it with zeros before
actually calling free().

sodium_mprotect_noaccess(), sodium_mprotect_readonly() and
sodium_mprotect_readwrite() can be used to change the protection on the set
of allocated pages.

Reverting the protection to read+write is not required before calling
sodium_free().
2014-08-14 21:41:05 -07:00
Frank Denis
eae4add8de Implement ed25519 -> curve25519 keys conversion 2014-08-05 13:32:25 -07:00
evoskuil
a7f810fad1 Remove test files from new VS test projects. 2014-07-03 14:30:57 -06:00
evoskuil
4c2d0242fe Simplify VS project configurations and harden MSBUILD script. 2014-05-12 20:18:22 -07:00
evoskuil
0e94fbb766 Modify VS props config for easy variation of output locations and messages. 2014-05-10 19:30:10 -07:00
evoskuil
63a7e26499 Update Visual Studio projects and packaging. 2014-05-10 03:47:35 -07:00
evoskuil
4b082ced94 Share VS props files and increment package version. 2014-04-25 02:49:19 -07:00
evoskuil
0f9aec94b6 Set VS2010 and VS2012 project files tools version to 4.0. 2014-04-14 17:55:24 -07:00
evoskuil
37baa8a6ab Update VS build, add VS2012 and VS2013 projects. 2014-04-09 03:26:45 -07:00