| Rodolfo Barbolini |
Problema SmartCard e CAPICOM
Ciao, il mio problema non è proprio .NET ma provo ad esporre ugualmente:
Sto cercando di accedere a SmartCard crittografiche per recuperarne i certificati memorizzati. Come strada apparentemente percorribile ho utilizzato CapiCOM 2.0 che mette a disposizione classi per tale gestione, ma dopo che all'interno di un semplice programmino istanzio per 3 volte la classe Store ed eseguo l'apertura St.Open(CAPICOM_STORE_LOCATION.CAPICOM_SMART_CARD_USER_STORE) con il parametro per leggere da SmartC il componente va in errore indicando "Keyset non definito". Qualcuno ha avuto il medesimo problema e ha trovato soluzione? Conoscete altre strade per leggere un certificato da SmartCard (Lettore GemPC 410, Win XP Pro). Grazie imploro l'aiuto di Corrado Cavalli o Stefano Salvini |
| Mario Fontana [MS] |
Re: Problema SmartCard e CAPICOM
Ciao Rodolfo,
Non mi è chiaro se l'errore del "keyset non definito" ti esce dalla terza volta in poi che istanzi l'oggetto (quindi le prime due volte l'apertura avviene correttamente) oppure l'errore si verifica sempre. Inoltre, mi confermi che la smart-card è sempre la stessa in tutte e tre le operazioni ? Grazie Mario Fontana[MS] Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto |
| Rodolfo Barbolini |
Re: Problema SmartCard e CAPICOM
Ciao,
innanzitutto grazie per l'interessamento, l'errore del KeySet viene generato dalla terza volta che accedo all'oggetto Store della CAPICOM, mentre le prime due funziona quasi correttamente, se non che legge un solo certificato anche se sulla scheda ve ne sono 2. La SmartCard è sempre la stessa nelle mie prove, ma lo scopo finale è appunto quello di testare quando questa viene cambiata. Se ti può essere utile posso inviarti i sorgenti del progetto in questione Grazie Rudy |
| Rodolfo Barbolini |
Re: Problema SmartCard e CAPICOM
Scusa,
aggiungo un dettaglio di importanza rilevante, la Smart Card deve essere estratta e reinserita tra una chiamata e l'altra per generare l'errore, e specifico che ho provato sia mantenedo l'istanza all'oggetto store, sia ricreandola ad ogni passaggio (New e Nothing). L'errore avviene solo sotto XP e non Win2000 |
| Mario Fontana [MS] |
Re: Problema SmartCard e CAPICOM
Come prima cosa prova a installare un certificato nello store di Windows e successivamente prova il tuo programma (escludendo in questo test l'accesso alla smartcard). Se riesci ad istanziare correttamente l'oggetto n volte allora possiamo spostare il problema solo su CAPICOM e smartcard, altrimenti sarà necessario concentrarsi sul codice di accesso agli store. Inoltre il codice deve girare sempre con le stesse credenziali.Infatti spesso l'errore sul Keyset è dovuto al fatto che l'utente che richiede l'accesso al keyset non abbia i permessi. (Non ti ritorna nessun codice di errore?)
Per il problema dell'accesso ad un solo certificato verifica che entrambi i certificati abbiano subito lo stesso procedimento di installazione. Se ti servisse, per fare delle prove con certificati diversi in Windows XP hai la possibilità di installare in locale un Certificate Server con il quale potrai installare n certificati nello store e sulla smartcard. Saluti Mario Fontana[MS] Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto |
| Mario Fontana [MS] |
Re: Problema SmartCard e CAPICOM
Questo significa che con Win2k sia mantenendo l'oggetto sia ricreandolo ogni volta tutto funziona regolarmente ?
Se riesci a riprodurre l'errore in poche righe pubblicale pure. Saluti Mario Fontana[MS] Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto |
| Rodolfo Barbolini |
Re: Problema SmartCard e CAPICOM
Ciao,
a scanso di equivoci ho rifatto un po di prove. 1) Se accedo allo store in locale, che poi è il parametro di default Store.Open(CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE) funziona tutto correttamente sempre, per N tentativi, anche inserendo e riestraendo la card. Legge i certificati in locale ed in aggiunta tutti quelli della scheda, se questa è inserita nel lettore, altrimenti solo quelli in locale. 2) con il seguente codice, per leggere solo dalla CARD, invece alla terza istanza viene sollevata la seguente eccezzione -2146893802 'System.Runtime.InteropServices.COMException' Keyset non esistente Stoppando l'applicazione e riavviandola, funzionerà nuovamente per due volte e al terzo si pianta. Ho provato anche ad eseguire tale codice in un thread separato ma nulla. Anche specificando come secondo parametro il nome del lettore(GemPC 410 0) il risulatato non cambia ' Codice --- Dim St As New CAPICOM.Store() Dim Cert As New CAPICOM.Certificate() 'Apre lo Store dei certificati St.Open(CAPICOM_STORE_LOCATION.CAPICOM_SMART_CARD_USER_STORE) Label2.Text = "" 'Cicla su tutti i certificati trovati For Each Cert In St.Certificates Label2.Text = Cert.GetInfo(CAPICOM_CERT_INFO_TYPE.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME) Label2.Text &= vbCrLf & Cert.SerialNumber Next Cert = Nothing St = Nothing |
| Mario Fontana [MS] |
Re: Problema SmartCard e CAPICOM
Ho verificato internamente e non ho trovato alcun riferimento a questo errore quindi vedo di procurarmi un lettore quanto prima e fare delle prove.
Saluti Mario Fontana[MS] Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto |
| Rodolfo Barbolini |
Re: Problema SmartCard e CAPICOM
Ti ringrazio veramente molto
per il tuo interessamento!! Rudy |
| Mario Fontana [MS] |
Re: Problema SmartCard e CAPICOM
Non ho trovato un lettore e una smartcard come la tua, però posso dire che estraendo la smart-card dal lettore la connessione viene interrotta.
Poi tutto dipende dal CSP e da come gestisce queste situazioni. Prova a guardare su www.gemplus.com nella sezione support. Saluti Mario Fontana[MS] Il presente posting viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto |
| Rodolfo Barbolini |
Re: Problema SmartCard e CAPICOM
Ti ringrazio per l'interessamento,
comunque se riesco a risolvere ti faccio sapere. Buon lavoro, Rudy |