Index: /trunk/security/classes/CertificadoB.php
===================================================================
--- /trunk/security/classes/CertificadoB.php	(revision 1574)
+++ /trunk/security/classes/CertificadoB.php	(revision 1636)
@@ -9,9 +9,9 @@
   public $dados = array();        # Area para armazenar os dados recuperados do certificado.
   public $apresentado = false;    # Deve ser testado para verificar se no certificado processado foi localizado o CPF
-  public $erros_ssl = array(); 
-  public $cert_assinante = '';	
+  public $erros_ssl = array();
+  public $cert_assinante = '';
   public $msg_sem_assinatura = '';  #conteï¿œdo da mensagem sem assinatura, que retorna da funï¿œï¿œo verify do openssl
   public $arquivos_para_deletar = array();
-  
+
   public function __construct()
   {
@@ -32,12 +32,12 @@
 public function __destruct()
   {
-    #Remover arquivos temporarios.....	
+    #Remover arquivos temporarios.....
     deleta_arquivos_temporarios($this->arquivos_para_deletar);
   }
 
-# Recupera dados de um certificado no formato pem 
+# Recupera dados de um certificado no formato pem
   function certificado($certificado_pem)
-  {		
-      if (!$certificado_pem) 
+  {
+      if (!$certificado_pem)
     {
         $this->apresentado = False;
@@ -46,6 +46,6 @@
    $this->dados = recupera_dados_do_ceritificado_digital($certificado_pem);
    $this->dados_xml = gera_xml_com_dados_do_certificado($this->dados);
-     # Certificado foi processado, as informacoes obtidas estao em $this->dados. 
-  $this->apresentado = true;  
+     # Certificado foi processado, as informacoes obtidas estao em $this->dados.
+  $this->apresentado = true;
   }
 
@@ -71,5 +71,5 @@
 
 		$w = exec('openssl rsautl -in ' . $senha_arquivo_temporario . ' -out ' . $senha_criptografada_arquivo_temporario . ' -inkey ' . $cert_arquivo_temporario . ' -certin -pkcs -keyform PEM -encrypt',$saida);
-		
+
 		if(!file_exists($senha_criptografada_arquivo_temporario))
 		{
@@ -79,5 +79,5 @@
 		}
 
-                # Recupera a senha criptada, binario.....		
+                # Recupera a senha criptada, binario.....
 		$retorno = file_get_contents($senha_criptografada_arquivo_temporario);
 
@@ -97,5 +97,5 @@
 		if(!is_array($c))	return false;
 		$aux = count($c);
-		if($aux < 1)	return false;		
+		if($aux < 1)	return false;
 		if(!is_array($h) )	return false;
 		# Tem de verificar todos os certificados que serao utilizados para criptografar a msg..
@@ -109,5 +109,5 @@
 		$enc_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar);
 		//echo $enc_arquivo_temporario.'<br>';
-		
+
 		// LIMPA ERROS ... Pode ser um problema para outras aplicacoes que usam openssl(fonte de erros unica).
 		while ($erro = openssl_error_string()); //  Limpa buffer de erros anteriores......
@@ -118,6 +118,6 @@
 		{
 			// Guarda msgs de erro ...
-			while ($erro = openssl_error_string()) 
-			{ 
+			while ($erro = openssl_error_string())
+			{
 				$this->erros_ssl[] = $erro;
 			}
@@ -126,5 +126,5 @@
 			return false;
 		}
-                # Recupera a msg criptada......		
+                # Recupera a msg criptada......
 		$retorno = file_get_contents($enc_arquivo_temporario);
 		deleta_arquivos_temporarios($this->arquivos_para_deletar);
@@ -134,32 +134,48 @@
 
 
-# Verifica uma msg($m) assinada... 
+# Verifica uma msg($m) assinada...
 	public function verificar($m)
 	{
 		if($m == '') return false;
-		$m_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar);
+		if(!$m_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar))
+                    {
+                        $this->erros_ssl[] = 'Não foi possível verificar a assinatura gerada. Contate o administrador';
+                        $this->arquivos_para_deletar = array();
+                        return false;
+                    }
 		if(!grava_arquivo($m_arquivo_temporario,$m))
 		{
-			deleta_arquivos_temporarios($this->arquivos_para_deletar);
-			$this->arquivos_para_deletar = array();
-			return false;
-		}
-		$vrf_cert_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar);
-		$vrf_msg_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar);
+                        $this->erros_ssl[] = 'Não foi possível verificar a assinatura gerada. Contate o administrador';
+			deleta_arquivos_temporarios($this->arquivos_para_deletar);
+			$this->arquivos_para_deletar = array();
+			return false;
+		}
+		if(!$vrf_cert_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar))
+                    {
+                        $this->erros_ssl[] = 'Não foi possível verificar a assinatura gerada. Contate o administrador';
+                        $this->arquivos_para_deletar = array();
+                        return false;
+                    }
+		if(!$vrf_msg_arquivo_temporario = gera_nome_arquivo_temporario(&$this->arquivos_para_deletar))
+                    {
+                        $this->erros_ssl[] = 'Não foi possível verificar a assinatura gerada. Contate o administrador';
+                        $this->arquivos_para_deletar = array();
+                        return false;
+                    }
 		// LIMPA ERROS ... Pode ser um problema para outras aplicacoes que usam openssl(fonte de erros unica).
 		while ($erro = openssl_error_string()); //  Limpa buffer de erros anteriores......
 		$this->erros_ssl = array();
