Completed
Push — master ( 7aad34...96e43e )
by Florent
02:35
created

ECDHESAESKW::getWrapper()

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 1
nc 1
1
<?php
2
3
/*
4
 * The MIT License (MIT)
5
 *
6
 * Copyright (c) 2014-2016 Spomky-Labs
7
 *
8
 * This software may be modified and distributed under the terms
9
 * of the MIT license.  See the LICENSE file for details.
10
 */
11
12
namespace Jose\Algorithm\KeyEncryption;
13
14
use Jose\Object\JWKInterface;
15
16
/**
17
 * Class ECDHESAESKW.
18
 */
19
abstract class ECDHESAESKW implements KeyAgreementWrappingInterface
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24
    public function wrapAgreementKey(JWKInterface $sender_key, JWKInterface $receiver_key, $cek, $encryption_key_length, array $complete_header, array &$additional_header_values)
25
    {
26
        $ecdh_es = new ECDHES();
27
28
        $agreement_key = $ecdh_es->getAgreementKey($encryption_key_length, $sender_key, $receiver_key, $complete_header, $additional_header_values);
29
        $wrapper = $this->getWrapper();
30
31
        return $wrapper->wrap($agreement_key, $cek);
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function unwrapAgreementKey(JWKInterface $receiver_key, $encrypted_cek, $encryption_key_length, array $complete_header)
38
    {
39
        $ecdh_es = new ECDHES();
40
41
        $agreement_key = $ecdh_es->getAgreementKey($encryption_key_length, $receiver_key, null, $complete_header);
42
        $wrapper = $this->getWrapper();
43
44
        return $wrapper->unwrap($agreement_key, $encrypted_cek);
45
    }
46
47
    /**
48
     * {@inheritdoc}
49
     */
50
    public function getKeyManagementMode()
51
    {
52
        return self::MODE_WRAP;
53
    }
54
55
    /**
56
     * @return \AESKW\A128KW|\AESKW\A192KW|\AESKW\A256KW
57
     */
58
    abstract protected function getWrapper();
59
}
60