PC/SC
PC/SC (Personal Computer/Smart Card) es un conjunto de especificaciones para la integración de tarjetas inteligentes en ordenadores personales. En particular se define un API de programación que permite a los desarrolladores trabajar de forma uniforme con lectores de tarjetas de distintos fabricantes (que cumplan con la especificación).
El API de PC/SC está incorporada en sistemas Microsoft Windows 200x/XP y disponible también Microsoft Windows NT/9x. También hay una implementación libre, de código abierto, llamada PC/SC Lite (proyecto MUSCLE) para sistemas operativos GNU Linux.
Grupo de trabajo
Las especificaciones PC/SC se desarrollan por un comité (PC/SC Workgroup) en el que participan varias empresas del sector.
Los miembros principales del grupo son:
Organización de la especificación
La especificación se divide en 9 partes que contienen los requisitos detallados de interoperabilidad de dispositivos compatibles, información de diseño, interfaces de programación, etc:
- Parte 1. Introducción y visión general de la arquitectura
- Parte 2. Requisitos de interoperabilidad para las tarjetas y los lectores
- Parte 3. Requisitos de interoperabilidad para los lectores
- Parte 4. Consideraciones de diseño de los lectores e información de referencia
- Parte 5. Definición de la interfaz del Resource Manager
- Parte 6. Definición de la interfaz del Service Provider
- Parte 7. Consideraciones de diseño para el desarrollo de aplicaciones
- Parte 8. Recomendación para la implementación de servicios de seguridad y privacidad con tarjetas inteligentes
- Parte 9. Lectores con capacidades extendidas
Principales funciones del API
El API de programación es sencilla y proporciona funcionalidades simples. A continuación se enumeran las principales para dar una visión general del modo en que se programa usando este API:
- SCardEstablishContext y SCardReleaseContext (inicialización y liberación de recursos)
- SCardConnect, SCardReconnect y SCardDisconnect (conexión y desconexión a una tarjeta en un lector)
- SCardListReaderGroups, SCardListReaders, ... (exploración de lectores conectados)
- SCardGetAttrib (obtención de propiedades de los lectores conectados)
- SCardTransmit (envío de comandos APDU's a una tarjeta conectada)