Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
optometrists
/
cache
/
cache
/
cache
/
cache
/
cache
/
cache
/
cache
/
.wp-cli
/
wp-content
/
plugins
/
wp-phpmyadmin-extension
/
lib
/
phpMyAdmin
/
libraries
/
classes
/
WebAuthn
:
DataStream.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare(strict_types=1); namespace PhpMyAdmin\WebAuthn; use function fopen; use function fread; use function ftell; use function fwrite; use function rewind; final class DataStream { /** @var resource */ private $stream; /** * @throws WebAuthnException */ public function __construct(string $binaryString) { $resource = fopen('php://memory', 'rb+'); if ($resource === false || fwrite($resource, $binaryString) === false) { throw new WebAuthnException(); } if (! rewind($resource)) { throw new WebAuthnException(); } $this->stream = $resource; } /** * @throws WebAuthnException */ public function take(int $length): string { if ($length < 0) { throw new WebAuthnException(); } if ($length === 0) { return ''; } $string = fread($this->stream, $length); if ($string === false) { throw new WebAuthnException(); } return $string; } /** * @throws WebAuthnException */ public function getPosition(): int { $position = ftell($this->stream); if ($position === false) { throw new WebAuthnException(); } return $position; } }