Skip to content
This is a function implementation SecureZeroMemory in D programming language
D
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/zero_memory add secureZeroMemory with parameter type void[] Aug 9, 2019
.gitignore init Aug 4, 2019
.travis.yml init Aug 4, 2019
LICENSE init Aug 4, 2019
README.md
dub.sdl init Aug 4, 2019

README.md

Dub Build Status License

D Zero Memory

This is a function implementation SecureZeroMemory in D programming language.

Fills a block of memory with zeros. SecureZeroMemory is designed to be a more secure version of zero memory function.

Use this function instead of zero memory function when you want to ensure that your data will be overwritten promptly, as some compilers can optimize a call to zero memory function by removing it entirely.

Install

$ dub add zero_memory

Usage example

import zero_memory;

ubyte[] ar  = [0, 0, 0, 0, 0];
ubyte[] ar2 = [1, 2, 3, 4, 5];

secureZeroMemory(ar2.ptr, ar2.length);
assert(ar == ar2);


uint[] i  = [0, 0, 0,  0, 0 ];
uint[] i2 = [8, 5, 99, 5, 99];
// !!! function secureZeroMemory processes data by byte. Therefore, it is wrong:
secureZeroMemory(i2.ptr, i2.length);
assert(i != i2);
// Need to calculate the length:
secureZeroMemory(i2.ptr, uint.sizeof * i2.length);
assert(i == i2);

// or use a cast to type void[]
i2 = [8, 5, 99, 5, 99];
secureZeroMemory(cast(void[])i2);
assert(i == i2);

License

MIT License

You can’t perform that action at this time.