Weave Code
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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor