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();
|
|
}
|
|
}
|