ISCardISO7816::ExternalAuthenticate 方法

[ ExternalAuthenticate 方法可用于要求部分中指定的操作系统。 它不适用于 Windows Server 2003 Service Pack 1 (SP1) 及更高版本、Windows Vista、Windows Server 2008 和操作系统的后续版本。 智能卡模块提供类似的功能。]

ExternalAuthenticate 方法 (APDU) 命令构造应用程序协议数据单元,该命令有条件地更新安全状态,在智能卡不信任计算机时验证计算机的标识。

该命令使用卡 (根据卡先前发出的质询(例如,INS_GET_CHALLENGE命令) 、密钥 (可能存储在卡中的机密) 以及接口设备传输的身份验证数据)对计算的结果 (是或否) 。

语法

HRESULT ExternalAuthenticate(
  [in]      BYTE         byAlgorithmRef,
  [in]      BYTE         bySecretRef,
  [in]      LPBYTEBUFFER pChallenge,
  [in, out] LPSCARDCMD   *ppCmd
);

parameters

byAlgorithmRef [in]

卡中算法的引用。

如果此值为零,则表示未提供任何信息。 算法的引用在发出命令之前是已知的,或者在数据字段中提供。

bySecretRef [in]

机密的引用。

含义
无信息
位位置:00000000
未提供任何信息。 机密的引用在发出命令之前是已知的,或者在数据字段中提供。
全局引用
位位置:0-------
(特定于 MF 的键) 的全局引用数据。
特定引用
位位置:1-------
特定引用数据 (特定于 DF 的键) 。
RFU
位位置:-xx-----
00 (其他值为 RFU) 。
机密
位位置:---xxxxx
机密的编号。

 

pChallenge [in]

指向身份验证相关数据的指针。 此参数可以为 NULL

ppCmd [in, out]

输入时,指向 ISCardCmd 接口对象的指针或 NULL

返回时,会用此操作构造的 APDU 命令填充该命令。 如果 ppCmd 设置为 NULL,则会使用 ppCmd 指针在内部创建并返回智能卡ISCardCmd 对象。

返回值

方法返回以下可能值之一。

返回代码 说明
S_OK
操作已成功完成。
E_INVALIDARG
传递了无效的参数。
E_POINTER
传入了错误的指针。
E_OUTOFMEMORY
内存不足。

 

备注

要使封装的命令成功,从卡获取的最后一个质询必须有效。

例如,可能会记录卡 (中不成功的比较,以限制) 引用数据的进一步使用尝试次数。

有关此接口提供的所有方法的列表,请参阅 ISCardISO7816

除了上面列出的 COM 错误代码之外,如果调用智能卡函数来完成请求,则此接口可能返回智能卡错误代码。 有关详细信息,请参阅 智能卡返回值

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
终止客户端支持
Windows XP
终止服务器支持
Windows Server 2003
标头
Scardssp.h
类型库
Scardsrv.tlb
DLL
Scardssp.dll
IID
IID_ISCardISO7816定义为 53B6AA68-3F56-11D0-916B-00AA00C18068

另请参阅

InternalAuthenticate

ISCardISO7816