sigEncode内のgetHmacSha1でエラー(return 0)が返ってきます。
getHmacSha1のソースコードは以下の通りです。
//コンテキストの取得でエラーが起きているようです。
#defcfunc getHmacSha1 str _p1, str _p2 ghc_p1 = _p1 ghc_p2 = _p2 hProv = 0 hKey = 0 hHash = 0 ghc_dataLength = 0 sdim hmacInfo,14 lpoke hmacInfo, 0, CALG_SHA1 ghc_p2Length = strlen(ghc_p2) dim keyBlob, 3+(ghc_p2Length/4)+1 poke keyBlob, 0, PLAINTEXTKEYBLOB poke keyBlob, 1, CUR_BLOB_VERSION wpoke keyBlob, 2, 0 lpoke keyBlob, 4, CALG_RC2 lpoke keyBlob, 8, ghc_p2Length memcpy keyBlob, ghc_p2, ghc_p2Length, 12, 0 //コンテキストの取得 if ( 1!_CryptAcquireContext(hProv, 0, 0, PROV_RSA_FULL, 0) ) { return 0 } //キーのインポート if ( 1!_CryptImportKey(hProv, keyBlob, (12+ghc_p2Length), 0, CRYPT_IPSEC_HMAC_KEY, hKey) ) { return 0 } //ハッシュ初期化 if ( 1!_CryptCreateHash(hProv, CALG_HMAC, hKey, 0, hHash) ) { return 0 } //ハッシュパラメータの設定 if ( 1!_CryptSetHashParam(hHash, HP_HMAC_INFO, hmacInfo, 0) ) { return 0 } //ハッシュに書き込み if ( 1!_CryptHashData(hHash, ghc_p1, strlen(ghc_p1), 0) ) { return 0 } //ハッシュ取得 if ( 1!_CryptGetHashParam(hHash, HP_HASHVAL, 0, ghc_dataLength, 0) ) { return 0 } sdim ghc_dest, ghc_dataLength if ( _CryptGetHashParam(hHash, HP_HASHVAL, varptr(ghc_dest), ghc_dataLength, 0) ) { } //ハッシュハンドルの破棄 _CryptDestroyHash hHash //キーハンドルの破棄 _CryptDestroyKey hKey //ハンドルの破棄 _CryptReleaseContext hProv, 0 return ghc_dest
現状、メインPCでは正常に投稿できるのですが、サブPCだとエラーが発生します。
メインPCとサブPCはwindows11です。(windows10のサブPCでも同様のエラーを確認しています)
再現できる最小限のコードが以下の通りです。
正常であれば1が返るはずはずなのですが、サブPCだと0が返っていきます。
#uselib "advapi32.dll" #cfunc _CryptAcquireContext "CryptAcquireContextA" var, sptr, sptr, int, int #define PROV_RSA_FULL 1 hProv = 0 mes _CryptAcquireContext(hProv, 0, 0, PROV_RSA_FULL, 0)
解決策をご存じの方が居ましたら、教えていただけると幸いです。