Skip to content

Latest commit

 

History

History
executable file
·
102 lines (63 loc) · 2.92 KB

PublicKey.md

File metadata and controls

executable file
·
102 lines (63 loc) · 2.92 KB

NFePHP\Common\Certificate\PublicKey::class

Esta classe irá conter e representar um certificado digital (ou seja sua CHAVE PÚBLICA).

A chave publica é usada entre outras finalidades para validar uma assinatura digial.

FORMA DE USO

use NFePHP\Common\Certificate\PublicKey;

//$content = conteúdo da chave publica em uma string

//carregando a classe pelo método direto
$pubKey = new PublicKey($content);

//ou usando o método estatico
$pubKey = PublicKey::createFromContent($content);

MÉTODOS

function __construct($publicKey):this

Método construtor, recebe como parâmetro a chave publica (certificado) em formato PEM

Vide FORMA DE USO

function __toString():string

Este método retorna a chave publica como uma string

static function createFromContent($content):PublicKey::class

Este método instância de forma estatica a classe

echo "{$pubKey}";

function isExpired():bool

Este método retorna TRUE caso o certificado esteja expirado ou FALSE caso ainda seja válido.

if ($pubKey->isExpired()) {
    echo "Certificado INVÁLIDO! Validade Expirada";
} else {
    echo "Válido";
}

function unFormated():string

Este método retorna a chave publica sem as quebras de linhas e sem os marcadores "BEGIN" e "END", ou seja apenas a chave propriamente dita em formto PEM, para poder ser inclusa nos XML assinados ou para outros propositos.

Normalmente um certificado em formato PEM é desta forma (foi omitida boa parte do certificado para fins de apresentação):

-----BEGIN CERTIFICATE----- MIIGoTCCBImgAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1 DQEBAQUAA4ICDwAwggIKAoICAQC6RqQO3edA8rWgfFKVV0X8bYTzhgHJhQOtmKvS . . . . v+Q68wQ2UCzt3h7bhegdhAnu86aDM1tvR3lPSLX8uCYTq6qz9GER+0Vn8x0+bv4q qaVtJ8z2KqLRX4Vv4EadqtKlTlUO -----END CERTIFICATE-----

E sem sua formatação fica assim (foi omitida boa parte do certificado para fins de apresentação):

MIIGoTCCBImgAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx ....

$unformatedCert = $pubKey->unFormated();

function verify($data, $signature, $algorithm = OPENSSL_ALGO_SHA1):bool

Este método verifica a validade de uma assinatura

$data = "dados a serem assinados";
$signature = "rleddaKS731zeLAFuhpXOglVm2UOlAbWxZNvZbNS5NueumeGBSCmxuuYcubUCTgoB+RJzPIzU45eUbfN8B41q+WPWmsyQcWslm7geTyCrWnCJNaYGq5cVJ5eCqTRErQYSo/pBVizDLqyn+UmGUxhn+73sVlPM0kFqiFPpRCmG3azxRD60X48PDi42wvtxbe47FGZuj0XeRqoUvEra2FZPDxoYYrZqvRVHxzZtRpi+Wvp3FcbF+0WsxNgg9xXi4+TgfGDbrOlbx0PxhrvZAWvkKZTiSBKxqvYgeXgIk9KNLkm0UG/u8Gk5DLVEuC3QIdsVcl+dFPapXf0JJIAa4OpjQ==";
//a assinatura foi convertida para base64 pois contêm caracteres binários
if ($pubKey->verify($data, base64_decode($signature), OPENSSL_ALGO_SHA1)) {
    echo "Assinatura Confere !!!";
} else {
    echo "ERRO. A assinatura NÃO confere";
}