Files
moegrid_sega-mount/src/utils/bcrypt_util.h
T
2026-07-31 15:39:45 +08:00

28 lines
1015 B
C++

#pragma once
#include <windows.h>
#include <bcrypt.h>
#include <string>
#include <vector>
namespace bcrypt_util {
// 将const T*转换为PUCHAR,供BCrypt API使用(BCrypt参数声明为非const但实际不修改输入)
template<typename T>
PUCHAR to_puchar(const T *p) {
return reinterpret_cast<PUCHAR>(const_cast<T *>(p));
}
// 打开BCrypt算法提供者并设置链模式
bool open(BCRYPT_ALG_HANDLE &hAlg, const wchar_t *chaining, std::string *err = nullptr);
// 获取对称密钥对象所需缓冲区大小
bool get_object_length(BCRYPT_ALG_HANDLE hAlg, ULONG &cb_obj, std::string *err = nullptr);
// 生成对称密钥,key_obj由调用方持有
bool generate_symmetric_key(BCRYPT_ALG_HANDLE hAlg,
BCRYPT_KEY_HANDLE &hKey,
std::vector<uint8_t> &key_obj,
const uint8_t *key, ULONG key_len,
std::string *err = nullptr);
}