Correction: private_key and string_to_sign are both const char *
Paul On Dec 18, 10:34 am, Paul Crown <[email protected]> wrote: > Greetings, > > Thanks Da Co. > > FINAL Solution: > > The php code used by many online API's to sign a data request in which > the signature is hashed with HMAC_SHA256 and base64-encoded is > reproduced via the Crypto++ library as follows: > > phpcode: > $signature = base64_encode(hash_hmac("sha256", $string_to_sign, > $private_key, True)); > > c++: > // private_key and string_to_sign are std::string; private_key_len > and string_to_sign_len are int; > // hmac with sha256 > CryptoPP::SHA256 hash; > int dwLen = hash.DIGESTSIZE; > unsigned char hmac[ dwLen ]; > memset( hmac, 0x00, dwLen ); > CryptoPP::HMAC<CryptoPP::SHA256>((byte*)private_key, > private_key_len).CalculateDigest(hmac, (byte*)string_to_sign, > string_to_sign_len); > // base64 > CryptoPP::Base64Encoder baseEncoder; > baseEncoder.Put(hmac,dwLen); > baseEncoder.MessageEnd(); > baseEncoder.Get(hmac,dwLen*2); > // to string > stringstream s; > s << hmac; > std::string string_encoded = s.str(); > > Hindsight, makes it look very straightforward. Wrapping my mind > around what was to be accomplished was the difficult part. > > Paul -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com.
