Index: trunk/security/classes/CertificadoB.php
===================================================================
--- trunk/security/classes/CertificadoB.php	(revision 1636)
+++ trunk/security/classes/CertificadoB.php	(revision 2393)
@@ -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,5 +134,5 @@
 
 
-# Verifica uma msg($m) assinada...
+# Verifica uma msg($m) assinada... 
 	public function verificar($m)
 	{
@@ -166,16 +166,16 @@
 		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);
@@ -190,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);
@@ -218,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;
 					}
@@ -242,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)
@@ -294,5 +294,5 @@
 					$retorno = $item;
 					break;
-				}
+				}		
 		}
 		deleta_arquivos_temporarios($this->arquivos_para_deletar);
Index: trunk/security/classes/funcoes_auxiliares.php
===================================================================
--- trunk/security/classes/funcoes_auxiliares.php	(revision 1574)
+++ trunk/security/classes/funcoes_auxiliares.php	(revision 2393)
@@ -1354,4 +1354,5 @@
 
 				case 0xa0:
+                                case 0xa4:
 					// Extensions
 					$len = ord($data[1]);
@@ -1608,4 +1609,10 @@
 	{
 		$AUX = recupera_dados_oid($certificado_digital_formato_der,'2.5.29.31');
+		echo '<br/><br/><br/><pre>';
+		print_r($AUX);
+		echo '</pre><br/><br/>';
+		exit();
+		
+		
 		$i=1;
 		if(substr($AUX[0][1][0],0,7) == 'boolean')
@@ -1634,5 +1641,5 @@
 						foreach($AUX[0][$i][1][1] as $crl)
 						  {
-						      if(substr($crl[1][0][1][0][1][0][1],0,4) == 'http')
+						      if(substr($crl[1][0][1][0][1][0][1],0,4) == 'http' || substr($crl[1][0][1][0][1][0][1],0,4) == 'ldap')
 							{
 								$ret[] = $crl[1][0][1][0][1][0][1];
@@ -1640,5 +1647,22 @@
 						  }
 					  }
-			  }
+			}
+		
+		// Se $ret esta vazio tenta obter crls em outra estrutura(outro layout).
+		if(count($ret) == 0)
+			{
+				if(is_array($AUX[0][1][1][1][0][1][0][1][0][1][0]))
+					{
+						//Pode existir mais de um local para obter a CRL.
+						foreach($AUX[0][1][1][1][0][1][0][1][0][1][0]as $crl)
+							{
+								if(substr($crl[1],0,4) == 'http' || substr($crl[1],0,4) == 'ldap')
+									{
+										$ret[] = $crl[1];
+									}
+							}
+					  }
+			}
+			
                 return array('CRLDISTRIBUTIONPOINTS' => $ret);
 	}	
