ns_md - Returns a string containing a message digest (MD)
These functions return a message digest (MD) for a message using the specified message digest algorithm. The MD code can be used to check the integrity of a piece of data (whether the data was altered) by computing a cryptographic checksum.
The provided commands provide a one-step interface and an incremental interface, where the latter one can be used to incrementally compute a message digest e.g. by reading data from a file. This is especially important for computing message digest on content which is too large to be kept in memory.
The listed commands are available in installations when NaviServer is compiled with OpenSSL support and where the NSF package is installed. The command ns_md is a generalization of ns_md5 and ns_sha1 since it provides a much larger set of cryptogrphic algorithms, output formats and provides the incremental interface.
Returns the message digest from the provided string message.
Returns the message digest from the provided file filename and the optional provided additional filenames in args. The files are read incrementally to keep storage requirements for large files low. The resulting message digest is calculated cumulatively.
Creates and returns a new MD object for incremental operations. The option -digest defaults to sha256.
Adds data incrementally to the MD object, which was created previously with ns_md new.
Returns the current digest value from the MD object, to which data was added previously with the method add.
Deletes the MD object (used for incremental operations).
% ns_md string -digest sha256 "what do ya want for nothing?" b381e7fec653fc3ab9b178272366b8ac87fed8d31cb25ed1d0e1f3318644c89c
While the command ns_md provides a high-level, object oriented interface mostly based on the MD objects, the lower level implementation provides more options for certain specialized operations.
Example for signing and signature verification based on ::ns_crypto::md string:
% set sig [::ns_crypto::md string -digest sha1 -encoding binary -sign $path/myprivate.pem "abcdefghijklmnopqrstuxvwxyz\n"] % ::ns_crypto::md string -digest sha1 -encoding binary -verify $path/mypublic.pem -signature $sig "abcdefghijklmnopqrstuxvwxyz\n" 1