Fornecedor Wrapper Service Provider
O objetivo do wrapper do fornecedor é encapsular e usar as interfaces COM de baixo nível (fornecidas pelos fabricantes de cartões inteligentes) para um cartão inteligente específico. Essas interfaces não são fornecidas pela Microsoft.
Conforme descrito na parte 6 da Interoperability Specification for ICCs and Personal Computer Systems (ver especificações em https://pcscworkgroup.com), a funcionalidade exposta por este wrapper é mais fácil de usar do que a funcionalidade de quatro provedores de serviços separados. A funcionalidade do invólucro pode ser dividida em quatro áreas principais:
- Serviços de autenticação de cartão inteligente, como obter desafio e autenticação de cartão.
- Acesso a arquivos de cartão inteligente ou serviços do sistema de arquivos, como abrir, fechar, ler e gravar.
- Gerenciamento de cartão inteligente, como anexar e desanexar.
- Serviços de verificação de cartão inteligente, como verificar e alterar código.
Observação
Esta especificação pode não estar disponível em alguns idiomas e países ou regiões.
A funcionalidade é específica para o tipo de cartão que está sendo usado (quais funções o cartão suporta, protocolos e assim por diante) e será diferente para cada cartão.
O wrapper de exemplo do Microsoft SCardCOM usa a biblioteca ATL COM para implementar um wrapper simples e estabelecer um modelo para outros wrappers. Ele implementa as seguintes interfaces.
Interface ou objeto | Descrição |
---|---|
ISCardAuth |
Serviços de autenticação. |
ISCardFileAccess |
Serviços do sistema de arquivos. |
ISCardManage |
Serviços de gestão. |
ISCardVerify |
Serviços de verificação. |
Observação
O exemplo SCardCOM é fornecido apenas como um exemplo de implementação das interfaces wrapper. Para evitar a colisão de nomes de DLL com outros fornecedores, você não deve usáSCardCOM.dll como o nome de quaisquer DLLs criadas.
A seguir está um uso típico do invólucro do fornecedor. Este exemplo usa a interface ISCardManage para criar instâncias das interfaces que serão encapsuladas no provedor de serviços e a interfaceISCardVerify para verificar sua operação.
Para criar um provedor de serviços de wrapper
- Crie uma instância do ISCardManage interface. Use essa interface para criar uma instância das interfaces necessárias (por exemplo, ISCardFileAccess ou ISCardVerify). Ao criar essas interfaces, quaisquer interfaces COM de baixo nível correspondentes também seriam criadas.
- Anexe/conecte-se a um cartão através do métodoISCardManage apropriado.
- Execute as operações necessárias através do métodoISCardVerify apropriado (que pode chamar várias interfaces e métodos COM de baixo nível para concluir).
- Repita para outras operações.
- Solte quando terminar.
O nome da interface COM e o identificador de interface (GUID) não devem ser alterados daqueles usados no wrapper de código ou exemplo. No entanto, o GUID de classe (ou seja, onde reside uma implementação real de uma interface) deve ser alterado daqueles usados. Isso é especialmente importante ao implementar um wrapper de fornecedor. Um exemplo seria o uso de vários wrappers de fornecedor em um computador específico. Esses wrappers devem implementar as mesmas interfaces COM, mas sempre usarão estratégias de implementação diferentes. Portanto, classes diferentes (e IDs de classe) são necessárias.