Changeset 1574 for trunk/security/classes/funcoes_auxiliares.php
- Timestamp:
- 11/03/09 16:23:16 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/security/classes/funcoes_auxiliares.php
r1174 r1574 1388 1388 // Unknown 1389 1389 $result[] = 'UNKNOWN' . $data;; 1390 //file_put_contents('/opt/lampp/htdocs/se curity/temp/arquivo_desconhecido.txt',$data);1390 //file_put_contents('/opt/lampp/htdocs/seguranca/temp/arquivo_desconhecido.txt',$data); 1391 1391 $data = ''; 1392 1392 break; … … 1423 1423 1424 1424 1425 function 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 1450 function 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 1425 1460 function recupera_dados_oid($certificado_digital_formato_der, $oid) 1426 1461 { 1427 1462 // 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); 1463 $oid_hexa = OIDtoHex($oid); // converte oid de texto para hexadecimal ... 1429 1464 $partes = explode($oid_hexa,$certificado_digital_formato_der); // Faz o split pela oid... 1430 $ret = array();1465 $retr = array(); 1431 1466 if(count($partes)>1) 1432 1467 { … … 1437 1472 $xcv3 = substr($partes[$i-1],strlen($partes[$i-1])-3,3); // recupera da primeira parte os 3 ultimos digitos... 1438 1473 $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 } 1439 1497 if($xcv4[0] == chr(0x30)) 1440 1498 { 1441 1499 $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] != '') 1446 1503 { 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 } 1460 1508 } 1461 1509 } 1462 return $ret ;1510 return $retr; 1463 1511 } 1464 1512
Note: See TracChangeset
for help on using the changeset viewer.