ns_hmac - Returns a string containing a keyed-hash message authentication code (HMAC)
These functions return a keyed-hash message authentication code (HMAC) for the specified key and message, using the specified message digest algorithm. An HMAC is a message authentication code of a key (secret) with a message. It may be used to simultaneously verify both the data integrity and the authentication of a message. For details of HMAC, consult RFC 4231.
The provided commands provide a one-step interface and an incremental interface, where the latter one can be used to incrementally compute a HMAC e.g. by reading data from a file. This is especially important for computing a HMAC 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.
Returns the HMAC based on the provided secret key and the string message.
Returns the HMAC from the provided secret key, the 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 HMAC is calculated cumulatively.
Creates and returns a new HMAC object for incremental operations. The option -digest defaults to "sha256" the option -key has to be always specified.
Adds data incrementally to the HMAC object, which was created previously with ns_hmac new.
Returns the current HMAC value from the HMAC object, to which data was added previously with the method add.
Deletes the HMAC object (used for incremental operations).
nscp 2> ns_hmac string -digest sha256 "Jefe" "what do ya want for nothing?" 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
While the command ns_hmac 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 an HMAC based on sha384 with key Jefe:
% ns_crypto::hmac string -digest sha384 "Jefe" "what do ya want for nothing?" af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649