Changeset 4198
- Timestamp:
- 05/03/11 15:58:45 (12 years ago)
- Location:
- branches/2.2.0.1/security
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.0.1/security/ExpressoCert/src/br/gov/serpro/cert/DigitalCertificate.java
r4123 r4198 2 2 3 3 import br.gov.serpro.setup.Setup; 4 import br.gov.serpro.cert.Token; 4 5 import java.awt.Frame; 5 6 import java.io.ByteArrayInputStream; … … 58 59 import java.io.OutputStreamWriter; 59 60 import java.security.AlgorithmParameters; 61 import java.security.NoSuchProviderException; 60 62 import java.security.cert.CertificateEncodingException; 61 63 import java.util.regex.Matcher; … … 256 258 // TODO: Usar dentro de um "loop" para testar outros modelos de tokens. 257 259 this.tokens = new TokenCollection(setup); 258 int interfaceType = DigitalCertificate.KEYSTORE_DETECTED; 260 261 Provider[] providers = Security.getProviders(); 262 if (this.setup.getParameter("debug").equalsIgnoreCase("true")) { 263 for (Provider provider : providers) { 264 System.out.println(provider.getInfo()); 265 } 266 } 267 268 int interfaceType = DigitalCertificate.KEYSTORE_DETECTED; 259 269 260 270 try { … … 264 274 } catch (Exception e1) { 265 275 266 Provider[] providers = Security.getProviders();267 276 if (this.setup.getParameter("debug").equalsIgnoreCase("true")) { 268 for (Provider provider : providers) {269 System.out.println(provider.getInfo());270 }271 272 277 // Não conseguiu abrir o token (ePass2000). 273 278 System.out.println("Erro ao ler o token: " + e1.getMessage()); … … 746 751 * ou Smartcard não foi encontrada, ou o usuário não inseriu o Token. 747 752 */ 748 private void loadKeyStore() throws KeyStoreException { 749 750 //Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(new ByteArrayInputStream(pkcs11Config.getBytes())); 751 //Security.addProvider(pkcs11Provider); 752 this.keyStore = KeyStore.getInstance("PKCS11"); 753 this.providerName = keyStore.getProvider().getName(); 754 753 private void loadKeyStore() throws GeneralSecurityException { 754 755 try{ 756 if (this.setup.getParameter("debug").equalsIgnoreCase("true")) { 757 System.out.println("Carregando provider: PKCS11"); 758 } 759 this.keyStore = KeyStore.getInstance("PKCS11"); 760 this.providerName = keyStore.getProvider().getName(); 761 } 762 catch (GeneralSecurityException kex){ 763 if (this.setup.getParameter("debug").equalsIgnoreCase("true")) { 764 System.out.println("Erro ao carregar provider: PKCS11"); 765 Throwable cause = kex.getCause(); 766 kex.printStackTrace(); 767 if (cause != null){ 768 cause.printStackTrace(); 769 } 770 } 771 throw kex; 772 } 755 773 } 756 774 … … 779 797 this.cert = this.keyStore.getCertificate(this.selectedCertificateAlias); 780 798 781 System.out.println("Aliases (" + this.keyStore.size() + "): ");782 799 if (this.setup.getParameter("debug").equalsIgnoreCase("true")) { 800 System.out.println("Aliases (" + this.keyStore.size() + "): "); 783 801 for (Enumeration alias = this.keyStore.aliases(); alias.hasMoreElements();) { 784 802 System.out.println(alias.nextElement()); … … 808 826 */ 809 827 public String getPEMCertificate() throws CertificateEncodingException { 810 return Base64Utils.der2pem(this.cert.getEncoded()); 828 if (this.cert != null){ 829 return Base64Utils.der2pem(this.cert.getEncoded()); 830 } 831 return null; 832 811 833 } 812 834 -
branches/2.2.0.1/security/ExpressoCert/src/br/gov/serpro/cert/Token.java
r1174 r4198 53 53 } 54 54 55 protected void registerToken(){ 56 String tokenConfiguration = new String("name = " + name + "\n" + 57 "library = " + libraryPath + "\ndisabledMechanisms = {\n" + 58 "CKM_SHA1_RSA_PKCS\n}"); 55 public String getProviderName(){ 56 return this.tokenProvider.getName(); 57 } 58 59 protected void registerToken(long slot){ 60 61 String tokenConfiguration = new String("name = " + name + "_" + slot + "\n" + 62 "library = " + libraryPath + "\nslot = " + slot + 63 "\ndisabledMechanisms = {\n" + "CKM_SHA1_RSA_PKCS\n}"); 59 64 60 65 try{ … … 63 68 Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(new ByteArrayInputStream(tokenConfiguration.getBytes())); 64 69 this.tokenProvider = pkcs11Provider; 70 if (setup.getParameter("debug").equalsIgnoreCase("true")) { 71 System.out.println("Adding provider: "+pkcs11Provider.getName()); 72 System.out.println("Provider info: " + pkcs11Provider.getInfo()); 73 System.out.println("Provider services:"); 74 for (Provider.Service service : pkcs11Provider.getServices()){ 75 System.out.println("\t"+service.toString()); 76 } 77 } 65 78 Security.addProvider(pkcs11Provider); 79 this.setName(this.tokenProvider.getName()); 66 80 this.registered = true; 67 81 } … … 79 93 } 80 94 81 /* public KeyStore getKeystore() throws KeyStoreException {82 83 return (this.keyStore = KeyStore.getInstance("PKCS11"));84 85 }86 */87 95 public boolean libraryExists(){ 88 96 -
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.