[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare(strict_types=1); 4 5 /* 6 * The MIT License (MIT) 7 * 8 * Copyright (c) 2014-2019 Spomky-Labs 9 * 10 * This software may be modified and distributed under the terms 11 * of the MIT license. See the LICENSE file for details. 12 */ 13 14 namespace Cose\Algorithm\Signature\EdDSA; 15 16 use Assert\Assertion; 17 use Cose\Algorithm\Signature\Signature; 18 use Cose\Algorithms; 19 use Cose\Key\Key; 20 use Cose\Key\OkpKey; 21 use InvalidArgumentException; 22 use function sodium_crypto_sign_detached; 23 use function sodium_crypto_sign_verify_detached; 24 25 class EdDSA implements Signature 26 { 27 public function sign(string $data, Key $key): string 28 { 29 $key = $this->handleKey($key); 30 Assertion::true($key->isPrivate(), 'The key is not private'); 31 32 $x = $key->x(); 33 $d = $key->d(); 34 $secret = $d.$x; 35 36 switch ($key->curve()) { 37 case OkpKey::CURVE_ED25519: 38 return sodium_crypto_sign_detached($data, $secret); 39 default: 40 throw new InvalidArgumentException('Unsupported curve'); 41 } 42 } 43 44 public function verify(string $data, Key $key, string $signature): bool 45 { 46 $key = $this->handleKey($key); 47 48 switch ($key->curve()) { 49 case OkpKey::CURVE_ED25519: 50 return sodium_crypto_sign_verify_detached($signature, $data, $key->x()); 51 default: 52 throw new InvalidArgumentException('Unsupported curve'); 53 } 54 } 55 56 public static function identifier(): int 57 { 58 return Algorithms::COSE_ALGORITHM_EdDSA; 59 } 60 61 private function handleKey(Key $key): OkpKey 62 { 63 return new OkpKey($key->getData()); 64 } 65 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |