47 lines
1.2 KiB
PHP
47 lines
1.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Webauthn;
|
||
|
|
||
|
use CBOR\ByteStringObject;
|
||
|
use CBOR\MapItem;
|
||
|
use CBOR\MapObject;
|
||
|
use CBOR\NegativeIntegerObject;
|
||
|
use CBOR\UnsignedIntegerObject;
|
||
|
|
||
|
class U2FPublicKey
|
||
|
{
|
||
|
public static function isU2FKey($publicKey): bool
|
||
|
{
|
||
|
return $publicKey[0] === "\x04";
|
||
|
}
|
||
|
|
||
|
public static function createCOSEKey($publicKey): string
|
||
|
{
|
||
|
|
||
|
$mapObject = new MapObject([
|
||
|
1 => MapItem::create(
|
||
|
new UnsignedIntegerObject(1, null),
|
||
|
new UnsignedIntegerObject(2, null)
|
||
|
),
|
||
|
3 => MapItem::create(
|
||
|
new UnsignedIntegerObject(3, null),
|
||
|
new NegativeIntegerObject(6, null)
|
||
|
),
|
||
|
-1 => MapItem::create(
|
||
|
new NegativeIntegerObject(0, null),
|
||
|
new UnsignedIntegerObject(1, null)
|
||
|
),
|
||
|
-2 => MapItem::create(
|
||
|
new NegativeIntegerObject(1, null),
|
||
|
new ByteStringObject(substr($publicKey, 1, 32))
|
||
|
),
|
||
|
-3 => MapItem::create(
|
||
|
new NegativeIntegerObject(2, null),
|
||
|
new ByteStringObject(substr($publicKey, 33))
|
||
|
),
|
||
|
]);
|
||
|
|
||
|
return $mapObject->__toString();
|
||
|
}
|
||
|
}
|