Share via


Método ISCardISO7816::InternalAuthenticate

[O método InternalAuthenticate está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele não está disponível para uso no Windows Server 2003 com Service Pack 1 (SP1) e posterior, Windows Vista, Windows Server 2008 e versões subsequentes do sistema operacional. Os Módulos de Cartão Inteligente fornecem funcionalidade semelhante.]

O método InternalAuthenticate constrói um comando APDU (unidade de dados de protocolo de aplicativo) que inicia a computação dos dados de autenticação pelo cartão usando os dados de desafio enviados do dispositivo de interface e um segredo relevante (por exemplo, uma chave) armazenado no cartão.

Quando o segredo relevante é anexado ao MF, o comando pode ser usado para autenticar o cartão como um todo.

Quando o segredo relevante é anexado a outro DF, o comando pode ser usado para autenticar esse DF.

Sintaxe

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

Parâmetros

byAlgorithmRef [in]

Referência do algoritmo no cartão.

Se esse valor for zero, isso indicará que nenhuma informação é fornecida. A referência do algoritmo é conhecida antes de emitir o comando ou é fornecida no campo de dados.

bySecretRef [in]

Referência do segredo.

Valor Significado
Sem informações
Posição do bit: 00000000
Nenhuma informação é fornecida. A referência do segredo é conhecida antes de emitir o comando ou é fornecida no campo de dados.
Ref global
Posição do bit: 0-------
Dados de referência global (uma chave específica do MF).
Ref específico
Posição do bit: 1-------
Dados de referência específicos (uma chave específica do DF).
RFU
Posição do bit: -xx-----
00 (outros valores são RFU).
Segredo
Posição do bit: ---xxxxx
Número do segredo.

 

pChallenge [in]

Ponteiro para os dados relacionados à autenticação (por exemplo, desafio).

lReplyBytes [in]

Número máximo de bytes esperados em resposta.

ppCmd [in, out]

Na entrada, um ponteiro para um objeto de interface ISCardCmd ou NULL.

No retorno, ele é preenchido com o comando APDU construído por essa operação. Se ppCmd tiver sido definido como NULL, um objeto cartãoISCardCmd inteligente será criado internamente e retornado usando o ponteiro ppCmd.

Valor retornado

O método retorna um dos valores possíveis a seguir.

Código de retorno Descrição
S_OK
Operação concluída com sucesso.
E_INVALIDARG
Parâmetro inválido.
E_POINTER
Um ponteiro inválido foi passado.
E_OUTOFMEMORY
Sem memória.

 

Comentários

A execução bem-sucedida do comando pode estar sujeita à conclusão bem-sucedida de comandos anteriores (por exemplo, VERIFY ou SELECT FILE) ou seleções (por exemplo, o segredo relevante).

Se uma chave e um algoritmo estiverem selecionados no momento ao emitir o comando, o comando poderá usar implicitamente a chave e o algoritmo.

O número de vezes que o comando é emitido pode ser registrado no cartão para limitar o número de tentativas adicionais de usar o segredo relevante ou o algoritmo.

Para obter uma lista de todos os métodos fornecidos por essa interface, consulte ISCardISO7816.

Além dos códigos de erro COM listados acima, essa interface poderá retornar um código de erro de cartão inteligente se uma função de cartão inteligente tiver sido chamada para concluir a solicitação. Para obter mais informações, consulte Valores retornados de cartão inteligente.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Fim do suporte ao cliente
Windows XP
Fim do suporte ao servidor
Windows Server 2003
Cabeçalho
Scardssp.h
Biblioteca de tipos
Scardsrv.tlb
DLL
Scardssp.dll
IID
IID_ISCardISO7816 é definido como 53B6AA68-3F56-11D0-916B-00AA00C18068

Confira também

ExternalAuthenticate

ISCardISO7816