【发布时间】:2016-01-15 18:29:28
【问题描述】:
Indy 组件是否具有验证智能卡 (CAC) 凭据的功能?我假设它必须与InitializeSecurityContext 结合使用。
我在西雅图的 C++ Builder 中使用它,但即使是 Delphi 示例也将不胜感激。
这是我目前所知道的:
- 打开系统证书存储 (
CertOpenSystemStore) 并让 用户选择一个证书 (CryptUIDlgSelectCertificateFromStore)。 - 获取凭据句柄 (
AcquireCredentialsHandle)。 - 使用
TIdTCPClient和TIdSSLIOHandlerSocketOpenSSL使用安全端口443 连接到我的服务器。 - 调用
InitializeSecurityContext,返回SEC_I_CONTINUE_NEEDED。
之后,我不确定应该将什么发送到服务器以及期望得到什么回报。还有什么时候系统应该向用户询问 PIN 码?
谢谢
【问题讨论】:
-
Indy 组件没有智能卡或支付终端 (POS) 的东西。你必须自己写。你还没有确定支付终端类型,但即使你确定了,我可以告诉你,这里没有人会为你写一大块 POS 支付系统代码。 INDY 的关注点是为基本的 IETF RFC 协议提供组件,例如 HTTP、FTP 等。你所说的被称为应用层问题。通过 HTTP 和 HTTPS 来回传输的东西不是 Indy 的问题,而是您的问题。
-
这与任何形式的付款无关。军方使用称为“通用访问卡”(AKA CAC)的东西进行识别/验证。该卡包含一堆用于不同目的的证书,其想法是多步骤验证。在这种情况下,用户必须拥有独特的东西(卡)并知道一些东西(用于访问卡上证书的密码)。我正在编写一个需要使用智能卡上的证书对用户进行身份验证的应用程序。我也知道印地的角色。正如我上面所说,我已经连接到服务器。我不知道要发送和接收什么。
-
这仍然是一个非常小的垂直市场应用关注点。 Indy 不处理“我不知道如何向我的服务器发送字节”的问题。你会的。
标签: c++ delphi c++builder indy10 c++builder-10-seattle