Skip to content

Commit

Permalink
Base64 encode serialized publicKeyDetail (#190)
Browse files Browse the repository at this point in the history
* base64 serialized publicKeyDetail

* serialization test
  • Loading branch information
jszobody authored Jun 28, 2024
1 parent cd62f2a commit d997f89
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/SslCertificate.php
Original file line number Diff line number Diff line change
Expand Up @@ -333,4 +333,15 @@ public function isPreCertificate(): bool

return true;
}

public function __serialize(): array {
$data = $this->toArray();
$data['publicKeyDetail'] = base64_encode(serialize($data['publicKeyDetail']));
return $data;
}

public function __unserialize($data): void {
$data['publicKeyDetail'] = unserialize(base64_decode($data['publicKeyDetail']));
$this->__construct(...$data);
}
}
28 changes: 28 additions & 0 deletions tests/SslCertificateSerializationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

use Carbon\Carbon;
use Spatie\SslCertificate\SslCertificate;

it('cannot json encode certificate array data', function() {
json_encode(
SslCertificate::createFromFile(__DIR__ . '/stubs/spatieCertificate.pem')->toArray()
);

expect(json_last_error_msg())->toEqual('Malformed UTF-8 characters, possibly incorrectly encoded');
});

it('can json encode serialized certificate', function() {
$json = json_encode(
serialize(SslCertificate::createFromFile(__DIR__ . '/stubs/spatieCertificate.pem'))
);

expect(json_last_error_msg())->toEqual('No error');
});

it('can unserialize serialized certificate', function() {
$serialized = serialize(SslCertificate::createFromFile(__DIR__ . '/stubs/spatieCertificate.pem'));

$unserialized = unserialize($serialized);

expect($unserialized->getDomain())->toEqual("analytics.spatie.be");
});

0 comments on commit d997f89

Please sign in to comment.