-		$resultado = openssl_pkcs7_verify($m_arquivo_temporario,0, $vrf_cert_arquivo_temporario,array($GLOBALS['CAs']),$GLOBALS['CAs'],$vrf_msg_arquivo_temporario); 
-	        $retorno = true; 
+		$resultado = openssl_pkcs7_verify($m_arquivo_temporario,0, $vrf_cert_arquivo_temporario,array($GLOBALS['CAs']),$GLOBALS['CAs'],$vrf_msg_arquivo_temporario);
+	        $retorno = true;
 		if($resultado === false || $resultado == -1)
 		{
-		        # Indica ocorrencia de erro ... 
+		        # Indica ocorrencia de erro ...
 		        $retorno = false;
 			// Guarda msgs de erro ...
-			while ($erro = openssl_error_string()) 
-			{ 
+			while ($erro = openssl_error_string())
+			{
 				$this->erros_ssl[] = $erro;
 			}
-			If(file_exists($vrf_msg_arquivo_temporario))  
+			If(file_exists($vrf_msg_arquivo_temporario))
 				{
 					$this->msg_sem_assinatura =  file_get_contents($vrf_msg_arquivo_temporario);
@@ -174,5 +190,5 @@
 			{
 				# Se nao foi possivel obter o certificado retorna com falso .....
-				If(file_exists($vrf_msg_arquivo_temporario))  
+				If(file_exists($vrf_msg_arquivo_temporario))
 					{
 						$this->msg_sem_assinatura =  file_get_contents($vrf_msg_arquivo_temporario);
@@ -202,10 +218,10 @@
 		{
 			while ($erro = openssl_error_string()); //  Limpa buffer de erros anteriores......
-			# Certificado poderia ter assinado um email?? 
+			# Certificado poderia ter assinado um email??
 			if(!($this->dados['KEYUSAGE']['digitalSignature']))
 			{
 				$this->erros_ssl[] = 'Certificado nao poderia ter sido utilizado para assinar email.';
-				while ($erro = openssl_error_string()) 
-					{ 
+				while ($erro = openssl_error_string())
+					{
 						$this->erros_ssl[] = $erro;
 					}
@@ -226,7 +242,7 @@
 		}
 		deleta_arquivos_temporarios($this->arquivos_para_deletar);
-		$this->arquivos_para_deletar = array();	
+		$this->arquivos_para_deletar = array();
 		return $retorno;
-	}	
+	}
 
 	public function extrai_certificado_da_msg_assinada($m)
@@ -278,5 +294,5 @@
 					$retorno = $item;
 					break;
-				}		
+				}
 		}
 		deleta_arquivos_temporarios($this->arquivos_para_deletar);
Index: /trunk/security/vercert.php
===================================================================
--- /trunk/security/vercert.php	(revision 1574)
+++ /trunk/security/vercert.php	(revision 1636)
@@ -134,5 +134,5 @@
     $aux = '-----BEGIN CERTIFICATE-----'.$aux.'-----END CERTIFICATE-----';
     return $aux;
-   }
+  }
  
 
@@ -172,5 +172,5 @@
 
     $cc=ldap_connect($ldap_servidor); 
-
+    ldap_set_option($cc, LDAP_OPT_PROTOCOL_VERSION, 3);
     //  bind ..
     $sr=ldap_bind($cc,$ldap_dn,$ldap_passwd);  
@@ -197,5 +197,5 @@
     // Pega resultado ....
     $info = ldap_get_entries($cc, $sr);
-  
+    
     // Tem de achar só uma entrada.....ao menos uma....
     if($info["count"]!=1)
@@ -226,14 +226,12 @@
 			$aux1 = $info[0]["dn"];
 			$user_info['usercertificate'] = $cert;
-			 if(isset($GLOBALS['phpgw_info']['server']['atributoexpiracao']))
+			if(isset($GLOBALS['phpgw_info']['server']['atributoexpiracao']))
 				{
 					if(substr($info[0][$GLOBALS['phpgw_info']['server']['atributoexpiracao']][0],-1,1)=="Z")
 						{
-							###quando a data de expiracao estah no formato yyyymmddhhmmssZ
 							$user_info[$GLOBALS['phpgw_info']['server']['atributoexpiracao']] = '19800101000000Z';
 						}
 					else
 						{
-							###Outro atributo ldap que, assim como o phpgwaccounttype, tambem contem hora em formato unix
 							$user_info[$GLOBALS['phpgw_info']['server']['atributoexpiracao']] = '0';
 						}
@@ -241,9 +239,15 @@
 			else
 				{
-					//$user_info['phpgwaccountexpires'] = '0';
                                         $user_info['phpgwlastpasswdchange'] = '0';
 				}
-			ldap_modify($cc,$aux1,$user_info);
-			echo '6'.chr(0x0D).chr(0x0A).'Seu Certificado foi cadastrado. Sua senha foi expirada. Altere sua senha para concluir o processo.';
+                                
+			if(!ldap_modify($cc,$aux1,$user_info))
+                            {
+                                echo '6'.chr(0x0D).chr(0x0A).'Ocorreu um erro no acolhimento do certificado.',$aux1;
+                            }
+                        else
+                            {
+                                echo '6'.chr(0x0D).chr(0x0A).'Seu Certificado foi cadastrado. Sua senha foi expirada. Altere sua senha para concluir o processo.';
+                            }
 		}
 	else
