Estoy desarrollando un proveedor de almacén de claves CNG (KSP) que almacenará claves y certificados de forma remota en un servidor back-end para ser utilizado no solo en Windows, sino también en otros sistemas operativos sin la necesidad de exportar / importar varias veces. Cada sistema operativo tendrá su propio controlador.
Actualmente estoy investigando cómo hacerle saber a Windows que mi KSP tiene certificados personales que deben estar disponibles para otras aplicaciones usando CryptoAPI, como los navegadores.
He leído que, al usar tarjetas inteligentes, este procedimiento lo realiza el "Servicio de Propagación de Certificados", que advierte cuando se inserta una tarjeta inteligente y luego copia los certificados al "MI" almacén de certificados del usuario actual.
¿Cómo hacer la propagación de certificados disponibles en el KSP? Si llamo a CertAddEncodedCertificateToStore pidiendo que ponga el certificado en la tienda "MY", ¿hará el truco de persistir el certificado para futuras sesiones? Si es así, me imagino que cuando alguna aplicación llame a CryptAcquireCertificatePrivateKey con ese certificado como parámetro, CryptoAPI le pedirá al KSP una referencia a la clave privada, ¿verdad?