Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Sped Common Laravel Package

nfephp-org/sped-common

Biblioteca PHP com classes utilitárias compartilhadas para os projetos SPED da nfephp-org: NFe, CTe, MDFe, e-Financeira, eSfinge e eSocial. Reúne componentes comuns para facilitar integrações e reutilização de código.

View on GitHub
Deep Wiki
Context7

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";
}

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log