PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.4.1
Defender Security – Malware Scanner, Login Security & Firewall v5.4.1
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / vendor / web-auth / cose-lib / src / Algorithm / Signature / EdDSA / EdDSA.php

EdDSA.php in Defender Security – Malware Scanner, Login Security & Firewall 5.4.1, at vendor/web-auth/cose-lib/src/Algorithm/Signature/EdDSA/EdDSA.php

66 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 /*
6 * The MIT License (MIT)
7 *
8 * Copyright (c) 2014-2021 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 }
66