aaguid = $aaguid; $this->credentialId = $credentialId; $this->credentialPublicKey = $credentialPublicKey; } public function getAaguid(): UuidInterface { return $this->aaguid; } public function setAaguid(UuidInterface $aaguid): void { $this->aaguid = $aaguid; } public function getCredentialId(): string { return $this->credentialId; } public function getCredentialPublicKey(): ?string { return $this->credentialPublicKey; } /** * @param mixed[] $json */ public static function createFromArray(array $json): self { Assertion::keyExists($json, 'aaguid', 'Invalid input. "aaguid" is missing.'); Assertion::keyExists($json, 'credentialId', 'Invalid input. "credentialId" is missing.'); switch (true) { case 36 === mb_strlen($json['aaguid'], '8bit'): $uuid = Uuid::fromString($json['aaguid']); break; default: // Kept for compatibility with old format $decoded = base64_decode($json['aaguid'], true); $uuid = Uuid::fromBytes($decoded); } $credentialId = base64_decode($json['credentialId'], true); $credentialPublicKey = null; if (isset($json['credentialPublicKey'])) { $credentialPublicKey = base64_decode($json['credentialPublicKey'], true); } return new self( $uuid, $credentialId, $credentialPublicKey ); } /** * @return mixed[] */ public function jsonSerialize(): array { $result = [ 'aaguid' => $this->aaguid->toString(), 'credentialId' => base64_encode($this->credentialId), ]; if (null !== $this->credentialPublicKey) { $result['credentialPublicKey'] = base64_encode($this->credentialPublicKey); } return $result; } }