функция обратного вызова PFN_CMSG_EXPORT_KEY_AGREE (wincrypt.h)
Функция обратного вызова PFN_CMSG_EXPORT_KEY_AGREE шифрует и экспортирует ключ шифрования содержимого для получателя соглашения ключа в конвертированном сообщении.
Синтаксис
PFN_CMSG_EXPORT_KEY_AGREE PfnCmsgExportKeyAgree;
BOOL PfnCmsgExportKeyAgree(
[in] PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
[in] PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,
[in, out] PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,
[in] DWORD dwFlags,
void *pvReserved
)
{...}
Параметры
[in] pContentEncryptInfo
Указатель на CMSG_CONTENT_ENCRYPT_INFO структуру, содержащую ключ шифрования содержимого.
[in] pKeyAgreeEncodeInfo
Указатель на структуру CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, указывающую ключ, используемый для шифрования ключа шифрования содержимого.
[in, out] pKeyAgreeEncryptInfo
Указатель на структуру CMSG_KEY_AGREE_ENCRYPT_INFO, содержащую зашифрованный ключ шифрования содержимого.
[in] dwFlags
Это значение не используется. Присвойте ему значение нулю.
pvReserved
Этот параметр зарезервирован и должен иметь значение NULL.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое (TRUE).
Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE). Для получения расширенных сведений об ошибке вызовите GetLastError.
Замечания
Для каждого ключа получателя функция PFN_CMSG_EXPORT_KEY_AGREE должна обновить элемент EncryptedKey элемента структуры CMSG_KEY_AGREE_KEY_ENCRYPT_INFO, на которую ссылается rgpKeyAgreeKeyEncryptInfo член структуры CMSG_KEY_AGREE_ENCRYPT_INFO, на которую указывает параметр pKeyAgreeEncryptInfo. Эта функция должна использовать pfnAlloc и pfnFree членов структуры CMSG_CONTENT_ENCRYPT_INFO, на которую указывает параметр pContentEncryptInfo для управления памятью для всех значений, которые он обновляет.
Если, при входе, элемент dwEncryptFlags структуры CMSG_CONTENT_ENCRYPT_INFO, на которую указывает элемент pContentEncryptInfo, имеет значение CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG, эфемерный PublicKey член структуры CERT_PUBLIC_KEY_INFO, на которую ссылается элемент OriginatorPublicKeyInfo структуры CMSG_KEY_AGREE_ENCRYPT_INFO, на которую указывает Параметр pKeyAgreeEncryptInfo должен быть заполнен нулями, чтобы всегда получать ту же максимальную длину в кодировке.
Функции поддержки OID можно использовать для развертывания этой функции обратного вызова. Wincrypt.h определяет следующие константы для этой цели.
Необходимо определить различные функции обратного вызова для ключей CAPI1 и API шифрования: ключи следующего поколения (CNG). Обе функции имеют одинаковую сигнатуру, но используют разные идентификаторы. Какая функция вызывается, зависит от значения fCNG члена структуры CMSG_CONTENT_ENCRYPT_INFO, на которую указывает параметр pContentEncryptInfo. В следующей таблице показана связь между функцией обратного вызова и значением элемента fCNG.
Значение fCNG | Постоянный | Определение |
---|---|---|
FALSE | CMSG_OID_EXPORT_KEY_AGREE_FUNC или CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC | "CryptMsgDllExportKeyAgree" |
TRUE | CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC | "CryptMsgDllCNGExportKeyAgree" |
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |