ISCardISO7816::InternalAuthenticate 方法

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

InternalAuthenticate 方法构造应用程序协议数据单元 ( APDU) 命令,该命令使用从接口设备发送的质询数据和相关的机密 (例如,卡中存储的密钥) ,通过卡启动身份验证数据的计算。

当相关机密附加到 MF 时,命令可用于对卡进行整体身份验证。

当相关机密附加到另一个 DF 时,该命令可用于对 DF 进行身份验证。

语法

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

parameters

byAlgorithmRef []

卡中算法的引用。

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

bySecretRef []

机密的引用。

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

pChallenge []

指向身份验证相关的数据的指针 (例如质询) 。

lReplyBytes []

响应中预期的最大字节数。

ppCmd [in、out]

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

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

返回值

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

返回代码 说明
S _ OK
操作已成功完成。
E _ INVALIDARG
参数无效。
E _ 指针
传入了错误的指针。
E _ OUTOFMEMORY
内存不足。

备注

命令的成功执行可能需要成功完成以前的命令 (例如 VERIFY 或 SELECT FILE) 或选择 (例如,相关的机密) 。

如果在发出命令时当前选择了密钥和算法,则该命令可能会隐式使用密钥和算法。

命令的发出次数可以记录在卡中,以限制使用相关机密或算法的更多尝试次数。

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

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

要求

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

请参阅

ExternalAuthenticate

ISCardISO7816