Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 35

Discussione: processo java bloccato

  1. #11
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    eh ma non ho altro per davvero... la documentazione è solo questo esempio.. io ho solo copiato e incollato e su w7 va..
    di tutte le cose che mi hai detto non so molto, anzi non so nulla..
    adesso provo l'inputstream quello si che posso provare..

    la firma la applica prendendo le info dal dispositivo hardware.. ho una carta nel lettore e sotto una cartella windows la dll utilizzata per interfacciarsi..
    il certificato di firma è nella carta
    in questa porzione di codice vado a impostare i parametri per recupperare il certificato
    (gli uno è la psw di prova della carta, il secondo parametro è la ddl, il terzo è il token)
    codice:
    
    
    codice:
    CryptoEngine engine = new HardwareEngine("11111111", "C:/WINDOWS/system32/SissP11.dll",1);
    codice:
    engine.open();

    in questo passaggio viene applicata la firma digitale

    codice:
    smsg = SignMessageFactory.getInstance().createISignMessage(driver, engine);
    codice:
    
    
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  2. #12
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    e c'è questa descrizione anche

    Scelta del certificato di firma
    La scelta del certificato da utilizzare per la firma viene effettuata secondo i seguenti tre criteri, implementati nella classe
    “CryptoDriver”:
    1. impostazione del tipo di firma, cioè a valore legale, tramite il certificato di Sottoscrizione, o meno, con il certificato
    di Autenticazione. Se non viene impostato esplicitamente, il default prevede l'utilizzo del certificato di
    Autenticazione.
    2. scelta in base al CN (Common Name) del certificato. E' un parametro facoltativo.
    3. impostazione dell'identificativo o alias ("CKA_LABEL", in termini PKCS#11) della chiave privata sul dispositivo
    hw E' un parametro facoltativo. Se risulta impostato anche il CN, questo parametro viene ignorato.
    Se non viene impostato nè il CN nè l'alias della chiave privata, viene scelto il primo certificato disponibile, in ordine di
    lettura, che corrisponde al tipo di firma richiesto. Se non viene trovato nessun certificato corrispondente a quel tipo di
    firma, viene lanciata una Exception. Analogamente, se il certificato scelto in base al CN oppure all'alias della chiave
    privata non è compatibile col tipo di firma richiesto viene lanciata una Exception.
    Gli alias delle chiavi private ed i CN dei certificati disponibili sul dispositivo hw sono ottenibili mediante due opportuni
    metodi della classe “HardwareEngine”
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #13
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ti giuro che non ci credo manco se lo vedo che non ci sono API disponibili!
    Con quella porzione di codice tu non recuperi i parametri del certificato, bensì tenti l'accesso al token per recuperare la chiave privata che userai per apporre la firma. Alla chiave privata è associato un certificato, che invierai al destinatario.
    Le credenziali per la firma vanno specificate perché nella malaugurata ipotesi nella tua smart card ci siano più chiavi private (quindi più identità) non è predicibile il risultato (in molti casi firma con la prima chiave privata che trovi).
    questo codice così come lo posti è valido se hai una sola chiave privata.

    CryptoEngine ce lo vedo poco per la firma, crypto mi fa pensare a cifratura, non firma (cifratura è un'altra cosa), per questo vedere l'API mi aiuterebbe a chiarirmi sto dubbio.

    Mi va bene quella factory, ma vorrei capire che dice la documentazione, giusto per capire dove e come si blocca. Poi questa parte dovrebbe già creare il mex, non si spiega l'istruzione dopo in cui dai una engine mi pare (cmq dici al motore di fare qualcosa).

    In queste condizioni mi spiace, l'unica cosa che puoi fare è chiamare il supporto clienti infocert, se hai pagato la libreria, sicuramente avrai un supporto, usalo.

    ps abbi pazienza, con API ignota o secretate (mai viste API secretate, nemmeno per iaik o ipsec che sono a pagamento) io mi rifiuto di dare assistenza.
    Ultima modifica di valia; 14-07-2014 a 15:56
    RTFM Read That F*** Manual!!!

  4. #14
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    giuro
    mi hanno dato un file di API pietoso dove c'è solo quello che ti ho passato e il codice non è nemmeno scritto bene perchè mancano tutti i finally..

    il supporto è contattato ma risponde ogni 10 giorni e mi garantisce che non hanno errori..
    per quello chiedevo anche qui perchè non riesco a uscirne...
    ho il dubbio che il problema sia legato alla dll e non alla lib di firma.. ma non riesco proprio a capire..

    si ti confermo che c'è sempre solo una chiave privata e che firma con appunto al prima che trova
    di CryptoEngine invece non dice nulla di nulla... so che non c'entra con la cifratura, anche perchè quella la faccio io in un passaggio successivo

    ps grazie della pazienza comunque vada
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #15
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    puoi sempre provare a vedere che non sia la dll creando una coppia di chiavi private (selfsigned) con keytool (ci sono una marea di guide) e usando quelle per apporre la firma (se cambia la chiave non cambia il risultato).
    Se ti si blocca allora il è la dll, sennò attaccati all'assistenza clienti e fai caciara

    ps ma non hai visto una demo prima di comprare? boh ci sono aziende che sono migliori, spendere per spendere avevi un prodotto migliore
    RTFM Read That F*** Manual!!!

  6. #16
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    mhhh si avevo già fatto una cosa simile prima di passare allo sha2 !
    è un'ottima idea..

    ps la lib l'han scelta i grandi capi !
    mi consiglieresti un 'altra ? si sa mai che riesco a far cambiare idea !!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  7. #17
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    guarda, puoi fare delle prove anche solo con bouncycastle (giusto per far capire che è aggratis) e con dei token via sw, poi per token hw (se davvero li volete) devo vedere, noi lavoriamo soprattutto con token sw
    RTFM Read That F*** Manual!!!

  8. #18
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ufff.. andiamo oltre le mie capacità purtroppo..
    o meglio ci riuscirei sicuramente ma manca il tempo per studiarmi tutto prima..
    ma se cerco di killare il processo dal processo stesso ?
    cioè se richiamo il task manager da programma ed eseguo il kill ? andrà ?

    ho anche fatto delle prove usando altri metodi

    codice:
                    // firma vera e propria
                    //smsg = SignMessageFactory.getFactoryInstance().createISignMessage(cd, engine);
                    //smsg = SecurityRegistry.getInstance().getFactory(cd).createISignMessage(cd, engine);
                    smsg = SignMessageFactory.getInstance().createISignMessage(cd, engine);
    non ne capisco nemmeno la differenza, funzionano tutti e 3 ma il processo sul maledetto window 8 rimane bloccato
    anche il suggerimento di chiudere l'engine al termine della procedura non cambia il risultato

    devo risolvereeee sono morto se non riesco
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  9. #19
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    come hai fatto la prova? Che librerie usi? token hardware? hai fatto la prova col token software?
    scusa, detta così sembra un problema legato a qualche dll, perché ti assicuro che con token software non succede
    RTFM Read That F*** Manual!!!

  10. #20
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    no la prova come dicevi tu non ero capace..
    ho continuato con il codice mio ottimizzato frugando nei javadoc e andando a intuito..
    sono convinto anche io sia un problema hw perchè (ho omesso una parte importatissima !!!) se al posto del lettore+dll uso una business key e cambio driver funziona !!!!
    è importante questa vero ?

    codice:
    public String firmaFile(String pathSource, String pathDest, String code_pin, String driver, String slot) 
        {
            String returnValue = NO_ERROR;
    
                CryptoEngine engine = null;
                ISignMessage smsg = null;
                String signedFile = pathDest;
                BufferedInputStream bis = null;
                FileOutputStream fos = null;
    
                CryptoDriver cd = new CryptoDriver();
                try {
                    lh.debugOperazioni(LOGGER_PREFIX, "Inizio procedura di firma", this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    // impostazioni della modalita' di firma
                    cd.setSignatureType(CryptoDriver.LEGAL_SIGNATURE);
                    // aggiunta della data di firma
                    cd.setAddSigningTime(true);
                    engine = new HardwareEngine(code_pin, driver, Integer.parseInt(slot));
                    // lettura delle chiavi disponibili
                    engine.open();
                    lh.debugOperazioni(LOGGER_PREFIX, "Login al dispositivo completato", this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    // info sul KeyStore
                    lh.debugOperazioni(LOGGER_PREFIX, "Il KeyStore contiene i seguenti alias:", this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    int m=1;
                    for (Enumeration<String> labels = engine.getSigningIDs(); labels.hasMoreElements();) {
                        lh.debugOperazioni(LOGGER_PREFIX, (m++)+" - "+labels.nextElement(), this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    }
                    lh.debugOperazioni(LOGGER_PREFIX, "Il KeyStore contiene i seguenti certificati:", this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    int mc=1;
                    for (String cn : engine.getSigningCNs()) {
                        lh.debugOperazioni(LOGGER_PREFIX, (mc++)+" - "+cn, this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    }
                    // firma vera e propria
                    //smsg = SignMessageFactory.getFactoryInstance().createISignMessage(cd, engine);
                    //smsg = SecurityRegistry.getInstance().getFactory(cd).createISignMessage(cd, engine);
                    smsg = SignMessageFactory.getInstance().createISignMessage(cd, engine);
                    
                    // Impostazione input e output streams e creazione del messaggio
                    bis = new BufferedInputStream(new FileInputStream(pathSource));
                    smsg.setInputStream(bis);
                    File fo = new File(signedFile);
                    if (fo.exists()) fo.delete();
                    fos = new FileOutputStream(fo);
                    smsg.setOutputStream(fos);
                    smsg.encode(cd);
                    smsg.close();
                    fos.flush();
                    lh.debugOperazioni(LOGGER_PREFIX, "Firma del file completata", this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                    
                }
                catch(Exception e)
                {
                    lh.debugOperazioni(LOGGER_PREFIX, "JAVA Exception : " + e.getMessage(), this.getClass().getName(), "firmaFile()", Level.ERROR_INT);
                    
                    String msgErr = e.getMessage();
                    if(msgErr.indexOf(PIN_ERRATO)>-1)
                    {
                        returnValue = PIN_ERRATO;
                    }
                    else if(msgErr.indexOf(NO_TOKEN)>-1)
                    {
                        returnValue = NO_TOKEN;
                    }                
                    else if(msgErr.indexOf(INITIALIZATION_FAIL)>-1)
                    {
                        returnValue = NO_TOKEN;
                    }
                    else if(msgErr.indexOf(NO_INSERT)>-1)
                    {
                        returnValue = NO_TOKEN;
                    }
                    else
                    {
                        returnValue = msgErr;
                    }
                    
                } 
                finally 
                {
                    if (bis != null) 
                    {
                        try {bis.close();} catch (IOException ie) {;}
                    }
                    if (fos != null) 
                    {
                        try {fos.close();} catch (IOException ie) {;}
                    }
                    File fo = new File(signedFile);
                    if (fo.length() == 0) fo.delete();
                    try { engine.close(); } catch(Exception e) {;}
                }
                lh.debugOperazioni(LOGGER_PREFIX, "Esito firma : " + returnValue, this.getClass().getName(), "firmaFile()", Level.INFO_INT);
                return returnValue;        
            }
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.