Changeset 4198 for branches/2.2.0.1/security/ExpressoCert/src/br/gov/serpro/cert/TokenCollection.java
- Timestamp:
- 05/03/11 15:58:45 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.0.1/security/ExpressoCert/src/br/gov/serpro/cert/TokenCollection.java
r1174 r4198 7 7 8 8 import br.gov.serpro.setup.Setup; 9 import java.io.IOException; 9 10 import java.util.HashMap; 11 import java.util.logging.Level; 12 import java.util.logging.Logger; 13 import sun.security.pkcs11.wrapper.CK_C_INITIALIZE_ARGS; 14 import sun.security.pkcs11.wrapper.CK_TOKEN_INFO; 15 import sun.security.pkcs11.wrapper.PKCS11; 16 import sun.security.pkcs11.wrapper.PKCS11Exception; 17 import static sun.security.pkcs11.wrapper.PKCS11Constants.*; 10 18 11 19 /** … … 36 44 37 45 String[] tokensArray = tokens.split(","); 38 for ( String tokenString : tokensArray){39 if (token String != null && tokenString.length() > 0){40 String[] tokenArray = token String.split(";");46 for (int i = 0; i < tokensArray.length; i++){ 47 if (tokensArray[i] != null && tokensArray[i].length() > 0){ 48 String[] tokenArray = tokensArray[i].split(";"); 41 49 Token token = new Token(tokenArray[0], tokenArray[1], this.setup); 42 token.registerToken(); 43 if (token.isRegistered()){ 44 this.put(token.getName(), token); 50 51 // Aqui testar se existe token inserido em algum slot para determinado driver. 52 // Pega sempre o primeiro slot registrado com a lib tokenArray[1] 53 // TODO: Deixar o usuário escolher o token que vai usar; 54 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 55 System.out.println("Getting slots from " + tokenArray[1]); 56 } 57 try { 58 long[] slots = getSlotsWithTokens(tokenArray[1]); 59 if (slots.length > 0){ 60 token.registerToken(slots[0]); 61 if (token.isRegistered()){ 62 this.put(token.getName(), token); 63 } 64 } 65 } catch (IOException iex){ 66 continue; 45 67 } 46 68 } … … 48 70 } 49 71 72 public long[] getSlotsWithTokens(String libraryPath) throws IOException{ 73 CK_C_INITIALIZE_ARGS initArgs = new CK_C_INITIALIZE_ARGS(); 74 String functionList = "C_GetFunctionList"; 75 76 initArgs.flags = CKF_OS_LOCKING_OK; 77 PKCS11 tmpPKCS11 = null; 78 long[] slotList = null; 79 try { 80 try { 81 tmpPKCS11 = PKCS11.getInstance(libraryPath, functionList, initArgs, false); 82 } catch (IOException ex) { 83 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 84 Logger.getLogger(TokenCollection.class.getName()).log(Level.SEVERE, null, ex); 85 } 86 throw ex; 87 } 88 } catch (PKCS11Exception e) { 89 try { 90 initArgs = null; 91 tmpPKCS11 = PKCS11.getInstance(libraryPath, functionList, initArgs, true); 92 } catch (IOException ex) { 93 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 94 Logger.getLogger(TokenCollection.class.getName()).log(Level.SEVERE, null, ex); 95 } 96 } catch (PKCS11Exception ex) { 97 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 98 Logger.getLogger(TokenCollection.class.getName()).log(Level.SEVERE, null, ex); 99 } 100 } 101 } 102 103 try { 104 slotList = tmpPKCS11.C_GetSlotList(true); 105 106 for (long slot : slotList){ 107 CK_TOKEN_INFO tokenInfo = tmpPKCS11.C_GetTokenInfo(slot); 108 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 109 System.out.println("slot: "+slot+"\nmanufacturerID: " 110 + String.valueOf(tokenInfo.manufacturerID) + "\nmodel: " 111 + String.valueOf(tokenInfo.model)); 112 } 113 } 114 } catch (PKCS11Exception ex) { 115 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 116 Logger.getLogger(TokenCollection.class.getName()).log(Level.SEVERE, null, ex); 117 } 118 } catch (Throwable t) { 119 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 120 Logger.getLogger(TokenCollection.class.getName()).log(Level.SEVERE, null, t); 121 } 122 } 123 124 return slotList; 125 126 } 50 127 }
Note: See TracChangeset
for help on using the changeset viewer.