Sto sviluppando un fornitore di keystore (KSP) per CNG che memorizzerà chiavi e certificati da remoto in un server back-end per poter essere utilizzato non solo su Windows, ma anche su altri sistemi operativi senza la necessità di esportare / importare più volte, ogni sistema operativo avrà il proprio driver.
Attualmente sto studiando come far sapere a Windows che il mio KSP ha certificati personali che devono essere disponibili ad altre app che utilizzano CryptoAPI, come i browser.
Ho letto che, quando si usano le smartcard, questa procedura viene eseguita dal "Certificate Propagation Service", che rileva quando viene inserita una smart card e quindi copia i certificati nell'archivio certificati "MY" dell'utente corrente.
Come si fa la propagazione dei certificati disponibili nel KSP? Se chiamo CertAddEncodedCertificateToStore chiedendo di inserire il certificato nel negozio "MY", farà il trucco persistendo il certificato per le sessioni future? Se è così, immagino che quando alcune app chiamano CryptAcquireCertificatePrivateKey con quel certificato come parametro, CryptoAPI chiederà al KSP un riferimento alla chiave privata, giusto?