Ignore:
Timestamp:
11/03/09 16:23:16 (15 years ago)
Author:
rafaelraymundo
Message:

Ticket #699 - Otimização das rotinas de criptografia,
assinatura digital e verificação da mesma.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/security/classes/funcoes_auxiliares.php

    r1174 r1574  
    13881388                                        // Unknown 
    13891389                                        $result[] = 'UNKNOWN' .  $data;; 
    1390                                         //file_put_contents('/opt/lampp/htdocs/security/temp/arquivo_desconhecido.txt',$data); 
     1390                                        //file_put_contents('/opt/lampp/htdocs/seguranca/temp/arquivo_desconhecido.txt',$data); 
    13911391                                        $data = ''; 
    13921392                                        break; 
     
    14231423 
    14241424 
     1425function testa_p7m($msg) 
     1426        { 
     1427                // oids pesquisadas:  
     1428                //                                1.2.840.113549.1.7.2     assinatura digital 
     1429                //                                 1.2.840.113549.1.7.3     envelopeddata 
     1430                $ZZ1 = explode('MIME-Version: 1.0',$msg); 
     1431                $ZZ2 = explode('filename="smime.p7m"',$ZZ1[count($ZZ1)-1]); 
     1432                $ZZ3 = str_replace(' ','',$ZZ2[count($ZZ2)-1]); 
     1433                $p7m_formato_der = base64_decode($ZZ3); 
     1434                $oid_hexa = OIDtoHex('1.2.840.113549.1.7.2');       // converte oid de texto para hexadecimal ... 
     1435                $partes = explode($oid_hexa,$p7m_formato_der);    // Faz o split pela oid... 
     1436                if(count($partes)>1) 
     1437                        { 
     1438                                        return 'signature' ; 
     1439                        } 
     1440                $oid_hexa = OIDtoHex('1.2.840.113549.1.7.3');   
     1441                $partes = explode($oid_hexa,$p7m_formato_der);    // Faz o split pela oid... 
     1442                if(count($partes)>1) 
     1443                        { 
     1444                                        return 'cipher' ; 
     1445                        }                        
     1446                return 'normal'; 
     1447        } 
     1448 
     1449 
     1450function parse_sequence($data) 
     1451        { 
     1452                $len = ord($data[1]); 
     1453                $bytes = 0; 
     1454                get_length(&$len,&$bytes,$data);                  // obtem tamanho da parte de dados da oid. 
     1455                $oid_data = substr($data,2 + $bytes,$len);    // Obtem porcao de bytes pertencentes a oid. 
     1456                $ret =  Crl_parseASN($oid_data);                 // parse dos dados da oid. 
     1457                return $ret; 
     1458        } 
     1459 
    14251460function recupera_dados_oid($certificado_digital_formato_der, $oid) 
    14261461        { 
    14271462                // Esta função assume que a oid esta inserida dentro de uma estrutura do tipo "sequencia" , como primeiro elemento da estrutura... 
    1428                 $oid_hexa = OIDtoHex($oid);                                                        // converte oid de texto para hexadecimal ... 
     1463                $oid_hexa = OIDtoHex($oid);     // converte oid de texto para hexadecimal ... 
    14291464                $partes = explode($oid_hexa,$certificado_digital_formato_der);    // Faz o split pela oid... 
    1430                 $ret = array(); 
     1465                $retr = array(); 
    14311466                if(count($partes)>1) 
    14321467                        { 
     
    14371472                                                $xcv3 = substr($partes[$i-1],strlen($partes[$i-1])-3,3); // recupera da primeira parte os 3 ultimos digitos... 
    14381473                                                $xcv2 = substr($partes[$i-1],strlen($partes[$i-1])-2,2); // recupera da primeira parte os 2 ultimos digitos... 
     1474                                                if($xcv2[0] == chr(0x30)) 
     1475                                                        { 
     1476                                                                $xcv = $xcv2; 
     1477                                                                $data = $xcv . $oid_hexa . $partes[$i];           // reconstroi a sequencia.....         
     1478                                                                $ret = parse_sequence($data); 
     1479 
     1480                                                                if($ret[0] != '') 
     1481                                                                        { 
     1482                                                                                $retr[] = $ret; 
     1483                                                                                continue; 
     1484                                                                        } 
     1485                                                        } 
     1486                                                if($xcv3[0] == chr(0x30)) 
     1487                                                        { 
     1488                                                                $xcv = $xcv3; 
     1489                                                                $data = $xcv . $oid_hexa . $partes[$i];           // reconstroi a sequencia.....         
     1490                                                                $ret = parse_sequence($data); 
     1491                                                                if($ret[0] != '') 
     1492                                                                        { 
     1493                                                                                $retr[] = $ret; 
     1494                                                                                continue; 
     1495                                                                        } 
     1496                                                        } 
    14391497                                                if($xcv4[0] == chr(0x30)) 
    14401498                                                        { 
    14411499                                                                $xcv = $xcv4; 
    1442                                                         } 
    1443                                                 else 
    1444                                                         { 
    1445                                                                 if($xcv3[0] == chr(0x30)) 
     1500                                                                $data = $xcv . $oid_hexa . $partes[$i];           // reconstroi a sequencia.....         
     1501                                                                $ret = parse_sequence($data); 
     1502                                                                if($ret[0] != '') 
    14461503                                                                        { 
    1447                                                                                 $xcv = $xcv3; 
    1448                                                                         } 
    1449                                                                 else 
    1450                                                                         { 
    1451                                                                                 $xcv = $xcv2; 
    1452                                                                         } 
    1453                                                         } 
    1454                                                 $data = $xcv . $oid_hexa . $partes[$i];           // reconstroi a sequencia.....                                 
    1455                                                 $len = ord($data[1]); 
    1456                                                 $bytes = 0; 
    1457                                                 get_length(&$len,&$bytes,$data);                  // obtem tamanho da parte de dados da oid. 
    1458                                                 $oid_data = substr($data,2 + $bytes,$len);    // Obtem porcao de bytes pertencentes a oid. 
    1459                                                 $ret[] =  Crl_parseASN($oid_data);                 // parse dos dados da oid. 
     1504                                                                                $retr[] = $ret; 
     1505                                                                                continue; 
     1506                                                                        }                                                                                
     1507                                                        }                                                        
    14601508                                        }  
    14611509                        } 
    1462                 return $ret; 
     1510                return $retr; 
    14631511        } 
    14641512 
Note: See TracChangeset for help on using the changeset viewer.