Completed
Branch develop (8ddc4a)
by Florent
02:46
created

Recipient::hasHeader()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 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\Object;
13
14
/**
15
 * Class EncryptionInstruction.
16
 */
17
final class Recipient implements RecipientInterface
18
{
19
    /**
20
     * @var array
21
     */
22
    private $headers = [];
23
24
    /**
25
     * @var null|string
26
     */
27
    private $encrypted_key = null;
28
29
    /**
30
     * @var \Jose\Object\JWKInterface
31
     */
32
    private $recipient_key;
33
34
    /**
35
     * @param array  $headers
36
     * @param string $encrypted_key
37
     *
38
     * @return \Jose\Object\Recipient
39
     */
40
    public static function createRecipientFromLoadedJWE(array $headers, $encrypted_key)
41
    {
42
        $recipient = new self();
43
        $recipient->headers = $headers;
44
        $recipient->encrypted_key = $encrypted_key;
45
46
        return $recipient;
47
    }
48
49
    /**
50
     * @param \Jose\Object\JWKInterface $recipient_key
51
     * @param array                     $headers
52
     *
53
     * @return \Jose\Object\Recipient
54
     */
55
    public static function createRecipientForJWEEncryption(JWKInterface $recipient_key, array $headers = [])
56
    {
57
        $recipient = new self();
58
        $recipient->headers = $headers;
59
        $recipient->recipient_key = $recipient_key;
60
61
        return $recipient;
62
    }
63
64
    /**
65
     * {@inheritdoc}
66
     */
67
    public function getHeaders()
68
    {
69
        return $this->headers;
70
    }
71
72
    /**
73
     * {@inheritdoc}
74
     */
75
    public function withHeaders(array $headers)
76
    {
77
        $signature = clone $this;
78
        $signature->headers = $headers;
79
80
        return $signature;
81
    }
82
83
    /**
84
     * {@inheritdoc}
85
     */
86
    public function withHeader($key, $value)
87
    {
88
        $signature = clone $this;
89
        $signature->headers[$key] = $value;
90
91
        return $signature;
92
    }
93
94
    /**
95
     * {@inheritdoc}
96
     */
97
    public function getHeader($key)
98
    {
99
        if ($this->hasHeader($key)) {
100
            return $this->headers[$key];
101
        }
102
        throw new \InvalidArgumentException(sprintf('The header "%s" does not exist.', $key));
103
    }
104
105
    /**
106
     * {@inheritdoc}
107
     */
108
    public function hasHeader($key)
109
    {
110
        return array_key_exists($key, $this->headers);
111
    }
112
113
    /**
114
     * {@inheritdoc}
115
     */
116
    public function getEncryptedKey()
117
    {
118
        return $this->encrypted_key;
119
    }
120
121
    /**
122
     * {@inheritdoc}
123
     */
124
    public function withEncryptedKey($encrypted_key)
125
    {
126
        $recipient = clone $this;
127
        $recipient->encrypted_key = $encrypted_key;
128
129
        return $recipient;
130
    }
131
132
    /**
133
     * {@inheritdoc}
134
     */
135
    public function getRecipientKey()
136
    {
137
        return $this->recipient_key;
138
    }
139
140
    /**
141
     * {@inheritdoc}
142
     */
143
    public function withRecipientKey(JWKInterface $recipient_key)
144
    {
145
        $recipient = clone $this;
146
        $recipient->recipient_key = $recipient_key;
147
148
        return $recipient;
149
    }
150
}
151