Changeset 3352 for branches/2.2
- Timestamp:
- 10/14/10 11:23:45 (13 years ago)
- Location:
- branches/2.2/expressoMail1_2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2/expressoMail1_2/inc/class.imap_functions.inc.php
r3298 r3352 1258 1258 function get_signature($msg, $msg_number, $msg_folder) 1259 1259 { 1260 include_once(dirname( __FILE__ ) ."/../../security/classes/CertificadoB.php"); 1261 include_once("class.db_functions.inc.php"); 1262 foreach ($msg->file_type[$msg_number] as $index => $file_type) 1263 { 1264 $sign = array(); 1265 $temp = $this->get_info_head_msg($msg_number); 1266 if($temp['ContentType'] =='normal') return $sign; 1267 $file_type = strtolower($file_type); 1268 if(strtolower($msg->encoding[$msg_number][$index]) == 'base64') 1260 include_once(dirname( __FILE__ ) ."/../../security/classes/CertificadoB.php"); 1261 include_once("class.db_functions.inc.php"); 1262 foreach ($msg->file_type[$msg_number] as $index => $file_type) 1263 { 1264 $sign = array(); 1265 $temp = $this->get_info_head_msg($msg_number); 1266 if($temp['ContentType'] =='normal') return $sign; 1267 $file_type = strtolower($file_type); 1268 if(strtolower($msg->encoding[$msg_number][$index]) == 'base64') 1269 { 1270 if ($file_type == 'application/x-pkcs7-signature' || $file_type == 'application/pkcs7-signature') 1271 { 1272 if(!$this->mbox || !is_resource($this->mbox)) 1273 $this->mbox = $this->open_mbox($msg_folder); 1274 1275 $header = @imap_headerinfo($this->mbox, imap_msgno($this->mbox, $msg_number), 80, 255); 1276 1277 $imap_msg = @imap_fetchheader($this->mbox, $msg_number, FT_UID); 1278 $imap_msg .= @imap_body($this->mbox, $msg_number, FT_UID); 1279 1280 $certificado = new certificadoB(); 1281 $validade = $certificado->verificar($imap_msg); 1282 1283 if ($certificado->apresentado) 1269 1284 { 1270 if ($file_type == 'application/x-pkcs7-signature' || $file_type == 'application/pkcs7-signature') 1271 { 1272 if(!$this->mbox || !is_resource($this->mbox)) 1273 $this->mbox = $this->open_mbox($msg_folder); 1274 1275 $header = @imap_headerinfo($this->mbox, imap_msgno($this->mbox, $msg_number), 80, 255); 1276 1277 $imap_msg = @imap_fetchheader($this->mbox, $msg_number, FT_UID); 1278 $imap_msg .= @imap_body($this->mbox, $msg_number, FT_UID); 1279 1280 $certificado = new certificadoB(); 1281 $validade = $certificado->verificar($imap_msg); 1282 1283 if ($certificado->apresentado) 1284 { 1285 $from = $header->from; 1286 foreach ($from as $id => $object) { 1287 $fromname = $object->personal; 1288 $fromaddress = $object->mailbox . "@" . $object->host; 1289 } 1290 $sign_alert = ''; 1291 foreach ($certificado->erros_ssl as $item) 1292 { 1293 $check_error_msg = $this->functions->getLang($item); 1294 /* 1295 * Desabilite o teste abaixo para mostrar todas as mensagem 1296 * de erro. 1297 */ 1298 //if (!strpos($check_error_msg,'*',strlen($check_error_msg-1))) 1299 //{ 1300 $sign[] = "<span style=color:red>" . $check_error_msg . " </span>"; 1301 //} 1302 } 1303 if (count($certificado->erros_ssl) < 1) 1304 { 1305 $check_msg = $this->functions->getLang('Message untouched') . " "; 1306 if(strtoupper($fromaddress) != strtoupper($certificado->dados['EMAIL'])) 1307 { 1308 $check_msg .= $this->functions->getLang('and') . " "; 1309 $check_msg .= $this->functions->getLang('authentic'); 1310 } 1311 $sign[] = "<strong>".$check_msg."</strong>"; 1312 } 1313 if(strtoupper($fromaddress) != strtoupper($certificado->dados['EMAIL'])) 1314 { 1315 $sign[] = "<span style=color:red>" . 1316 $this->functions->getLang('message') . " " . 1317 $this->functions->getLang('with signer different from sender') . 1318 " </span>"; 1319 } 1320 $sign[] = "<strong>" . $this->functions->getLang('Message signed by: ') . "</strong>" . $certificado->dados['NOME']; 1321 $sign[] = "<strong>" . $this->functions->getLang('Certificate email: ') . "</strong>" . $certificado->dados['EMAIL']; 1322 $sign[] = "<strong>" . $this->functions->getLang('Mail from: ') . "</strong>" . $fromaddress; 1323 $sign[] = "<strong>" . $this->functions->getLang('Certificate Authority: ') . "</strong>" . $certificado->dados['EMISSOR']; 1324 $sign[] = "<strong>" . $this->functions->getLang('Validity of certificate: ') . "</strong>" . gmdate('r',openssl_to_timestamp($certificado->dados['FIM_VALIDADE'])); 1325 $sign[] = "<strong>" . $this->functions->getLang('Message date: ') . "</strong>" . $header->Date; 1326 1327 $cert = openssl_x509_parse($certificado->cert_assinante); 1328 /* 1329 $sign[] = '<table>'; 1330 $sign[] = '<tr><td colspan=1><b>Expedido para:</b></td></tr>'; 1331 $sign[] = '<tr><td>Nome Comum (CN) </td><td>' . $cert[subject]['CN'] . '</td></tr>'; 1332 $X = substr($certificado->dados['NASCIMENTO'] ,0,2) . '-' . substr($certificado->dados['NASCIMENTO'] ,2,2) . '-' . substr($certificado->dados['NASCIMENTO'] ,4,4); 1333 $sign[] = '<tr><td>Data de nascimento </td><td>' . $certificado->dados['NASCIMENTO'] . '</td></tr>'; 1334 $sign[] = '<tr><td>CPF </td><td>' . $certificado->dados['CPF'] . '</td></tr>'; 1335 $sign[] = '<tr><td>Documento identidade </td><td>' . $certificado->dados['RG'] . '</td></tr>'; 1336 $sign[] = '<tr><td>Empresa (O) </td><td>' . $cert[subject]['O'] . '</td></tr>'; 1337 $sign[] = '<tr><td>Unidade Organizacional (OU) </td><td>' . $cert[subject]['OU'][0] . '</td></tr>'; 1338 //$sign[] = '<tr><td>Numero de serie </td><td>' . $cert['serialNumber'] . '</td></tr>'; 1339 $sign[] = '<tr><td colspan=1> </td></tr>'; 1340 $sign[] = '<tr><td colspan=1><b>Expedido por:</b></td></tr>'; 1341 $sign[] = '<tr><td>Nome Comum (CN) </td><td>' . $cert[issuer]['CN'] . '</td></tr>'; 1342 $sign[] = '<tr><td>Empresa (O) </td><td>' . $cert[issuer]['O'] . '</td></tr>'; 1343 $sign[] = '<tr><td>Unidade Organizacional (OU) </td><td>' . $cert[issuer]['OU'][0] . '</td></tr>'; 1344 $sign[] = '<tr><td colspan=1> </td></tr>'; 1345 $sign[] = '<tr><td colspan=1><b>Validade:</b></td></tr>'; 1346 $H = data_hora($cert[validFrom]); 1347 $X = substr($H,6,2) . '-' . substr($H,4,2) . '-' . substr($H,0,4); 1348 $sign[] = '<tr><td>Expedido em </td><td>' . $X . '</td></tr>'; 1349 $H = data_hora($cert[validTo]); 1350 $X = substr($H,6,2) . '-' . substr($H,4,2) . '-' . substr($H,0,4); 1351 $sign[] = '<tr><td>Valido ate </td><td>' . $X . '</td></tr>'; 1352 $sign[] = '<tr><td colspan=1> </td></tr>'; 1353 $sign[] = '</table>'; 1354 */ 1355 $sign_alert .= 'Expedido para:\n'; 1356 $sign_alert .= 'Nome Comum (CN) ' . $cert[subject]['CN'] . '\n'; 1357 $X = substr($certificado->dados['NASCIMENTO'] ,0,2) . '-' . substr($certificado->dados['NASCIMENTO'] ,2,2) . '-' . substr($certificado->dados['NASCIMENTO'] ,4,4); 1358 $sign_alert .= 'Data de nascimento ' . $X . '\n'; 1359 $sign_alert .= 'CPF ' . $certificado->dados['CPF'] . '\n'; 1360 $sign_alert .= 'Documento identidade ' . $certificado->dados['RG'] . '\n'; 1361 $sign_alert .= 'Empresa (O) ' . $cert[subject]['O'] . '\n'; 1362 $sign_alert .= 'Unidade Organizacional (OU) ' . $cert[subject]['OU'][0] . '\n'; 1363 //$sign_alert[] = '<tr><td>Numero de serie </td><td>' . $cert['serialNumber'] . '</td></tr>'; 1364 $sign_alert .= '\n'; 1365 $sign_alert .= 'Expedido por:\n'; 1366 $sign_alert .= 'Nome Comum (CN) ' . $cert[issuer]['CN'] . '\n'; 1367 $sign_alert .= 'Empresa (O) ' . $cert[issuer]['O'] . '\n'; 1368 $sign_alert .= 'Unidade Organizacional (OU) ' . $cert[issuer]['OU'][0] . '\n'; 1369 $sign_alert .= '\n'; 1370 $sign_alert .= 'Validade:\n'; 1371 $H = data_hora($cert[validFrom]); 1372 $X = substr($H,6,2) . '-' . substr($H,4,2) . '-' . substr($H,0,4); 1373 $sign_alert .= 'Expedido em ' . $X . '\n'; 1374 $H = data_hora($cert[validTo]); 1375 $X = substr($H,6,2) . '-' . substr($H,4,2) . '-' . substr($H,0,4); 1376 $sign_alert .= 'Valido ate ' . $X . '\n'; 1377 1378 $sign[] = "<a onclick=\"javascript:alert('" . $sign_alert . "')\"><b><font color=\"#0000FF\">".$this->functions->getLang("More")."...</font></b></a>"; 1379 $this->db = new db_functions(); 1380 1381 // TODO: testar se existe um certificado no banco e verificar qual ï¿œ o mais atual. 1382 if(!$certificado->dados['EXPIRADO'] && !$certificado->dados['REVOGADO'] && count($certificado->erros_ssl) < 1) 1383 $this->db->insert_certificate(strtolower($certificado->dados['EMAIL']), $certificado->cert_assinante, $certificado->dados['SERIALNUMBER'], $certificado->dados['AUTHORITYKEYIDENTIFIER']); 1384 } 1385 else 1386 { 1387 $sign[] = "<span style=color:red>" . $this->functions->getLang('Invalid signature') . "</span>"; 1388 foreach($certificado->erros_ssl as $item) 1389 $sign[] = "<span style=color:red>" . $this->functions->getLang($item) . "</span>"; 1285 $from = $header->from; 1286 foreach ($from as $id => $object) 1287 { 1288 $fromname = $object->personal; 1289 $fromaddress = $object->mailbox . "@" . $object->host; 1290 } 1291 foreach ($certificado->erros_ssl as $item) 1292 { 1293 $sign[] = $item . "#@#"; 1294 } 1295 1296 if (count($certificado->erros_ssl) < 1) 1297 { 1298 $check_msg = 'Message untouched'; 1299 if(strtoupper($fromaddress) == strtoupper($certificado->dados['EMAIL'])) 1300 { 1301 $check_msg .= ' and authentic###'; 1302 } 1303 else 1304 { 1305 $check_msg .= ' with signer different from sender#@#'; 1306 } 1307 $sign[] = $check_msg; 1308 } 1309 1310 $sign[] = 'Message signed by: ###' . $certificado->dados['NOME']; 1311 $sign[] = 'Certificate email: ###' . $certificado->dados['EMAIL']; 1312 $sign[] = 'Mail from: ###' . $fromaddress; 1313 $sign[] = 'Certificate Authority: ###' . $certificado->dados['EMISSOR']; 1314 $sign[] = 'Validity of certificate: ###' . gmdate('r',openssl_to_timestamp($certificado->dados['FIM_VALIDADE'])); 1315 $sign[] = 'Message date: ###' . $header->Date; 1316 1317 $cert = openssl_x509_parse($certificado->cert_assinante); 1318 1319 $sign_alert = array(); 1320 $sign_alert[] = 'Certificate Owner###:\n'; 1321 $sign_alert[] = 'Common Name (CN)### ' . $cert[subject]['CN'] . '\n'; 1322 $X = substr($certificado->dados['NASCIMENTO'] ,0,2) . '-' . substr($certificado->dados['NASCIMENTO'] ,2,2) . '-' . substr($certificado->dados['NASCIMENTO'] ,4,4); 1323 $sign_alert[]= 'Organization (O)### ' . $cert[subject]['O'] . '\n'; 1324 $sign_alert[]= 'Organizational Unit (OU)### ' . $cert[subject]['OU'][0] . '\n'; 1325 //$sign_alert[] = 'Serial Number### ' . $cert['serialNumber'] . '\n'; 1326 $sign_alert[] = 'Personal Data###:' . '\n'; 1327 $sign_alert[] = 'Birthday### ' . $X . '\n'; 1328 $sign_alert[]= 'Fiscal Id### ' . $certificado->dados['CPF'] . '\n'; 1329 $sign_alert[]= 'Identification### ' . $certificado->dados['RG'] . '\n\n'; 1330 $sign_alert[]= 'Certificate Issuer###:\n'; 1331 $sign_alert[]= 'Common Name (CN)### ' . $cert[issuer]['CN'] . '\n'; 1332 $sign_alert[]= 'Organization (O)### ' . $cert[issuer]['O'] . '\n'; 1333 $sign_alert[]= 'Organizational Unit (OU)### ' . $cert[issuer]['OU'][0] . '\n\n'; 1334 $sign_alert[]= 'Validity###:\n'; 1335 $H = data_hora($cert[validFrom]); 1336 $X = substr($H,6,2) . '-' . substr($H,4,2) . '-' . substr($H,0,4); 1337 $sign_alert[]= 'Valid From### ' . $X . '\n'; 1338 $H = data_hora($cert[validTo]); 1339 $X = substr($H,6,2) . '-' . substr($H,4,2) . '-' . substr($H,0,4); 1340 $sign_alert[]= 'Valid Until### ' . $X; 1341 $sign[] = $sign_alert; 1342 1343 $this->db = new db_functions(); 1344 1345 // TODO: testar se existe um certificado no banco e verificar qual ï¿œ o mais atual. 1346 if(!$certificado->dados['EXPIRADO'] && !$certificado->dados['REVOGADO'] && count($certificado->erros_ssl) < 1) 1347 $this->db->insert_certificate(strtolower($certificado->dados['EMAIL']), $certificado->cert_assinante, $certificado->dados['SERIALNUMBER'], $certificado->dados['AUTHORITYKEYIDENTIFIER']); 1348 } 1349 else 1350 { 1351 $sign[] = "<span style=color:red>" . $this->functions->getLang('Invalid signature') . "</span>"; 1352 foreach($certificado->erros_ssl as $item) 1353 $sign[] = "<span style=color:red>" . $this->functions->getLang($item) . "</span>"; 1354 } 1390 1355 } 1391 } 1392 } 1393 } 1394 return $sign; 1356 } 1357 } 1358 return $sign; 1395 1359 } 1396 1360 … … 1502 1466 * não preciso reimplementar o método utilizando o fetchheader. 1503 1467 */ 1468 1504 1469 $tempHeader = @imap_fetchheader($this->mbox, imap_msgno($this->mbox, $msg_number)); 1505 1470 $flag = preg_match('/importance *: *(.*)\r/i', $tempHeader, $importance); -
branches/2.2/expressoMail1_2/js/draw_api.js
r3287 r3352 18 18 } 19 19 var currentTab,numBox = 0; // Open Tab and num of mailboxes opened at context 20 21 20 // Objeto Map, talvez o ideal fosse adicionar este objeto à Api do egroupware, e carregá-lo 22 21 // aqui no expressoMail. … … 1478 1477 if (info_msg.signature && info_msg.signature.length > 0) 1479 1478 { 1480 var tr_signature = document.createElement("TR"); 1481 var td_signature = document.createElement("TD"); 1482 td_signature.className = 'tr_message_header'; 1483 tr_signature.id = 'tr_signature_'+ID; 1484 td_signature.colSpan = "5"; 1485 tr_signature.style.display = 'none'; 1486 1487 for (i in info_msg.signature) 1488 td_signature.innerHTML += '<span>'+info_msg.signature[i]+'</span> <br /> '; 1489 //var signature_status_pos = info_msg.signature[0].indexOf(get_lang('Message untouched')); 1490 var signature_status_pos = info_msg.signature[0].indexOf('Message untouched'); 1491 td_signature.id = "td_signature_"+ID; 1492 if(signature_status_pos < 0 ) 1493 { 1494 td.innerHTML += ' <img style="cursor:pointer" src="templates/'+template+'/images/signed_error.gif" title="'+get_lang("Details")+'">'; 1495 tr_signature.style.display = ''; 1496 } 1497 else 1498 { 1499 td.innerHTML += ' <img style="cursor:pointer" src="templates/'+template+'/images/signed_table.gif" title="'+get_lang("Details")+'">'; 1500 } 1501 td.onclick = function(){ 1502 var _height = Element("div_message_scroll_"+ID).style.height; 1503 _height = parseInt(_height.replace("px","")); 1504 var _offset = 130; 1505 if (this.value == 'more_cert'){ 1506 //this.innerHTML += "<b><u>Mais Informaᅵᅵes</u></b>"; 1507 this.value = 'hide_cert'; 1508 Element("div_message_scroll_"+ID).style.height = (_height + _offset)+"px"; 1509 Element('tr_signature_'+ID).style.display = 'none'; 1510 Element('td_signature_'+ID).style.display = 'none'; 1511 1512 } 1513 else{ 1514 //this.innerHTML += "Mais Informaᅵᅵes"; 1515 this.value = 'more_cert'; 1516 Element("div_message_scroll_"+ID).style.height = (_height - _offset)+"px"; 1517 Element('tr_signature_'+ID).style.display = ''; 1518 Element('td_signature_'+ID).style.display = ''; 1519 } 1479 var tr_signature = document.createElement("TR"); 1480 var td_signature = document.createElement("TD"); 1481 td_signature.className = 'tr_message_header'; 1482 tr_signature.id = 'tr_signature_'+ID; 1483 td_signature.colSpan = "5"; 1484 tr_signature.style.display = 'none'; 1485 for (i in info_msg.signature) 1486 { 1487 if(typeof(info_msg.signature[i]) == 'object') 1488 { 1489 var aux = ''; 1490 for (ii in info_msg.signature[i]) 1491 { 1492 if(info_msg.signature[i][ii].indexOf("###") > -1) 1493 { 1494 aux += get_lang(info_msg.signature[i][ii].substring(0,info_msg.signature[i][ii].indexOf("###"))) + info_msg.signature[i][ii].substring(info_msg.signature[i][ii].indexOf("###")+3); 1495 } 1496 else 1497 { 1498 aux += info_msg.signature[i][ii]; 1499 } 1500 } 1501 td_signature.innerHTML += "<a onclick=\"javascript:alert('" + aux + "')\"><b><font color=\"#0000FF\">" + get_lang("More") + "...</font></b></a>"; 1502 continue; 1503 } 1504 if(info_msg.signature[i].indexOf("#@#") > -1) 1505 { 1506 td_signature.innerHTML += '<span style=color:red><strong>'+get_lang(info_msg.signature[i].substring(0,info_msg.signature[i].indexOf("#@#")))+'</strong> '+info_msg.signature[i].substring(info_msg.signature[i].indexOf("#@#")+3)+'</span> <br /> '; 1507 } 1508 if(info_msg.signature[i].indexOf("###") > -1) 1509 { 1510 td_signature.innerHTML += '<span><strong>'+get_lang(info_msg.signature[i].substring(0,info_msg.signature[i].indexOf("###")))+'</strong> '+info_msg.signature[i].substring(info_msg.signature[i].indexOf("###")+3)+'</span> <br /> '; 1511 } 1512 } 1513 var signature_status_pos = info_msg.signature[0].indexOf('Message untouched'); 1514 td_signature.id = "td_signature_"+ID; 1515 if(signature_status_pos < 0 ) 1516 { 1517 td.innerHTML += ' <img style="cursor:pointer" src="templates/'+template+'/images/signed_error.gif" title="'+get_lang("Details")+'">'; 1518 tr_signature.style.display = ''; 1519 } 1520 else 1521 { 1522 td.innerHTML += ' <img style="cursor:pointer" src="templates/'+template+'/images/signed_table.gif" title="'+get_lang("Details")+'">'; 1523 } 1524 td.onclick = function(){ 1525 var _height = Element("div_message_scroll_"+ID).style.height; 1526 _height = parseInt(_height.replace("px","")); 1527 var _offset = 130; 1528 if (this.value == 'more_cert'){ 1529 this.value = 'hide_cert'; 1530 Element("div_message_scroll_"+ID).style.height = (_height + _offset)+"px"; 1531 Element('tr_signature_'+ID).style.display = 'none'; 1532 Element('td_signature_'+ID).style.display = 'none'; 1533 1534 } 1535 else{ 1536 //this.innerHTML += "Mais Informaᅵᅵes"; 1537 this.value = 'more_cert'; 1538 Element("div_message_scroll_"+ID).style.height = (_height - _offset)+"px"; 1539 Element('tr_signature_'+ID).style.display = ''; 1540 Element('td_signature_'+ID).style.display = ''; 1541 } 1520 1542 }; 1521 1543 1522 1523 1544 tr_signature.appendChild(td_signature); 1545 tbody_message_options.appendChild(tr_signature); 1524 1546 } 1525 1547 //////////// END SIGNATURE //////////////// -
branches/2.2/expressoMail1_2/setup/phpgw_en.lang
r1747 r3352 211 211 Message Header expressoMail1_2 en Message Header 212 212 Message marked as expressoMail1_2 en Message marked as 213 Message signed by: expressoMail1_2 pt-br Message signed by: 214 Message untouched expressoMail1_2 pt-br Message untouched 213 Message signed by: expressoMail1_2 en Message signed by: 214 Message untouched expressoMail1_2 en Message untouched 215 Message untouched and authentic expressoMail1_2 en Message untouched and authentic 216 Message untouched with signer different from sender expressoMail1_2 en Message untouched with signer different from sender 215 217 message(s) deleted from your trash folder. expressoMail1_2 en message(s) deleted from your trash folder. 216 218 messages expressoMail1_2 en messages … … 422 424 Rows expressoMail1_2 en Rows 423 425 Cols expressoMail1_2 en Cols 426 Certificate Owner expressoMail1_2 en Certificate Owner 427 Common Name (CN) expressoMail1_2 en Common Name (CN) 428 Organization (O) expressoMail1_2 en Organization (O) 429 Organizational Unit (OU) expressoMail1_2 en Organizational Unit (OU) 430 Personal Data expressoMail1_2 en Personal Data 431 Birthday expressoMail1_2 en Birthday 432 Fiscal Id expressoMail1_2 en Fiscal Id 433 Identification expressoMail1_2 en Identification 434 Certificate Issuer expressoMail1_2 en Certificate Issuer 435 Validity expressoMail1_2 en Validity 436 Valid From expressoMail1_2 en Valid From 437 Valid Until expressoMail1_2 en Valid Until 438 Serial Number expressoMail1_2 en Serial Number -
branches/2.2/expressoMail1_2/setup/phpgw_pt-br.lang
r3298 r3352 297 297 Messages saved in %1 folder. expressoMail1_2 pt-br Mensagens salvas na pasta %1. 298 298 Message untouched expressoMail1_2 pt-br Mensagem Íntegra 299 Message untouched and authentic expressoMail1_2 pt-br Mensagem íntegra e autêntica 300 Message untouched with signer different from sender expressoMail1_2 pt-br Mensagem Íntegra, com e-mail do signatário diferente do remetente 299 301 message without receiver expressoMail1_2 pt-br Você deve fornecer pelo menos um endereço de destinatário de email. 300 302 Message with read notification expressoMail1_2 pt-br Mensagem com confirmação de leitura. … … 593 595 zip mails to import expressoMail1_2 pt-br Arquivo .zip ou .eml: 594 596 Show TO: in place of FROM: only in Automatic SEND folder expressoMail1_2 pt-br Trocar remetente pelo destinatário na coluna QUEM somente na pasta Enviado 597 Certificate Owner expressoMail1_2 en Expedido para 598 Common Name (CN) expressoMail1_2 en Nome Comum (CN) 599 Organization (O) expressoMail1_2 en Empresa (O) 600 Organizational Unit (OU) expressoMail1_2 en Unidade Organizacional (OU) 601 Personal Data expressoMail1_2 en Dados Pessoais 602 Birthday expressoMail1_2 en Data de nascimento 603 Fiscal Id expressoMail1_2 en CPF 604 Identification expressoMail1_2 en Documento identidade 605 Certificate Issuer expressoMail1_2 en Expedido por 606 Validity expressoMail1_2 en Validade 607 Valid From expressoMail1_2 en Expedido em 608 Valid Until expressoMail1_2 en Valido ate 609 Serial Number expressoMail1_2 en Numero de serie
Note: See TracChangeset
for help on using the changeset viewer.