を使用CryptImportKey
して、Windows 暗号化サービス プロバイダーにキーを取得できます。次に、 MSDN の例の HMACコードに従います。キーを CSP に入れる秘訣はBLOBHEADER
、 a DWORD
、長さの a 、およびキーの char[] の 3 つを保持する構造体を作成することです。生のキーデータがあると仮定すると、次のようになります。
struct KeyData
{
BLOBHEADER hdr;
unsigned long keyLength;
unsigned char key[128];
};
void ComputeHash()
{
HCRYPTPROV cryptoProvider = 0;
HCRYPTKEY cryptKey = 0;
KeyData kd;
kd.hdr.aiKeyAlg = CALG_RC2;
kd.hdr.bType = PLAINTEXTKEYBLOB;
kd.hdr.bVersion = CUR_BLOB_VERSION;
kd.hdr.reserved = 0;
kd.keyLength = 128;
/* set your key data here */
/* get a crypto provider - See the microsoft references
This example selects "Microsoft AES Cryptographic Provider"
which supports SHA-256
*/
CryptAcquireContext(&cryptoProvider, NULL, MS_ENH_RSA_AES_PROV, PROV_RSA_AES, CRYPT_VERIFYCONTEXT);
CryptImportKey(cryptoProvider, reinterpret_cast<BYTE*>(&kd), sizeof(kd),0, CRYPT_IPSEC_HMAC_KEY, &cryptKey);
/* use cryptKey in the call to CryptCreateHash when you create your CALG_HMAC */
}
長さをキーの実際の長さに置き換えてください。