GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Test Failed
Pull Request — master (#1)
by thomas
05:34
created
lib/X509/CertificationRequest/Attribute/ExtensionRequestValue.php 2 patches
Indentation   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -16,94 +16,94 @@
 block discarded – undo
16 16
  */
17 17
 class ExtensionRequestValue extends AttributeValue
18 18
 {
19
-    const OID = "1.2.840.113549.1.9.14";
19
+	const OID = "1.2.840.113549.1.9.14";
20 20
     
21
-    /**
22
-     * Extensions.
23
-     *
24
-     * @var Extensions $_extensions
25
-     */
26
-    protected $_extensions;
21
+	/**
22
+	 * Extensions.
23
+	 *
24
+	 * @var Extensions $_extensions
25
+	 */
26
+	protected $_extensions;
27 27
     
28
-    /**
29
-     * Constructor.
30
-     *
31
-     * @param Extensions $extensions
32
-     */
33
-    public function __construct(Extensions $extensions)
34
-    {
35
-        $this->_extensions = $extensions;
36
-        $this->_oid = self::OID;
37
-    }
28
+	/**
29
+	 * Constructor.
30
+	 *
31
+	 * @param Extensions $extensions
32
+	 */
33
+	public function __construct(Extensions $extensions)
34
+	{
35
+		$this->_extensions = $extensions;
36
+		$this->_oid = self::OID;
37
+	}
38 38
     
39
-    /**
40
-     *
41
-     * @see \X501\ASN1\AttributeValue\AttributeValue::fromASN1()
42
-     * @param UnspecifiedType $el
43
-     * @return self
44
-     */
45
-    public static function fromASN1(UnspecifiedType $el)
46
-    {
47
-        return new self(Extensions::fromASN1($el->asSequence()));
48
-    }
39
+	/**
40
+	 *
41
+	 * @see \X501\ASN1\AttributeValue\AttributeValue::fromASN1()
42
+	 * @param UnspecifiedType $el
43
+	 * @return self
44
+	 */
45
+	public static function fromASN1(UnspecifiedType $el)
46
+	{
47
+		return new self(Extensions::fromASN1($el->asSequence()));
48
+	}
49 49
     
50
-    /**
51
-     * Get requested extensions.
52
-     *
53
-     * @return Extensions
54
-     */
55
-    public function extensions(): Extensions
56
-    {
57
-        return $this->_extensions;
58
-    }
50
+	/**
51
+	 * Get requested extensions.
52
+	 *
53
+	 * @return Extensions
54
+	 */
55
+	public function extensions(): Extensions
56
+	{
57
+		return $this->_extensions;
58
+	}
59 59
     
60
-    /**
61
-     *
62
-     * @see \X501\ASN1\AttributeValue\AttributeValue::toASN1()
63
-     * @return \ASN1\Type\Constructed\Sequence
64
-     */
65
-    public function toASN1(): \ASN1\Type\Constructed\Sequence
66
-    {
67
-        return $this->_extensions->toASN1();
68
-    }
60
+	/**
61
+	 *
62
+	 * @see \X501\ASN1\AttributeValue\AttributeValue::toASN1()
63
+	 * @return \ASN1\Type\Constructed\Sequence
64
+	 */
65
+	public function toASN1(): \ASN1\Type\Constructed\Sequence
66
+	{
67
+		return $this->_extensions->toASN1();
68
+	}
69 69
     
70
-    /**
71
-     *
72
-     * @see \X501\ASN1\AttributeValue\AttributeValue::stringValue()
73
-     * @return string
74
-     */
75
-    public function stringValue(): string
76
-    {
77
-        return "#" . bin2hex($this->toASN1()->toDER());
78
-    }
70
+	/**
71
+	 *
72
+	 * @see \X501\ASN1\AttributeValue\AttributeValue::stringValue()
73
+	 * @return string
74
+	 */
75
+	public function stringValue(): string
76
+	{
77
+		return "#" . bin2hex($this->toASN1()->toDER());
78
+	}
79 79
     
80
-    /**
81
-     *
82
-     * @see \X501\ASN1\AttributeValue\AttributeValue::equalityMatchingRule()
83
-     * @return BinaryMatch
84
-     */
85
-    public function equalityMatchingRule(): BinaryMatch
86
-    {
87
-        return new BinaryMatch();
88
-    }
80
+	/**
81
+	 *
82
+	 * @see \X501\ASN1\AttributeValue\AttributeValue::equalityMatchingRule()
83
+	 * @return BinaryMatch
84
+	 */
85
+	public function equalityMatchingRule(): BinaryMatch
86
+	{
87
+		return new BinaryMatch();
88
+	}
89 89
     
90
-    /**
91
-     *
92
-     * @see \X501\ASN1\AttributeValue\AttributeValue::rfc2253String()
93
-     * @return string
94
-     */
95
-    public function rfc2253String(): string
96
-    {
97
-        return $this->stringValue();
98
-    }
90
+	/**
91
+	 *
92
+	 * @see \X501\ASN1\AttributeValue\AttributeValue::rfc2253String()
93
+	 * @return string
94
+	 */
95
+	public function rfc2253String(): string
96
+	{
97
+		return $this->stringValue();
98
+	}
99 99
     
100
-    /**
101
-     *
102
-     * @see \X501\ASN1\AttributeValue\AttributeValue::_transcodedString()
103
-     * @return string
104
-     */
105
-    protected function _transcodedString(): string
106
-    {
107
-        return $this->stringValue();
108
-    }
100
+	/**
101
+	 *
102
+	 * @see \X501\ASN1\AttributeValue\AttributeValue::_transcodedString()
103
+	 * @return string
104
+	 */
105
+	protected function _transcodedString(): string
106
+	{
107
+		return $this->stringValue();
108
+	}
109 109
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationRequest\Attribute;
6 6
 
Please login to merge, or discard this patch.
lib/X509/CertificationRequest/CertificationRequestInfo.php 1 patch
Indentation   +200 added lines, -200 removed lines patch added patch discarded remove patch
@@ -22,204 +22,204 @@
 block discarded – undo
22 22
  */
23 23
 class CertificationRequestInfo
24 24
 {
25
-    const VERSION_1 = 0;
26
-    
27
-    /**
28
-     * Version.
29
-     *
30
-     * @var int
31
-     */
32
-    protected $_version;
33
-    
34
-    /**
35
-     * Subject.
36
-     *
37
-     * @var Name $_subject
38
-     */
39
-    protected $_subject;
40
-    
41
-    /**
42
-     * Public key info.
43
-     *
44
-     * @var PublicKeyInfo $_subjectPKInfo
45
-     */
46
-    protected $_subjectPKInfo;
47
-    
48
-    /**
49
-     * Attributes.
50
-     *
51
-     * @var Attributes|null $_attributes
52
-     */
53
-    protected $_attributes;
54
-    
55
-    /**
56
-     * Constructor.
57
-     *
58
-     * @param Name $subject Subject
59
-     * @param PublicKeyInfo $pkinfo Public key info
60
-     */
61
-    public function __construct(Name $subject, PublicKeyInfo $pkinfo)
62
-    {
63
-        $this->_version = self::VERSION_1;
64
-        $this->_subject = $subject;
65
-        $this->_subjectPKInfo = $pkinfo;
66
-    }
67
-    
68
-    /**
69
-     * Initialize from ASN.1.
70
-     *
71
-     * @param Sequence $seq
72
-     * @throws \UnexpectedValueException
73
-     * @return self
74
-     */
75
-    public static function fromASN1(Sequence $seq)
76
-    {
77
-        $version = $seq->at(0)
78
-            ->asInteger()
79
-            ->number();
80
-        if ($version != self::VERSION_1) {
81
-            throw new \UnexpectedValueException(
82
-                "Version $version not supported.");
83
-        }
84
-        $subject = Name::fromASN1($seq->at(1)->asSequence());
85
-        $pkinfo = PublicKeyInfo::fromASN1($seq->at(2)->asSequence());
86
-        $obj = new self($subject, $pkinfo);
87
-        if ($seq->hasTagged(0)) {
88
-            $obj->_attributes = Attributes::fromASN1(
89
-                $seq->getTagged(0)
90
-                    ->asImplicit(Element::TYPE_SET)
91
-                    ->asSet());
92
-        }
93
-        return $obj;
94
-    }
95
-    
96
-    /**
97
-     * Get version.
98
-     *
99
-     * @return int
100
-     */
101
-    public function version(): int
102
-    {
103
-        return $this->_version;
104
-    }
105
-    
106
-    /**
107
-     * Get self with subject.
108
-     *
109
-     * @param Name $subject
110
-     * @return self
111
-     */
112
-    public function withSubject(Name $subject)
113
-    {
114
-        $obj = clone $this;
115
-        $obj->_subject = $subject;
116
-        return $obj;
117
-    }
118
-    
119
-    /**
120
-     * Get subject.
121
-     *
122
-     * @return Name
123
-     */
124
-    public function subject(): Name
125
-    {
126
-        return $this->_subject;
127
-    }
128
-    
129
-    /**
130
-     * Get subject public key info.
131
-     *
132
-     * @return PublicKeyInfo
133
-     */
134
-    public function subjectPKInfo(): PublicKeyInfo
135
-    {
136
-        return $this->_subjectPKInfo;
137
-    }
138
-    
139
-    /**
140
-     * Whether certification request info has attributes.
141
-     *
142
-     * @return bool
143
-     */
144
-    public function hasAttributes(): bool
145
-    {
146
-        return isset($this->_attributes);
147
-    }
148
-    
149
-    /**
150
-     * Get attributes.
151
-     *
152
-     * @throws \LogicException
153
-     * @return Attributes
154
-     */
155
-    public function attributes(): Attributes
156
-    {
157
-        if (!$this->hasAttributes()) {
158
-            throw new \LogicException("No attributes.");
159
-        }
160
-        return $this->_attributes;
161
-    }
162
-    
163
-    /**
164
-     * Get instance of self with attributes.
165
-     *
166
-     * @param Attributes $attribs
167
-     */
168
-    public function withAttributes(Attributes $attribs)
169
-    {
170
-        $obj = clone $this;
171
-        $obj->_attributes = $attribs;
172
-        return $obj;
173
-    }
174
-    
175
-    /**
176
-     * Get self with extension request attribute.
177
-     *
178
-     * @param Extensions $extensions Extensions to request
179
-     * @return self
180
-     */
181
-    public function withExtensionRequest(Extensions $extensions)
182
-    {
183
-        $obj = clone $this;
184
-        if (!isset($obj->_attributes)) {
185
-            $obj->_attributes = new Attributes();
186
-        }
187
-        $obj->_attributes = $obj->_attributes->withUnique(
188
-            Attribute::fromAttributeValues(
189
-                new ExtensionRequestValue($extensions)));
190
-        return $obj;
191
-    }
192
-    
193
-    /**
194
-     * Generate ASN.1 structure.
195
-     *
196
-     * @return Sequence
197
-     */
198
-    public function toASN1(): Sequence
199
-    {
200
-        $elements = array(new Integer($this->_version),
201
-            $this->_subject->toASN1(), $this->_subjectPKInfo->toASN1());
202
-        if (isset($this->_attributes)) {
203
-            $elements[] = new ImplicitlyTaggedType(0,
204
-                $this->_attributes->toASN1());
205
-        }
206
-        return new Sequence(...$elements);
207
-    }
208
-    
209
-    /**
210
-     * Create signed CertificationRequest.
211
-     *
212
-     * @param SignatureAlgorithmIdentifier $algo Algorithm used for signing
213
-     * @param PrivateKeyInfo $privkey_info Private key used for signing
214
-     * @param Crypto|null $crypto Crypto engine, use default if not set
215
-     * @return CertificationRequest
216
-     */
217
-    public function sign(SignatureAlgorithmIdentifier $algo,
218
-        PrivateKeyInfo $privkey_info, Crypto $crypto = null)
219
-    {
220
-        $crypto = $crypto ?: Crypto::getDefault();
221
-        $data = $this->toASN1()->toDER();
222
-        $signature = $crypto->sign($data, $privkey_info, $algo);
223
-        return new CertificationRequest($this, $algo, $signature);
224
-    }
25
+	const VERSION_1 = 0;
26
+    
27
+	/**
28
+	 * Version.
29
+	 *
30
+	 * @var int
31
+	 */
32
+	protected $_version;
33
+    
34
+	/**
35
+	 * Subject.
36
+	 *
37
+	 * @var Name $_subject
38
+	 */
39
+	protected $_subject;
40
+    
41
+	/**
42
+	 * Public key info.
43
+	 *
44
+	 * @var PublicKeyInfo $_subjectPKInfo
45
+	 */
46
+	protected $_subjectPKInfo;
47
+    
48
+	/**
49
+	 * Attributes.
50
+	 *
51
+	 * @var Attributes|null $_attributes
52
+	 */
53
+	protected $_attributes;
54
+    
55
+	/**
56
+	 * Constructor.
57
+	 *
58
+	 * @param Name $subject Subject
59
+	 * @param PublicKeyInfo $pkinfo Public key info
60
+	 */
61
+	public function __construct(Name $subject, PublicKeyInfo $pkinfo)
62
+	{
63
+		$this->_version = self::VERSION_1;
64
+		$this->_subject = $subject;
65
+		$this->_subjectPKInfo = $pkinfo;
66
+	}
67
+    
68
+	/**
69
+	 * Initialize from ASN.1.
70
+	 *
71
+	 * @param Sequence $seq
72
+	 * @throws \UnexpectedValueException
73
+	 * @return self
74
+	 */
75
+	public static function fromASN1(Sequence $seq)
76
+	{
77
+		$version = $seq->at(0)
78
+			->asInteger()
79
+			->number();
80
+		if ($version != self::VERSION_1) {
81
+			throw new \UnexpectedValueException(
82
+				"Version $version not supported.");
83
+		}
84
+		$subject = Name::fromASN1($seq->at(1)->asSequence());
85
+		$pkinfo = PublicKeyInfo::fromASN1($seq->at(2)->asSequence());
86
+		$obj = new self($subject, $pkinfo);
87
+		if ($seq->hasTagged(0)) {
88
+			$obj->_attributes = Attributes::fromASN1(
89
+				$seq->getTagged(0)
90
+					->asImplicit(Element::TYPE_SET)
91
+					->asSet());
92
+		}
93
+		return $obj;
94
+	}
95
+    
96
+	/**
97
+	 * Get version.
98
+	 *
99
+	 * @return int
100
+	 */
101
+	public function version(): int
102
+	{
103
+		return $this->_version;
104
+	}
105
+    
106
+	/**
107
+	 * Get self with subject.
108
+	 *
109
+	 * @param Name $subject
110
+	 * @return self
111
+	 */
112
+	public function withSubject(Name $subject)
113
+	{
114
+		$obj = clone $this;
115
+		$obj->_subject = $subject;
116
+		return $obj;
117
+	}
118
+    
119
+	/**
120
+	 * Get subject.
121
+	 *
122
+	 * @return Name
123
+	 */
124
+	public function subject(): Name
125
+	{
126
+		return $this->_subject;
127
+	}
128
+    
129
+	/**
130
+	 * Get subject public key info.
131
+	 *
132
+	 * @return PublicKeyInfo
133
+	 */
134
+	public function subjectPKInfo(): PublicKeyInfo
135
+	{
136
+		return $this->_subjectPKInfo;
137
+	}
138
+    
139
+	/**
140
+	 * Whether certification request info has attributes.
141
+	 *
142
+	 * @return bool
143
+	 */
144
+	public function hasAttributes(): bool
145
+	{
146
+		return isset($this->_attributes);
147
+	}
148
+    
149
+	/**
150
+	 * Get attributes.
151
+	 *
152
+	 * @throws \LogicException
153
+	 * @return Attributes
154
+	 */
155
+	public function attributes(): Attributes
156
+	{
157
+		if (!$this->hasAttributes()) {
158
+			throw new \LogicException("No attributes.");
159
+		}
160
+		return $this->_attributes;
161
+	}
162
+    
163
+	/**
164
+	 * Get instance of self with attributes.
165
+	 *
166
+	 * @param Attributes $attribs
167
+	 */
168
+	public function withAttributes(Attributes $attribs)
169
+	{
170
+		$obj = clone $this;
171
+		$obj->_attributes = $attribs;
172
+		return $obj;
173
+	}
174
+    
175
+	/**
176
+	 * Get self with extension request attribute.
177
+	 *
178
+	 * @param Extensions $extensions Extensions to request
179
+	 * @return self
180
+	 */
181
+	public function withExtensionRequest(Extensions $extensions)
182
+	{
183
+		$obj = clone $this;
184
+		if (!isset($obj->_attributes)) {
185
+			$obj->_attributes = new Attributes();
186
+		}
187
+		$obj->_attributes = $obj->_attributes->withUnique(
188
+			Attribute::fromAttributeValues(
189
+				new ExtensionRequestValue($extensions)));
190
+		return $obj;
191
+	}
192
+    
193
+	/**
194
+	 * Generate ASN.1 structure.
195
+	 *
196
+	 * @return Sequence
197
+	 */
198
+	public function toASN1(): Sequence
199
+	{
200
+		$elements = array(new Integer($this->_version),
201
+			$this->_subject->toASN1(), $this->_subjectPKInfo->toASN1());
202
+		if (isset($this->_attributes)) {
203
+			$elements[] = new ImplicitlyTaggedType(0,
204
+				$this->_attributes->toASN1());
205
+		}
206
+		return new Sequence(...$elements);
207
+	}
208
+    
209
+	/**
210
+	 * Create signed CertificationRequest.
211
+	 *
212
+	 * @param SignatureAlgorithmIdentifier $algo Algorithm used for signing
213
+	 * @param PrivateKeyInfo $privkey_info Private key used for signing
214
+	 * @param Crypto|null $crypto Crypto engine, use default if not set
215
+	 * @return CertificationRequest
216
+	 */
217
+	public function sign(SignatureAlgorithmIdentifier $algo,
218
+		PrivateKeyInfo $privkey_info, Crypto $crypto = null)
219
+	{
220
+		$crypto = $crypto ?: Crypto::getDefault();
221
+		$data = $this->toASN1()->toDER();
222
+		$signature = $crypto->sign($data, $privkey_info, $algo);
223
+		return new CertificationRequest($this, $algo, $signature);
224
+	}
225 225
 }
Please login to merge, or discard this patch.
lib/X509/CertificationPath/Exception/PathBuildingException.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath\Exception;
6 6
 
Please login to merge, or discard this patch.
lib/X509/CertificationPath/Exception/PathValidationException.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath\Exception;
6 6
 
Please login to merge, or discard this patch.
lib/X509/CertificationPath/Policy/PolicyNode.php 2 patches
Indentation   +238 added lines, -238 removed lines patch added patch discarded remove patch
@@ -13,265 +13,265 @@
 block discarded – undo
13 13
  */
14 14
 class PolicyNode implements \IteratorAggregate, \Countable
15 15
 {
16
-    /**
17
-     * Policy OID.
18
-     *
19
-     * @var string
20
-     */
21
-    protected $_validPolicy;
16
+	/**
17
+	 * Policy OID.
18
+	 *
19
+	 * @var string
20
+	 */
21
+	protected $_validPolicy;
22 22
     
23
-    /**
24
-     * List of qualifiers.
25
-     *
26
-     * @var \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
27
-     */
28
-    protected $_qualifiers;
23
+	/**
24
+	 * List of qualifiers.
25
+	 *
26
+	 * @var \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
27
+	 */
28
+	protected $_qualifiers;
29 29
     
30
-    /**
31
-     * List of expected policy OIDs.
32
-     *
33
-     * @var string[]
34
-     */
35
-    protected $_expectedPolicies;
30
+	/**
31
+	 * List of expected policy OIDs.
32
+	 *
33
+	 * @var string[]
34
+	 */
35
+	protected $_expectedPolicies;
36 36
     
37
-    /**
38
-     * List of child nodes.
39
-     *
40
-     * @var PolicyNode[]
41
-     */
42
-    protected $_children;
37
+	/**
38
+	 * List of child nodes.
39
+	 *
40
+	 * @var PolicyNode[]
41
+	 */
42
+	protected $_children;
43 43
     
44
-    /**
45
-     * Reference to the parent node.
46
-     *
47
-     * @var PolicyNode|null
48
-     */
49
-    protected $_parent;
44
+	/**
45
+	 * Reference to the parent node.
46
+	 *
47
+	 * @var PolicyNode|null
48
+	 */
49
+	protected $_parent;
50 50
     
51
-    /**
52
-     * Constructor.
53
-     *
54
-     * @param string $valid_policy Policy OID
55
-     * @param \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[] $qualifiers
56
-     * @param string[] $expected_policies
57
-     */
58
-    public function __construct(string $valid_policy, array $qualifiers,
59
-        array $expected_policies)
60
-    {
61
-        $this->_validPolicy = $valid_policy;
62
-        $this->_qualifiers = $qualifiers;
63
-        $this->_expectedPolicies = $expected_policies;
64
-        $this->_children = array();
65
-    }
51
+	/**
52
+	 * Constructor.
53
+	 *
54
+	 * @param string $valid_policy Policy OID
55
+	 * @param \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[] $qualifiers
56
+	 * @param string[] $expected_policies
57
+	 */
58
+	public function __construct(string $valid_policy, array $qualifiers,
59
+		array $expected_policies)
60
+	{
61
+		$this->_validPolicy = $valid_policy;
62
+		$this->_qualifiers = $qualifiers;
63
+		$this->_expectedPolicies = $expected_policies;
64
+		$this->_children = array();
65
+	}
66 66
     
67
-    /**
68
-     * Create initial node for the policy tree.
69
-     *
70
-     * @return self
71
-     */
72
-    public static function anyPolicyNode()
73
-    {
74
-        return new self(PolicyInformation::OID_ANY_POLICY, array(),
75
-            array(PolicyInformation::OID_ANY_POLICY));
76
-    }
67
+	/**
68
+	 * Create initial node for the policy tree.
69
+	 *
70
+	 * @return self
71
+	 */
72
+	public static function anyPolicyNode()
73
+	{
74
+		return new self(PolicyInformation::OID_ANY_POLICY, array(),
75
+			array(PolicyInformation::OID_ANY_POLICY));
76
+	}
77 77
     
78
-    /**
79
-     * Get the valid policy OID.
80
-     *
81
-     * @return string
82
-     */
83
-    public function validPolicy(): string
84
-    {
85
-        return $this->_validPolicy;
86
-    }
78
+	/**
79
+	 * Get the valid policy OID.
80
+	 *
81
+	 * @return string
82
+	 */
83
+	public function validPolicy(): string
84
+	{
85
+		return $this->_validPolicy;
86
+	}
87 87
     
88
-    /**
89
-     * Check whether node has anyPolicy as a valid policy.
90
-     *
91
-     * @return boolean
92
-     */
93
-    public function isAnyPolicy(): bool
94
-    {
95
-        return PolicyInformation::OID_ANY_POLICY == $this->_validPolicy;
96
-    }
88
+	/**
89
+	 * Check whether node has anyPolicy as a valid policy.
90
+	 *
91
+	 * @return boolean
92
+	 */
93
+	public function isAnyPolicy(): bool
94
+	{
95
+		return PolicyInformation::OID_ANY_POLICY == $this->_validPolicy;
96
+	}
97 97
     
98
-    /**
99
-     * Get the qualifier set.
100
-     *
101
-     * @return \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
102
-     */
103
-    public function qualifiers(): array
104
-    {
105
-        return $this->_qualifiers;
106
-    }
98
+	/**
99
+	 * Get the qualifier set.
100
+	 *
101
+	 * @return \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
102
+	 */
103
+	public function qualifiers(): array
104
+	{
105
+		return $this->_qualifiers;
106
+	}
107 107
     
108
-    /**
109
-     * Check whether node has OID as an expected policy.
110
-     *
111
-     * @param string $oid
112
-     * @return boolean
113
-     */
114
-    public function hasExpectedPolicy($oid): bool
115
-    {
116
-        return in_array($oid, $this->_expectedPolicies);
117
-    }
108
+	/**
109
+	 * Check whether node has OID as an expected policy.
110
+	 *
111
+	 * @param string $oid
112
+	 * @return boolean
113
+	 */
114
+	public function hasExpectedPolicy($oid): bool
115
+	{
116
+		return in_array($oid, $this->_expectedPolicies);
117
+	}
118 118
     
119
-    /**
120
-     * Get the expected policy set.
121
-     *
122
-     * @return string[]
123
-     */
124
-    public function expectedPolicies(): array
125
-    {
126
-        return $this->_expectedPolicies;
127
-    }
119
+	/**
120
+	 * Get the expected policy set.
121
+	 *
122
+	 * @return string[]
123
+	 */
124
+	public function expectedPolicies(): array
125
+	{
126
+		return $this->_expectedPolicies;
127
+	}
128 128
     
129
-    /**
130
-     * Set expected policies.
131
-     *
132
-     * @param string ...$oids Policy OIDs
133
-     */
134
-    public function setExpectedPolicies(...$oids)
135
-    {
136
-        $this->_expectedPolicies = $oids;
137
-    }
129
+	/**
130
+	 * Set expected policies.
131
+	 *
132
+	 * @param string ...$oids Policy OIDs
133
+	 */
134
+	public function setExpectedPolicies(...$oids)
135
+	{
136
+		$this->_expectedPolicies = $oids;
137
+	}
138 138
     
139
-    /**
140
-     * Check whether node has a child node with given valid policy OID.
141
-     *
142
-     * @param string $oid
143
-     * @return boolean
144
-     */
145
-    public function hasChildWithValidPolicy($oid): bool
146
-    {
147
-        foreach ($this->_children as $node) {
148
-            if ($node->validPolicy() == $oid) {
149
-                return true;
150
-            }
151
-        }
152
-        return false;
153
-    }
139
+	/**
140
+	 * Check whether node has a child node with given valid policy OID.
141
+	 *
142
+	 * @param string $oid
143
+	 * @return boolean
144
+	 */
145
+	public function hasChildWithValidPolicy($oid): bool
146
+	{
147
+		foreach ($this->_children as $node) {
148
+			if ($node->validPolicy() == $oid) {
149
+				return true;
150
+			}
151
+		}
152
+		return false;
153
+	}
154 154
     
155
-    /**
156
-     * Add child node.
157
-     *
158
-     * @param PolicyNode $node
159
-     * @return self
160
-     */
161
-    public function addChild(PolicyNode $node)
162
-    {
163
-        $id = spl_object_hash($node);
164
-        $node->_parent = $this;
165
-        $this->_children[$id] = $node;
166
-        return $this;
167
-    }
155
+	/**
156
+	 * Add child node.
157
+	 *
158
+	 * @param PolicyNode $node
159
+	 * @return self
160
+	 */
161
+	public function addChild(PolicyNode $node)
162
+	{
163
+		$id = spl_object_hash($node);
164
+		$node->_parent = $this;
165
+		$this->_children[$id] = $node;
166
+		return $this;
167
+	}
168 168
     
169
-    /**
170
-     * Get the child nodes.
171
-     *
172
-     * @return PolicyNode[]
173
-     */
174
-    public function children(): array
175
-    {
176
-        return array_values($this->_children);
177
-    }
169
+	/**
170
+	 * Get the child nodes.
171
+	 *
172
+	 * @return PolicyNode[]
173
+	 */
174
+	public function children(): array
175
+	{
176
+		return array_values($this->_children);
177
+	}
178 178
     
179
-    /**
180
-     * Remove this node from the tree.
181
-     *
182
-     * @return self The removed node
183
-     */
184
-    public function remove()
185
-    {
186
-        if ($this->_parent) {
187
-            $id = spl_object_hash($this);
188
-            unset($this->_parent->_children[$id]);
189
-            unset($this->_parent);
190
-        }
191
-        return $this;
192
-    }
179
+	/**
180
+	 * Remove this node from the tree.
181
+	 *
182
+	 * @return self The removed node
183
+	 */
184
+	public function remove()
185
+	{
186
+		if ($this->_parent) {
187
+			$id = spl_object_hash($this);
188
+			unset($this->_parent->_children[$id]);
189
+			unset($this->_parent);
190
+		}
191
+		return $this;
192
+	}
193 193
     
194
-    /**
195
-     * Check whether node has a parent.
196
-     *
197
-     * @return bool
198
-     */
199
-    public function hasParent(): bool
200
-    {
201
-        return isset($this->_parent);
202
-    }
194
+	/**
195
+	 * Check whether node has a parent.
196
+	 *
197
+	 * @return bool
198
+	 */
199
+	public function hasParent(): bool
200
+	{
201
+		return isset($this->_parent);
202
+	}
203 203
     
204
-    /**
205
-     * Get the parent node.
206
-     *
207
-     * @return PolicyNode|null
208
-     */
209
-    public function parent()
210
-    {
211
-        return $this->_parent;
212
-    }
204
+	/**
205
+	 * Get the parent node.
206
+	 *
207
+	 * @return PolicyNode|null
208
+	 */
209
+	public function parent()
210
+	{
211
+		return $this->_parent;
212
+	}
213 213
     
214
-    /**
215
-     * Get chain of parent nodes from this node's parent to the root node.
216
-     *
217
-     * @return PolicyNode[]
218
-     */
219
-    public function parents(): array
220
-    {
221
-        if (!$this->_parent) {
222
-            return array();
223
-        }
224
-        $nodes = $this->_parent->parents();
225
-        $nodes[] = $this->_parent;
226
-        return array_reverse($nodes);
227
-    }
214
+	/**
215
+	 * Get chain of parent nodes from this node's parent to the root node.
216
+	 *
217
+	 * @return PolicyNode[]
218
+	 */
219
+	public function parents(): array
220
+	{
221
+		if (!$this->_parent) {
222
+			return array();
223
+		}
224
+		$nodes = $this->_parent->parents();
225
+		$nodes[] = $this->_parent;
226
+		return array_reverse($nodes);
227
+	}
228 228
     
229
-    /**
230
-     * Walk tree from this node, applying a callback for each node.
231
-     *
232
-     * Nodes are traversed depth-first and callback shall be applied post-order.
233
-     *
234
-     * @param callable $fn
235
-     */
236
-    public function walkNodes(callable $fn)
237
-    {
238
-        foreach ($this->_children as $node) {
239
-            $node->walkNodes($fn);
240
-        }
241
-        $fn($this);
242
-    }
229
+	/**
230
+	 * Walk tree from this node, applying a callback for each node.
231
+	 *
232
+	 * Nodes are traversed depth-first and callback shall be applied post-order.
233
+	 *
234
+	 * @param callable $fn
235
+	 */
236
+	public function walkNodes(callable $fn)
237
+	{
238
+		foreach ($this->_children as $node) {
239
+			$node->walkNodes($fn);
240
+		}
241
+		$fn($this);
242
+	}
243 243
     
244
-    /**
245
-     * Get the total number of nodes in a tree.
246
-     *
247
-     * @return int
248
-     */
249
-    public function nodeCount(): int
250
-    {
251
-        $c = 1;
252
-        foreach ($this->_children as $child) {
253
-            $c += $child->nodeCount();
254
-        }
255
-        return $c;
256
-    }
244
+	/**
245
+	 * Get the total number of nodes in a tree.
246
+	 *
247
+	 * @return int
248
+	 */
249
+	public function nodeCount(): int
250
+	{
251
+		$c = 1;
252
+		foreach ($this->_children as $child) {
253
+			$c += $child->nodeCount();
254
+		}
255
+		return $c;
256
+	}
257 257
     
258
-    /**
259
-     * Get the number of child nodes.
260
-     *
261
-     * @see \Countable::count()
262
-     */
263
-    public function count(): int
264
-    {
265
-        return count($this->_children);
266
-    }
258
+	/**
259
+	 * Get the number of child nodes.
260
+	 *
261
+	 * @see \Countable::count()
262
+	 */
263
+	public function count(): int
264
+	{
265
+		return count($this->_children);
266
+	}
267 267
     
268
-    /**
269
-     * Get iterator for the child nodes.
270
-     *
271
-     * @see \IteratorAggregate::getIterator()
272
-     */
273
-    public function getIterator(): \ArrayIterator
274
-    {
275
-        return new \ArrayIterator($this->_children);
276
-    }
268
+	/**
269
+	 * Get iterator for the child nodes.
270
+	 *
271
+	 * @see \IteratorAggregate::getIterator()
272
+	 */
273
+	public function getIterator(): \ArrayIterator
274
+	{
275
+		return new \ArrayIterator($this->_children);
276
+	}
277 277
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath\Policy;
6 6
 
Please login to merge, or discard this patch.
lib/X509/CertificationPath/Policy/PolicyTree.php 2 patches
Indentation   +393 added lines, -393 removed lines patch added patch discarded remove patch
@@ -10,411 +10,411 @@
 block discarded – undo
10 10
 
11 11
 class PolicyTree
12 12
 {
13
-    /**
14
-     * Root node at depth zero.
15
-     *
16
-     * @var PolicyNode|null
17
-     */
18
-    protected $_root;
13
+	/**
14
+	 * Root node at depth zero.
15
+	 *
16
+	 * @var PolicyNode|null
17
+	 */
18
+	protected $_root;
19 19
     
20
-    /**
21
-     * Constructor.
22
-     *
23
-     * @param PolicyNode $root Initial root node
24
-     */
25
-    public function __construct(PolicyNode $root)
26
-    {
27
-        $this->_root = $root;
28
-    }
20
+	/**
21
+	 * Constructor.
22
+	 *
23
+	 * @param PolicyNode $root Initial root node
24
+	 */
25
+	public function __construct(PolicyNode $root)
26
+	{
27
+		$this->_root = $root;
28
+	}
29 29
     
30
-    /**
31
-     * Process policy information from the certificate.
32
-     *
33
-     * Certificate policies extension must be present.
34
-     *
35
-     * @param ValidatorState $state
36
-     * @param Certificate $cert
37
-     * @return ValidatorState
38
-     */
39
-    public function processPolicies(ValidatorState $state, Certificate $cert): ValidatorState
40
-    {
41
-        $policies = $cert->tbsCertificate()
42
-            ->extensions()
43
-            ->certificatePolicies();
44
-        $tree = clone $this;
45
-        // (d.1) for each policy P not equal to anyPolicy
46
-        foreach ($policies as $policy) {
47
-            if ($policy->isAnyPolicy()) {
48
-                $tree->_processAnyPolicy($policy, $cert, $state);
49
-            } else {
50
-                $tree->_processPolicy($policy, $state);
51
-            }
52
-        }
53
-        // if whole tree is pruned
54
-        if (!$tree->_pruneTree($state->index() - 1)) {
55
-            return $state->withoutValidPolicyTree();
56
-        }
57
-        return $state->withValidPolicyTree($tree);
58
-    }
30
+	/**
31
+	 * Process policy information from the certificate.
32
+	 *
33
+	 * Certificate policies extension must be present.
34
+	 *
35
+	 * @param ValidatorState $state
36
+	 * @param Certificate $cert
37
+	 * @return ValidatorState
38
+	 */
39
+	public function processPolicies(ValidatorState $state, Certificate $cert): ValidatorState
40
+	{
41
+		$policies = $cert->tbsCertificate()
42
+			->extensions()
43
+			->certificatePolicies();
44
+		$tree = clone $this;
45
+		// (d.1) for each policy P not equal to anyPolicy
46
+		foreach ($policies as $policy) {
47
+			if ($policy->isAnyPolicy()) {
48
+				$tree->_processAnyPolicy($policy, $cert, $state);
49
+			} else {
50
+				$tree->_processPolicy($policy, $state);
51
+			}
52
+		}
53
+		// if whole tree is pruned
54
+		if (!$tree->_pruneTree($state->index() - 1)) {
55
+			return $state->withoutValidPolicyTree();
56
+		}
57
+		return $state->withValidPolicyTree($tree);
58
+	}
59 59
     
60
-    /**
61
-     * Process policy mappings from the certificate.
62
-     *
63
-     * @param ValidatorState $state
64
-     * @param Certificate $cert
65
-     * @return ValidatorState
66
-     */
67
-    public function processMappings(ValidatorState $state, Certificate $cert): ValidatorState
68
-    {
69
-        $tree = clone $this;
70
-        if ($state->policyMapping() > 0) {
71
-            $tree->_applyMappings($cert, $state);
72
-        } else if ($state->policyMapping() == 0) {
73
-            $tree->_deleteMappings($cert, $state);
74
-        }
75
-        // if whole tree is pruned
76
-        if (!$tree->_root) {
77
-            return $state->withoutValidPolicyTree();
78
-        }
79
-        return $state->withValidPolicyTree($tree);
80
-    }
60
+	/**
61
+	 * Process policy mappings from the certificate.
62
+	 *
63
+	 * @param ValidatorState $state
64
+	 * @param Certificate $cert
65
+	 * @return ValidatorState
66
+	 */
67
+	public function processMappings(ValidatorState $state, Certificate $cert): ValidatorState
68
+	{
69
+		$tree = clone $this;
70
+		if ($state->policyMapping() > 0) {
71
+			$tree->_applyMappings($cert, $state);
72
+		} else if ($state->policyMapping() == 0) {
73
+			$tree->_deleteMappings($cert, $state);
74
+		}
75
+		// if whole tree is pruned
76
+		if (!$tree->_root) {
77
+			return $state->withoutValidPolicyTree();
78
+		}
79
+		return $state->withValidPolicyTree($tree);
80
+	}
81 81
     
82
-    /**
83
-     * Calculate policy intersection as specified in Wrap-Up Procedure 6.1.5.g.
84
-     *
85
-     * @param ValidatorState $state
86
-     * @param array $policies
87
-     * @return ValidatorState
88
-     */
89
-    public function calculateIntersection(ValidatorState $state, array $policies): ValidatorState
90
-    {
91
-        $tree = clone $this;
92
-        $valid_policy_node_set = $tree->_validPolicyNodeSet();
93
-        // 2. If the valid_policy of any node in the valid_policy_node_set
94
-        // is not in the user-initial-policy-set and is not anyPolicy,
95
-        // delete this node and all its children.
96
-        $valid_policy_node_set = array_filter($valid_policy_node_set,
97
-            function (PolicyNode $node) use ($policies) {
98
-                if ($node->isAnyPolicy()) {
99
-                    return true;
100
-                }
101
-                if (in_array($node->validPolicy(), $policies)) {
102
-                    return true;
103
-                }
104
-                $node->remove();
105
-                return false;
106
-            });
107
-        // array of valid policy OIDs
108
-        $valid_policy_set = array_map(
109
-            function (PolicyNode $node) {
110
-                return $node->validPolicy();
111
-            }, $valid_policy_node_set);
112
-        // 3. If the valid_policy_tree includes a node of depth n with
113
-        // the valid_policy anyPolicy and the user-initial-policy-set 
114
-        // is not any-policy
115
-        foreach ($tree->_nodesAtDepth($state->index()) as $node) {
116
-            if ($node->hasParent() && $node->isAnyPolicy()) {
117
-                // a. Set P-Q to the qualifier_set in the node of depth n
118
-                // with valid_policy anyPolicy.
119
-                $pq = $node->qualifiers();
120
-                // b. For each P-OID in the user-initial-policy-set that is not
121
-                // the valid_policy of a node in the valid_policy_node_set,
122
-                // create a child node whose parent is the node of depth n-1
123
-                // with the valid_policy anyPolicy.
124
-                $poids = array_diff($policies, $valid_policy_set);
125
-                foreach ($tree->_nodesAtDepth($state->index() - 1) as $parent) {
126
-                    if ($parent->isAnyPolicy()) {
127
-                        // Set the values in the child node as follows: 
128
-                        // set the valid_policy to P-OID, set the qualifier_set
129
-                        // to P-Q, and set the expected_policy_set to {P-OID}.
130
-                        foreach ($poids as $poid) {
131
-                            $parent->addChild(
132
-                                new PolicyNode($poid, $pq, array($poid)));
133
-                        }
134
-                        break;
135
-                    }
136
-                }
137
-                // c. Delete the node of depth n with the
138
-                // valid_policy anyPolicy.
139
-                $node->remove();
140
-            }
141
-        }
142
-        // 4. If there is a node in the valid_policy_tree of depth n-1 or less
143
-        // without any child nodes, delete that node. Repeat this step until
144
-        // there are no nodes of depth n-1 or less without children.
145
-        if (!$tree->_pruneTree($state->index() - 1)) {
146
-            return $state->withoutValidPolicyTree();
147
-        }
148
-        return $state->withValidPolicyTree($tree);
149
-    }
82
+	/**
83
+	 * Calculate policy intersection as specified in Wrap-Up Procedure 6.1.5.g.
84
+	 *
85
+	 * @param ValidatorState $state
86
+	 * @param array $policies
87
+	 * @return ValidatorState
88
+	 */
89
+	public function calculateIntersection(ValidatorState $state, array $policies): ValidatorState
90
+	{
91
+		$tree = clone $this;
92
+		$valid_policy_node_set = $tree->_validPolicyNodeSet();
93
+		// 2. If the valid_policy of any node in the valid_policy_node_set
94
+		// is not in the user-initial-policy-set and is not anyPolicy,
95
+		// delete this node and all its children.
96
+		$valid_policy_node_set = array_filter($valid_policy_node_set,
97
+			function (PolicyNode $node) use ($policies) {
98
+				if ($node->isAnyPolicy()) {
99
+					return true;
100
+				}
101
+				if (in_array($node->validPolicy(), $policies)) {
102
+					return true;
103
+				}
104
+				$node->remove();
105
+				return false;
106
+			});
107
+		// array of valid policy OIDs
108
+		$valid_policy_set = array_map(
109
+			function (PolicyNode $node) {
110
+				return $node->validPolicy();
111
+			}, $valid_policy_node_set);
112
+		// 3. If the valid_policy_tree includes a node of depth n with
113
+		// the valid_policy anyPolicy and the user-initial-policy-set 
114
+		// is not any-policy
115
+		foreach ($tree->_nodesAtDepth($state->index()) as $node) {
116
+			if ($node->hasParent() && $node->isAnyPolicy()) {
117
+				// a. Set P-Q to the qualifier_set in the node of depth n
118
+				// with valid_policy anyPolicy.
119
+				$pq = $node->qualifiers();
120
+				// b. For each P-OID in the user-initial-policy-set that is not
121
+				// the valid_policy of a node in the valid_policy_node_set,
122
+				// create a child node whose parent is the node of depth n-1
123
+				// with the valid_policy anyPolicy.
124
+				$poids = array_diff($policies, $valid_policy_set);
125
+				foreach ($tree->_nodesAtDepth($state->index() - 1) as $parent) {
126
+					if ($parent->isAnyPolicy()) {
127
+						// Set the values in the child node as follows: 
128
+						// set the valid_policy to P-OID, set the qualifier_set
129
+						// to P-Q, and set the expected_policy_set to {P-OID}.
130
+						foreach ($poids as $poid) {
131
+							$parent->addChild(
132
+								new PolicyNode($poid, $pq, array($poid)));
133
+						}
134
+						break;
135
+					}
136
+				}
137
+				// c. Delete the node of depth n with the
138
+				// valid_policy anyPolicy.
139
+				$node->remove();
140
+			}
141
+		}
142
+		// 4. If there is a node in the valid_policy_tree of depth n-1 or less
143
+		// without any child nodes, delete that node. Repeat this step until
144
+		// there are no nodes of depth n-1 or less without children.
145
+		if (!$tree->_pruneTree($state->index() - 1)) {
146
+			return $state->withoutValidPolicyTree();
147
+		}
148
+		return $state->withValidPolicyTree($tree);
149
+	}
150 150
     
151
-    /**
152
-     * Get policies at given policy tree depth.
153
-     *
154
-     * @param int $i Depth in range 1..n
155
-     * @return PolicyInformation[]
156
-     */
157
-    public function policiesAtDepth($i): array
158
-    {
159
-        $policies = array();
160
-        foreach ($this->_nodesAtDepth($i) as $node) {
161
-            $policies[] = new PolicyInformation($node->validPolicy(),
162
-                ...$node->qualifiers());
163
-        }
164
-        return $policies;
165
-    }
151
+	/**
152
+	 * Get policies at given policy tree depth.
153
+	 *
154
+	 * @param int $i Depth in range 1..n
155
+	 * @return PolicyInformation[]
156
+	 */
157
+	public function policiesAtDepth($i): array
158
+	{
159
+		$policies = array();
160
+		foreach ($this->_nodesAtDepth($i) as $node) {
161
+			$policies[] = new PolicyInformation($node->validPolicy(),
162
+				...$node->qualifiers());
163
+		}
164
+		return $policies;
165
+	}
166 166
     
167
-    /**
168
-     * Process single policy information.
169
-     *
170
-     * @param PolicyInformation $policy
171
-     * @param ValidatorState $state
172
-     */
173
-    protected function _processPolicy(PolicyInformation $policy,
174
-        ValidatorState $state)
175
-    {
176
-        $p_oid = $policy->oid();
177
-        $i = $state->index();
178
-        $match_count = 0;
179
-        // (d.1.i) for each node of depth i-1 in the valid_policy_tree...
180
-        foreach ($this->_nodesAtDepth($i - 1) as $node) {
181
-            // ...where P-OID is in the expected_policy_set
182
-            if ($node->hasExpectedPolicy($p_oid)) {
183
-                $node->addChild(
184
-                    new PolicyNode($p_oid, $policy->qualifiers(), array($p_oid)));
185
-                ++$match_count;
186
-            }
187
-        }
188
-        // (d.1.ii) if there was no match in step (i)...
189
-        if (!$match_count) {
190
-            // ...and the valid_policy_tree includes a node of depth i-1 with
191
-            // the valid_policy anyPolicy
192
-            foreach ($this->_nodesAtDepth($i - 1) as $node) {
193
-                if ($node->isAnyPolicy()) {
194
-                    $node->addChild(
195
-                        new PolicyNode($p_oid, $policy->qualifiers(),
196
-                            array($p_oid)));
197
-                }
198
-            }
199
-        }
200
-    }
167
+	/**
168
+	 * Process single policy information.
169
+	 *
170
+	 * @param PolicyInformation $policy
171
+	 * @param ValidatorState $state
172
+	 */
173
+	protected function _processPolicy(PolicyInformation $policy,
174
+		ValidatorState $state)
175
+	{
176
+		$p_oid = $policy->oid();
177
+		$i = $state->index();
178
+		$match_count = 0;
179
+		// (d.1.i) for each node of depth i-1 in the valid_policy_tree...
180
+		foreach ($this->_nodesAtDepth($i - 1) as $node) {
181
+			// ...where P-OID is in the expected_policy_set
182
+			if ($node->hasExpectedPolicy($p_oid)) {
183
+				$node->addChild(
184
+					new PolicyNode($p_oid, $policy->qualifiers(), array($p_oid)));
185
+				++$match_count;
186
+			}
187
+		}
188
+		// (d.1.ii) if there was no match in step (i)...
189
+		if (!$match_count) {
190
+			// ...and the valid_policy_tree includes a node of depth i-1 with
191
+			// the valid_policy anyPolicy
192
+			foreach ($this->_nodesAtDepth($i - 1) as $node) {
193
+				if ($node->isAnyPolicy()) {
194
+					$node->addChild(
195
+						new PolicyNode($p_oid, $policy->qualifiers(),
196
+							array($p_oid)));
197
+				}
198
+			}
199
+		}
200
+	}
201 201
     
202
-    /**
203
-     * Process anyPolicy policy information.
204
-     *
205
-     * @param PolicyInformation $policy
206
-     * @param Certificate $cert
207
-     * @param ValidatorState $state
208
-     */
209
-    protected function _processAnyPolicy(PolicyInformation $policy,
210
-        Certificate $cert, ValidatorState $state)
211
-    {
212
-        $i = $state->index();
213
-        // if (a) inhibit_anyPolicy is greater than 0 or
214
-        // (b) i<n and the certificate is self-issued
215
-        if (!($state->inhibitAnyPolicy() > 0 ||
216
-             ($i < $state->pathLength() && $cert->isSelfIssued()))) {
217
-            return;
218
-        }
219
-        // for each node in the valid_policy_tree of depth i-1
220
-        foreach ($this->_nodesAtDepth($i - 1) as $node) {
221
-            // for each value in the expected_policy_set
222
-            foreach ($node->expectedPolicies() as $p_oid) {
223
-                // that does not appear in a child node
224
-                if (!$node->hasChildWithValidPolicy($p_oid)) {
225
-                    $node->addChild(
226
-                        new PolicyNode($p_oid, $policy->qualifiers(),
227
-                            array($p_oid)));
228
-                }
229
-            }
230
-        }
231
-    }
202
+	/**
203
+	 * Process anyPolicy policy information.
204
+	 *
205
+	 * @param PolicyInformation $policy
206
+	 * @param Certificate $cert
207
+	 * @param ValidatorState $state
208
+	 */
209
+	protected function _processAnyPolicy(PolicyInformation $policy,
210
+		Certificate $cert, ValidatorState $state)
211
+	{
212
+		$i = $state->index();
213
+		// if (a) inhibit_anyPolicy is greater than 0 or
214
+		// (b) i<n and the certificate is self-issued
215
+		if (!($state->inhibitAnyPolicy() > 0 ||
216
+			 ($i < $state->pathLength() && $cert->isSelfIssued()))) {
217
+			return;
218
+		}
219
+		// for each node in the valid_policy_tree of depth i-1
220
+		foreach ($this->_nodesAtDepth($i - 1) as $node) {
221
+			// for each value in the expected_policy_set
222
+			foreach ($node->expectedPolicies() as $p_oid) {
223
+				// that does not appear in a child node
224
+				if (!$node->hasChildWithValidPolicy($p_oid)) {
225
+					$node->addChild(
226
+						new PolicyNode($p_oid, $policy->qualifiers(),
227
+							array($p_oid)));
228
+				}
229
+			}
230
+		}
231
+	}
232 232
     
233
-    /**
234
-     * Apply policy mappings to the policy tree.
235
-     *
236
-     * @param Certificate $cert
237
-     * @param ValidatorState $state
238
-     */
239
-    protected function _applyMappings(Certificate $cert, ValidatorState $state)
240
-    {
241
-        $policy_mappings = $cert->tbsCertificate()
242
-            ->extensions()
243
-            ->policyMappings();
244
-        // (6.1.4. b.1.) for each node in the valid_policy_tree of depth i...
245
-        foreach ($policy_mappings->flattenedMappings() as $idp => $sdps) {
246
-            $match_count = 0;
247
-            foreach ($this->_nodesAtDepth($state->index()) as $node) {
248
-                // ...where ID-P is the valid_policy
249
-                if ($node->validPolicy() == $idp) {
250
-                    // set expected_policy_set to the set of subjectDomainPolicy
251
-                    // values that are specified as equivalent to ID-P by
252
-                    // the policy mappings extension
253
-                    $node->setExpectedPolicies(...$sdps);
254
-                    ++$match_count;
255
-                }
256
-            }
257
-            // if no node of depth i in the valid_policy_tree has
258
-            // a valid_policy of ID-P...
259
-            if (!$match_count) {
260
-                $this->_applyAnyPolicyMapping($cert, $state, $idp, $sdps);
261
-            }
262
-        }
263
-    }
233
+	/**
234
+	 * Apply policy mappings to the policy tree.
235
+	 *
236
+	 * @param Certificate $cert
237
+	 * @param ValidatorState $state
238
+	 */
239
+	protected function _applyMappings(Certificate $cert, ValidatorState $state)
240
+	{
241
+		$policy_mappings = $cert->tbsCertificate()
242
+			->extensions()
243
+			->policyMappings();
244
+		// (6.1.4. b.1.) for each node in the valid_policy_tree of depth i...
245
+		foreach ($policy_mappings->flattenedMappings() as $idp => $sdps) {
246
+			$match_count = 0;
247
+			foreach ($this->_nodesAtDepth($state->index()) as $node) {
248
+				// ...where ID-P is the valid_policy
249
+				if ($node->validPolicy() == $idp) {
250
+					// set expected_policy_set to the set of subjectDomainPolicy
251
+					// values that are specified as equivalent to ID-P by
252
+					// the policy mappings extension
253
+					$node->setExpectedPolicies(...$sdps);
254
+					++$match_count;
255
+				}
256
+			}
257
+			// if no node of depth i in the valid_policy_tree has
258
+			// a valid_policy of ID-P...
259
+			if (!$match_count) {
260
+				$this->_applyAnyPolicyMapping($cert, $state, $idp, $sdps);
261
+			}
262
+		}
263
+	}
264 264
     
265
-    /**
266
-     * Apply anyPolicy mapping to the policy tree as specified in 6.1.4 (b)(1).
267
-     *
268
-     * @param Certificate $cert
269
-     * @param ValidatorState $state
270
-     * @param string $idp OID of the issuer domain policy
271
-     * @param array $sdps Array of subject domain policy OIDs
272
-     */
273
-    protected function _applyAnyPolicyMapping(Certificate $cert,
274
-        ValidatorState $state, $idp, array $sdps)
275
-    {
276
-        // (6.1.4. b.1.) ...but there is a node of depth i with
277
-        // a valid_policy of anyPolicy
278
-        foreach ($this->_nodesAtDepth($state->index()) as $node) {
279
-            if ($node->isAnyPolicy()) {
280
-                // then generate a child node of the node of depth i-1
281
-                // that has a valid_policy of anyPolicy as follows...
282
-                foreach ($this->_nodesAtDepth($state->index() - 1) as $node) {
283
-                    if ($node->isAnyPolicy()) {
284
-                        // try to fetch qualifiers of anyPolicy certificate policy
285
-                        $qualifiers = array();
286
-                        try {
287
-                            $qualifiers = $cert->tbsCertificate()
288
-                                ->extensions()
289
-                                ->certificatePolicies()
290
-                                ->anyPolicy()
291
-                                ->qualifiers();
292
-                        } catch (\LogicException $e) {
293
-                            // if there's no policies or no qualifiers
294
-                        }
295
-                        $node->addChild(
296
-                            new PolicyNode($idp, $qualifiers, $sdps));
297
-                        // bail after first anyPolicy has been processed
298
-                        break;
299
-                    }
300
-                }
301
-                // bail after first anyPolicy has been processed
302
-                break;
303
-            }
304
-        }
305
-    }
265
+	/**
266
+	 * Apply anyPolicy mapping to the policy tree as specified in 6.1.4 (b)(1).
267
+	 *
268
+	 * @param Certificate $cert
269
+	 * @param ValidatorState $state
270
+	 * @param string $idp OID of the issuer domain policy
271
+	 * @param array $sdps Array of subject domain policy OIDs
272
+	 */
273
+	protected function _applyAnyPolicyMapping(Certificate $cert,
274
+		ValidatorState $state, $idp, array $sdps)
275
+	{
276
+		// (6.1.4. b.1.) ...but there is a node of depth i with
277
+		// a valid_policy of anyPolicy
278
+		foreach ($this->_nodesAtDepth($state->index()) as $node) {
279
+			if ($node->isAnyPolicy()) {
280
+				// then generate a child node of the node of depth i-1
281
+				// that has a valid_policy of anyPolicy as follows...
282
+				foreach ($this->_nodesAtDepth($state->index() - 1) as $node) {
283
+					if ($node->isAnyPolicy()) {
284
+						// try to fetch qualifiers of anyPolicy certificate policy
285
+						$qualifiers = array();
286
+						try {
287
+							$qualifiers = $cert->tbsCertificate()
288
+								->extensions()
289
+								->certificatePolicies()
290
+								->anyPolicy()
291
+								->qualifiers();
292
+						} catch (\LogicException $e) {
293
+							// if there's no policies or no qualifiers
294
+						}
295
+						$node->addChild(
296
+							new PolicyNode($idp, $qualifiers, $sdps));
297
+						// bail after first anyPolicy has been processed
298
+						break;
299
+					}
300
+				}
301
+				// bail after first anyPolicy has been processed
302
+				break;
303
+			}
304
+		}
305
+	}
306 306
     
307
-    /**
308
-     * Delete nodes as specified in 6.1.4 (b)(2).
309
-     *
310
-     * @param Certificate $cert
311
-     * @param ValidatorState $state
312
-     */
313
-    protected function _deleteMappings(Certificate $cert, ValidatorState $state)
314
-    {
315
-        $idps = $cert->tbsCertificate()
316
-            ->extensions()
317
-            ->policyMappings()
318
-            ->issuerDomainPolicies();
319
-        // delete each node of depth i in the valid_policy_tree
320
-        // where ID-P is the valid_policy
321
-        foreach ($this->_nodesAtDepth($state->index()) as $node) {
322
-            if (in_array($node->validPolicy(), $idps)) {
323
-                $node->remove();
324
-            }
325
-        }
326
-        $this->_pruneTree($state->index() - 1);
327
-    }
307
+	/**
308
+	 * Delete nodes as specified in 6.1.4 (b)(2).
309
+	 *
310
+	 * @param Certificate $cert
311
+	 * @param ValidatorState $state
312
+	 */
313
+	protected function _deleteMappings(Certificate $cert, ValidatorState $state)
314
+	{
315
+		$idps = $cert->tbsCertificate()
316
+			->extensions()
317
+			->policyMappings()
318
+			->issuerDomainPolicies();
319
+		// delete each node of depth i in the valid_policy_tree
320
+		// where ID-P is the valid_policy
321
+		foreach ($this->_nodesAtDepth($state->index()) as $node) {
322
+			if (in_array($node->validPolicy(), $idps)) {
323
+				$node->remove();
324
+			}
325
+		}
326
+		$this->_pruneTree($state->index() - 1);
327
+	}
328 328
     
329
-    /**
330
-     * Prune tree starting from given depth.
331
-     *
332
-     * @param int $depth
333
-     * @return int The number of nodes left in a tree
334
-     */
335
-    protected function _pruneTree($depth)
336
-    {
337
-        for ($i = $depth; $i > 0; --$i) {
338
-            foreach ($this->_nodesAtDepth($i) as $node) {
339
-                if (!count($node)) {
340
-                    $node->remove();
341
-                }
342
-            }
343
-        }
344
-        // if root has no children left
345
-        if (!count($this->_root)) {
346
-            $this->_root = null;
347
-            return 0;
348
-        }
349
-        return $this->_root->nodeCount();
350
-    }
329
+	/**
330
+	 * Prune tree starting from given depth.
331
+	 *
332
+	 * @param int $depth
333
+	 * @return int The number of nodes left in a tree
334
+	 */
335
+	protected function _pruneTree($depth)
336
+	{
337
+		for ($i = $depth; $i > 0; --$i) {
338
+			foreach ($this->_nodesAtDepth($i) as $node) {
339
+				if (!count($node)) {
340
+					$node->remove();
341
+				}
342
+			}
343
+		}
344
+		// if root has no children left
345
+		if (!count($this->_root)) {
346
+			$this->_root = null;
347
+			return 0;
348
+		}
349
+		return $this->_root->nodeCount();
350
+	}
351 351
     
352
-    /**
353
-     * Get all nodes at given depth.
354
-     *
355
-     * @param int $i
356
-     * @return PolicyNode[]
357
-     */
358
-    protected function _nodesAtDepth($i): array
359
-    {
360
-        if (!$this->_root) {
361
-            return array();
362
-        }
363
-        $depth = 0;
364
-        $nodes = array($this->_root);
365
-        while ($depth < $i) {
366
-            $nodes = self::_gatherChildren(...$nodes);
367
-            if (!count($nodes)) {
368
-                break;
369
-            }
370
-            ++$depth;
371
-        }
372
-        return $nodes;
373
-    }
352
+	/**
353
+	 * Get all nodes at given depth.
354
+	 *
355
+	 * @param int $i
356
+	 * @return PolicyNode[]
357
+	 */
358
+	protected function _nodesAtDepth($i): array
359
+	{
360
+		if (!$this->_root) {
361
+			return array();
362
+		}
363
+		$depth = 0;
364
+		$nodes = array($this->_root);
365
+		while ($depth < $i) {
366
+			$nodes = self::_gatherChildren(...$nodes);
367
+			if (!count($nodes)) {
368
+				break;
369
+			}
370
+			++$depth;
371
+		}
372
+		return $nodes;
373
+	}
374 374
     
375
-    /**
376
-     * Get the valid policy node set as specified in spec 6.1.5.(g)(iii)1.
377
-     *
378
-     * @return PolicyNode[]
379
-     */
380
-    protected function _validPolicyNodeSet(): array
381
-    {
382
-        // 1. Determine the set of policy nodes whose parent nodes have
383
-        // a valid_policy of anyPolicy. This is the valid_policy_node_set.
384
-        $set = array();
385
-        if (!$this->_root) {
386
-            return $set;
387
-        }
388
-        // for each node in a tree
389
-        $this->_root->walkNodes(
390
-            function (PolicyNode $node) use (&$set) {
391
-                $parents = $node->parents();
392
-                // node has parents
393
-                if (count($parents)) {
394
-                    // check that each ancestor is an anyPolicy node
395
-                    foreach ($parents as $ancestor) {
396
-                        if (!$ancestor->isAnyPolicy()) {
397
-                            return;
398
-                        }
399
-                    }
400
-                    $set[] = $node;
401
-                }
402
-            });
403
-        return $set;
404
-    }
375
+	/**
376
+	 * Get the valid policy node set as specified in spec 6.1.5.(g)(iii)1.
377
+	 *
378
+	 * @return PolicyNode[]
379
+	 */
380
+	protected function _validPolicyNodeSet(): array
381
+	{
382
+		// 1. Determine the set of policy nodes whose parent nodes have
383
+		// a valid_policy of anyPolicy. This is the valid_policy_node_set.
384
+		$set = array();
385
+		if (!$this->_root) {
386
+			return $set;
387
+		}
388
+		// for each node in a tree
389
+		$this->_root->walkNodes(
390
+			function (PolicyNode $node) use (&$set) {
391
+				$parents = $node->parents();
392
+				// node has parents
393
+				if (count($parents)) {
394
+					// check that each ancestor is an anyPolicy node
395
+					foreach ($parents as $ancestor) {
396
+						if (!$ancestor->isAnyPolicy()) {
397
+							return;
398
+						}
399
+					}
400
+					$set[] = $node;
401
+				}
402
+			});
403
+		return $set;
404
+	}
405 405
     
406
-    /**
407
-     * Gather all children of given nodes to a flattened array.
408
-     *
409
-     * @param PolicyNode ...$nodes
410
-     * @return PolicyNode[]
411
-     */
412
-    private static function _gatherChildren(PolicyNode ...$nodes): array
413
-    {
414
-        $children = array();
415
-        foreach ($nodes as $node) {
416
-            $children = array_merge($children, $node->children());
417
-        }
418
-        return $children;
419
-    }
406
+	/**
407
+	 * Gather all children of given nodes to a flattened array.
408
+	 *
409
+	 * @param PolicyNode ...$nodes
410
+	 * @return PolicyNode[]
411
+	 */
412
+	private static function _gatherChildren(PolicyNode ...$nodes): array
413
+	{
414
+		$children = array();
415
+		foreach ($nodes as $node) {
416
+			$children = array_merge($children, $node->children());
417
+		}
418
+		return $children;
419
+	}
420 420
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath\Policy;
6 6
 
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
         // is not in the user-initial-policy-set and is not anyPolicy,
95 95
         // delete this node and all its children.
96 96
         $valid_policy_node_set = array_filter($valid_policy_node_set,
97
-            function (PolicyNode $node) use ($policies) {
97
+            function(PolicyNode $node) use ($policies) {
98 98
                 if ($node->isAnyPolicy()) {
99 99
                     return true;
100 100
                 }
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
             });
107 107
         // array of valid policy OIDs
108 108
         $valid_policy_set = array_map(
109
-            function (PolicyNode $node) {
109
+            function(PolicyNode $node) {
110 110
                 return $node->validPolicy();
111 111
             }, $valid_policy_node_set);
112 112
         // 3. If the valid_policy_tree includes a node of depth n with
@@ -387,7 +387,7 @@  discard block
 block discarded – undo
387 387
         }
388 388
         // for each node in a tree
389 389
         $this->_root->walkNodes(
390
-            function (PolicyNode $node) use (&$set) {
390
+            function(PolicyNode $node) use (&$set) {
391 391
                 $parents = $node->parents();
392 392
                 // node has parents
393 393
                 if (count($parents)) {
Please login to merge, or discard this patch.
lib/X509/CertificationPath/CertificationPath.php 2 patches
Indentation   +156 added lines, -156 removed lines patch added patch discarded remove patch
@@ -23,172 +23,172 @@
 block discarded – undo
23 23
  */
24 24
 class CertificationPath implements \Countable, \IteratorAggregate
25 25
 {
26
-    /**
27
-     * Certification path.
28
-     *
29
-     * @var Certificate[] $_certificates
30
-     */
31
-    protected $_certificates;
26
+	/**
27
+	 * Certification path.
28
+	 *
29
+	 * @var Certificate[] $_certificates
30
+	 */
31
+	protected $_certificates;
32 32
     
33
-    /**
34
-     * Constructor.
35
-     *
36
-     * @param Certificate ...$certificates Certificates from the trust anchor
37
-     *        to the target end-entity certificate
38
-     */
39
-    public function __construct(Certificate ...$certificates)
40
-    {
41
-        $this->_certificates = $certificates;
42
-    }
33
+	/**
34
+	 * Constructor.
35
+	 *
36
+	 * @param Certificate ...$certificates Certificates from the trust anchor
37
+	 *        to the target end-entity certificate
38
+	 */
39
+	public function __construct(Certificate ...$certificates)
40
+	{
41
+		$this->_certificates = $certificates;
42
+	}
43 43
     
44
-    /**
45
-     * Initialize from a certificate chain.
46
-     *
47
-     * @param CertificateChain $chain
48
-     * @return self
49
-     */
50
-    public static function fromCertificateChain(CertificateChain $chain)
51
-    {
52
-        return new self(...array_reverse($chain->certificates(), false));
53
-    }
44
+	/**
45
+	 * Initialize from a certificate chain.
46
+	 *
47
+	 * @param CertificateChain $chain
48
+	 * @return self
49
+	 */
50
+	public static function fromCertificateChain(CertificateChain $chain)
51
+	{
52
+		return new self(...array_reverse($chain->certificates(), false));
53
+	}
54 54
     
55
-    /**
56
-     * Build certification path to given target.
57
-     *
58
-     * @param Certificate $target Target end-entity certificate
59
-     * @param CertificateBundle $trust_anchors List of trust anchors
60
-     * @param CertificateBundle|null $intermediate Optional intermediate
61
-     *        certificates
62
-     * @return self
63
-     */
64
-    public static function toTarget(Certificate $target,
65
-        CertificateBundle $trust_anchors, CertificateBundle $intermediate = null)
66
-    {
67
-        $builder = new CertificationPathBuilder($trust_anchors);
68
-        return $builder->shortestPathToTarget($target, $intermediate);
69
-    }
55
+	/**
56
+	 * Build certification path to given target.
57
+	 *
58
+	 * @param Certificate $target Target end-entity certificate
59
+	 * @param CertificateBundle $trust_anchors List of trust anchors
60
+	 * @param CertificateBundle|null $intermediate Optional intermediate
61
+	 *        certificates
62
+	 * @return self
63
+	 */
64
+	public static function toTarget(Certificate $target,
65
+		CertificateBundle $trust_anchors, CertificateBundle $intermediate = null)
66
+	{
67
+		$builder = new CertificationPathBuilder($trust_anchors);
68
+		return $builder->shortestPathToTarget($target, $intermediate);
69
+	}
70 70
     
71
-    /**
72
-     * Build certification path from given trust anchor to target certificate,
73
-     * using intermediate certificates from given bundle.
74
-     *
75
-     * @param Certificate $trust_anchor Trust anchor certificate
76
-     * @param Certificate $target Target end-entity certificate
77
-     * @param CertificateBundle|null $intermediate Optional intermediate
78
-     *        certificates
79
-     * @return self
80
-     */
81
-    public static function fromTrustAnchorToTarget(Certificate $trust_anchor,
82
-        Certificate $target, CertificateBundle $intermediate = null)
83
-    {
84
-        return self::toTarget($target, new CertificateBundle($trust_anchor),
85
-            $intermediate);
86
-    }
71
+	/**
72
+	 * Build certification path from given trust anchor to target certificate,
73
+	 * using intermediate certificates from given bundle.
74
+	 *
75
+	 * @param Certificate $trust_anchor Trust anchor certificate
76
+	 * @param Certificate $target Target end-entity certificate
77
+	 * @param CertificateBundle|null $intermediate Optional intermediate
78
+	 *        certificates
79
+	 * @return self
80
+	 */
81
+	public static function fromTrustAnchorToTarget(Certificate $trust_anchor,
82
+		Certificate $target, CertificateBundle $intermediate = null)
83
+	{
84
+		return self::toTarget($target, new CertificateBundle($trust_anchor),
85
+			$intermediate);
86
+	}
87 87
     
88
-    /**
89
-     * Get certificates.
90
-     *
91
-     * @return Certificate[]
92
-     */
93
-    public function certificates(): array
94
-    {
95
-        return $this->_certificates;
96
-    }
88
+	/**
89
+	 * Get certificates.
90
+	 *
91
+	 * @return Certificate[]
92
+	 */
93
+	public function certificates(): array
94
+	{
95
+		return $this->_certificates;
96
+	}
97 97
     
98
-    /**
99
-     * Get the trust anchor certificate from the path.
100
-     *
101
-     * @throws \LogicException If path is empty
102
-     * @return Certificate
103
-     */
104
-    public function trustAnchorCertificate(): Certificate
105
-    {
106
-        if (!count($this->_certificates)) {
107
-            throw new \LogicException("No certificates.");
108
-        }
109
-        return $this->_certificates[0];
110
-    }
98
+	/**
99
+	 * Get the trust anchor certificate from the path.
100
+	 *
101
+	 * @throws \LogicException If path is empty
102
+	 * @return Certificate
103
+	 */
104
+	public function trustAnchorCertificate(): Certificate
105
+	{
106
+		if (!count($this->_certificates)) {
107
+			throw new \LogicException("No certificates.");
108
+		}
109
+		return $this->_certificates[0];
110
+	}
111 111
     
112
-    /**
113
-     * Get the end-entity certificate from the path.
114
-     *
115
-     * @throws \LogicException If path is empty
116
-     * @return Certificate
117
-     */
118
-    public function endEntityCertificate(): Certificate
119
-    {
120
-        if (!count($this->_certificates)) {
121
-            throw new \LogicException("No certificates.");
122
-        }
123
-        return $this->_certificates[count($this->_certificates) - 1];
124
-    }
112
+	/**
113
+	 * Get the end-entity certificate from the path.
114
+	 *
115
+	 * @throws \LogicException If path is empty
116
+	 * @return Certificate
117
+	 */
118
+	public function endEntityCertificate(): Certificate
119
+	{
120
+		if (!count($this->_certificates)) {
121
+			throw new \LogicException("No certificates.");
122
+		}
123
+		return $this->_certificates[count($this->_certificates) - 1];
124
+	}
125 125
     
126
-    /**
127
-     * Get certification path as a certificate chain.
128
-     *
129
-     * @return CertificateChain
130
-     */
131
-    public function certificateChain(): CertificateChain
132
-    {
133
-        return new CertificateChain(
134
-            ...array_reverse($this->_certificates, false));
135
-    }
126
+	/**
127
+	 * Get certification path as a certificate chain.
128
+	 *
129
+	 * @return CertificateChain
130
+	 */
131
+	public function certificateChain(): CertificateChain
132
+	{
133
+		return new CertificateChain(
134
+			...array_reverse($this->_certificates, false));
135
+	}
136 136
     
137
-    /**
138
-     * Check whether certification path starts with one ore more given
139
-     * certificates in parameter order.
140
-     *
141
-     * @param Certificate ...$certs Certificates
142
-     * @return true
143
-     */
144
-    public function startsWith(Certificate ...$certs)
145
-    {
146
-        $n = count($certs);
147
-        if ($n > count($this->_certificates)) {
148
-            return false;
149
-        }
150
-        for ($i = 0; $i < $n; ++$i) {
151
-            if (!$certs[$i]->equals($this->_certificates[$i])) {
152
-                return false;
153
-            }
154
-        }
155
-        return true;
156
-    }
137
+	/**
138
+	 * Check whether certification path starts with one ore more given
139
+	 * certificates in parameter order.
140
+	 *
141
+	 * @param Certificate ...$certs Certificates
142
+	 * @return true
143
+	 */
144
+	public function startsWith(Certificate ...$certs)
145
+	{
146
+		$n = count($certs);
147
+		if ($n > count($this->_certificates)) {
148
+			return false;
149
+		}
150
+		for ($i = 0; $i < $n; ++$i) {
151
+			if (!$certs[$i]->equals($this->_certificates[$i])) {
152
+				return false;
153
+			}
154
+		}
155
+		return true;
156
+	}
157 157
     
158
-    /**
159
-     * Validate certification path.
160
-     *
161
-     * @param PathValidationConfig $config
162
-     * @param Crypto|null $crypto Crypto engine, use default if not set
163
-     * @throws Exception\PathValidationException
164
-     * @return PathValidation\PathValidationResult
165
-     */
166
-    public function validate(PathValidationConfig $config,
167
-         Crypto $crypto = null): PathValidation\PathValidationResult
168
-    {
169
-        $crypto = $crypto ?: Crypto::getDefault();
170
-        $validator = new PathValidator($crypto, $config, ...$this->_certificates);
171
-        return $validator->validate();
172
-    }
158
+	/**
159
+	 * Validate certification path.
160
+	 *
161
+	 * @param PathValidationConfig $config
162
+	 * @param Crypto|null $crypto Crypto engine, use default if not set
163
+	 * @throws Exception\PathValidationException
164
+	 * @return PathValidation\PathValidationResult
165
+	 */
166
+	public function validate(PathValidationConfig $config,
167
+		 Crypto $crypto = null): PathValidation\PathValidationResult
168
+	{
169
+		$crypto = $crypto ?: Crypto::getDefault();
170
+		$validator = new PathValidator($crypto, $config, ...$this->_certificates);
171
+		return $validator->validate();
172
+	}
173 173
     
174
-    /**
175
-     *
176
-     * @see \Countable::count()
177
-     * @return int
178
-     */
179
-    public function count(): int
180
-    {
181
-        return count($this->_certificates);
182
-    }
174
+	/**
175
+	 *
176
+	 * @see \Countable::count()
177
+	 * @return int
178
+	 */
179
+	public function count(): int
180
+	{
181
+		return count($this->_certificates);
182
+	}
183 183
     
184
-    /**
185
-     * Get iterator for certificates.
186
-     *
187
-     * @see \IteratorAggregate::getIterator()
188
-     * @return \ArrayIterator
189
-     */
190
-    public function getIterator(): \ArrayIterator
191
-    {
192
-        return new \ArrayIterator($this->_certificates);
193
-    }
184
+	/**
185
+	 * Get iterator for certificates.
186
+	 *
187
+	 * @see \IteratorAggregate::getIterator()
188
+	 * @return \ArrayIterator
189
+	 */
190
+	public function getIterator(): \ArrayIterator
191
+	{
192
+		return new \ArrayIterator($this->_certificates);
193
+	}
194 194
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath;
6 6
 
Please login to merge, or discard this patch.
lib/X509/CertificationPath/PathValidation/ValidatorState.php 2 patches
Indentation   +480 added lines, -480 removed lines patch added patch discarded remove patch
@@ -20,484 +20,484 @@
 block discarded – undo
20 20
  */
21 21
 class ValidatorState
22 22
 {
23
-    /**
24
-     * Length of the certification path (n).
25
-     *
26
-     * @var int $_pathLength
27
-     */
28
-    protected $_pathLength;
29
-    
30
-    /**
31
-     * Current index in the certification path in the range of 1..n (i).
32
-     *
33
-     * @var int $_index
34
-     */
35
-    protected $_index;
36
-    
37
-    /**
38
-     * Valid policy tree (valid_policy_tree).
39
-     *
40
-     * A tree of certificate policies with their optional qualifiers.
41
-     * Each of the leaves of the tree represents a valid policy at this stage in
42
-     * the certification path validation.
43
-     * Once the tree is set to NULL, policy processing ceases.
44
-     *
45
-     * @var PolicyTree|null $_validPolicyTree
46
-     */
47
-    protected $_validPolicyTree;
48
-    
49
-    /**
50
-     * Permitted subtrees (permitted_subtrees).
51
-     *
52
-     * A set of root names for each name type defining a set of subtrees within
53
-     * which all subject names in subsequent certificates in the certification
54
-     * path must fall.
55
-     *
56
-     * @var mixed $_permittedSubtrees
57
-     */
58
-    protected $_permittedSubtrees;
59
-    
60
-    /**
61
-     * Excluded subtrees (excluded_subtrees).
62
-     *
63
-     * A set of root names for each name type defining a set of subtrees within
64
-     * which no subject name in subsequent certificates in the certification
65
-     * path may fall.
66
-     *
67
-     * @var mixed $_excludedSubtrees
68
-     */
69
-    protected $_excludedSubtrees;
70
-    
71
-    /**
72
-     * Explicit policy (explicit_policy).
73
-     *
74
-     * An integer that indicates if a non-NULL valid_policy_tree is required.
75
-     *
76
-     * @var int $_explicitPolicy
77
-     */
78
-    protected $_explicitPolicy;
79
-    
80
-    /**
81
-     * Inhibit anyPolicy (inhibit_anyPolicy).
82
-     *
83
-     * An integer that indicates whether the anyPolicy policy identifier is
84
-     * considered a match.
85
-     *
86
-     * @var int $_inhibitAnyPolicy
87
-     */
88
-    protected $_inhibitAnyPolicy;
89
-    
90
-    /**
91
-     * Policy mapping (policy_mapping).
92
-     *
93
-     * An integer that indicates if policy mapping is permitted.
94
-     *
95
-     * @var int $_policyMapping
96
-     */
97
-    protected $_policyMapping;
98
-    
99
-    /**
100
-     * Working public key algorithm (working_public_key_algorithm).
101
-     *
102
-     * The digital signature algorithm used to verify the signature of a
103
-     * certificate.
104
-     *
105
-     * @var AlgorithmIdentifierType $_workingPublicKeyAlgorithm
106
-     */
107
-    protected $_workingPublicKeyAlgorithm;
108
-    
109
-    /**
110
-     * Working public key (working_public_key).
111
-     *
112
-     * The public key used to verify the signature of a certificate.
113
-     *
114
-     * @var PublicKeyInfo $_workingPublicKey
115
-     */
116
-    protected $_workingPublicKey;
117
-    
118
-    /**
119
-     * Working public key parameters (working_public_key_parameters).
120
-     *
121
-     * Parameters associated with the current public key that may be required to
122
-     * verify a signature.
123
-     *
124
-     * @var Element|null $_workingPublicKeyParameters
125
-     */
126
-    protected $_workingPublicKeyParameters;
127
-    
128
-    /**
129
-     * Working issuer name (working_issuer_name).
130
-     *
131
-     * The issuer distinguished name expected in the next certificate in the
132
-     * chain.
133
-     *
134
-     * @var Name $_workingIssuerName
135
-     */
136
-    protected $_workingIssuerName;
137
-    
138
-    /**
139
-     * Maximum certification path length (max_path_length).
140
-     *
141
-     * @var int $_maxPathLength
142
-     */
143
-    protected $_maxPathLength;
144
-    
145
-    /**
146
-     * Constructor.
147
-     */
148
-    protected function __construct()
149
-    {
150
-    }
151
-    
152
-    /**
153
-     * Initialize variables according to RFC 5280 6.1.2.
154
-     *
155
-     * @link https://tools.ietf.org/html/rfc5280#section-6.1.2
156
-     * @param PathValidationConfig $config
157
-     * @param Certificate $trust_anchor Trust anchor certificate
158
-     * @param int $n Number of certificates in the certification path
159
-     * @return self
160
-     */
161
-    public static function initialize(PathValidationConfig $config,
162
-        Certificate $trust_anchor, $n)
163
-    {
164
-        $state = new self();
165
-        $state->_pathLength = $n;
166
-        $state->_index = 1;
167
-        $state->_validPolicyTree = new PolicyTree(PolicyNode::anyPolicyNode());
168
-        $state->_permittedSubtrees = null;
169
-        $state->_excludedSubtrees = null;
170
-        $state->_explicitPolicy = $config->explicitPolicy() ? 0 : $n + 1;
171
-        $state->_inhibitAnyPolicy = $config->anyPolicyInhibit() ? 0 : $n + 1;
172
-        $state->_policyMapping = $config->policyMappingInhibit() ? 0 : $n + 1;
173
-        $state->_workingPublicKeyAlgorithm = $trust_anchor->signatureAlgorithm();
174
-        $tbsCert = $trust_anchor->tbsCertificate();
175
-        $state->_workingPublicKey = $tbsCert->subjectPublicKeyInfo();
176
-        $state->_workingPublicKeyParameters = self::getAlgorithmParameters(
177
-            $state->_workingPublicKey->algorithmIdentifier());
178
-        $state->_workingIssuerName = $tbsCert->issuer();
179
-        $state->_maxPathLength = $config->maxLength();
180
-        return $state;
181
-    }
182
-    
183
-    /**
184
-     * Get self with current certification path index set.
185
-     *
186
-     * @param int $index
187
-     * @return self
188
-     */
189
-    public function withIndex($index)
190
-    {
191
-        $state = clone $this;
192
-        $state->_index = $index;
193
-        return $state;
194
-    }
195
-    
196
-    /**
197
-     * Get self with valid_policy_tree.
198
-     *
199
-     * @param PolicyTree $policy_tree
200
-     * @return self
201
-     */
202
-    public function withValidPolicyTree(PolicyTree $policy_tree)
203
-    {
204
-        $state = clone $this;
205
-        $state->_validPolicyTree = $policy_tree;
206
-        return $state;
207
-    }
208
-    
209
-    /**
210
-     * Get self with valid_policy_tree set to null.
211
-     *
212
-     * @return self
213
-     */
214
-    public function withoutValidPolicyTree()
215
-    {
216
-        $state = clone $this;
217
-        $state->_validPolicyTree = null;
218
-        return $state;
219
-    }
220
-    
221
-    /**
222
-     * Get self with explicit_policy.
223
-     *
224
-     * @param int $num
225
-     * @return self
226
-     */
227
-    public function withExplicitPolicy($num)
228
-    {
229
-        $state = clone $this;
230
-        $state->_explicitPolicy = $num;
231
-        return $state;
232
-    }
233
-    
234
-    /**
235
-     * Get self with inhibit_anyPolicy.
236
-     *
237
-     * @param int $num
238
-     * @return self
239
-     */
240
-    public function withInhibitAnyPolicy($num)
241
-    {
242
-        $state = clone $this;
243
-        $state->_inhibitAnyPolicy = $num;
244
-        return $state;
245
-    }
246
-    
247
-    /**
248
-     * Get self with policy_mapping.
249
-     *
250
-     * @param int $num
251
-     * @return self
252
-     */
253
-    public function withPolicyMapping($num)
254
-    {
255
-        $state = clone $this;
256
-        $state->_policyMapping = $num;
257
-        return $state;
258
-    }
259
-    
260
-    /**
261
-     * Get self with working_public_key_algorithm.
262
-     *
263
-     * @param AlgorithmIdentifierType $algo
264
-     * @return self
265
-     */
266
-    public function withWorkingPublicKeyAlgorithm(AlgorithmIdentifierType $algo)
267
-    {
268
-        $state = clone $this;
269
-        $state->_workingPublicKeyAlgorithm = $algo;
270
-        return $state;
271
-    }
272
-    
273
-    /**
274
-     * Get self with working_public_key.
275
-     *
276
-     * @param PublicKeyInfo $pubkey_info
277
-     * @return self
278
-     */
279
-    public function withWorkingPublicKey(PublicKeyInfo $pubkey_info)
280
-    {
281
-        $state = clone $this;
282
-        $state->_workingPublicKey = $pubkey_info;
283
-        return $state;
284
-    }
285
-    
286
-    /**
287
-     * Get self with working_public_key_parameters.
288
-     *
289
-     * @param Element|null $params
290
-     * @return self
291
-     */
292
-    public function withWorkingPublicKeyParameters(Element $params = null)
293
-    {
294
-        $state = clone $this;
295
-        $state->_workingPublicKeyParameters = $params;
296
-        return $state;
297
-    }
298
-    
299
-    /**
300
-     * Get self with working_issuer_name.
301
-     *
302
-     * @param Name $issuer
303
-     * @return self
304
-     */
305
-    public function withWorkingIssuerName(Name $issuer)
306
-    {
307
-        $state = clone $this;
308
-        $state->_workingIssuerName = $issuer;
309
-        return $state;
310
-    }
311
-    
312
-    /**
313
-     * Get self with max_path_length.
314
-     *
315
-     * @param int $length
316
-     * @return self
317
-     */
318
-    public function withMaxPathLength($length)
319
-    {
320
-        $state = clone $this;
321
-        $state->_maxPathLength = $length;
322
-        return $state;
323
-    }
324
-    
325
-    /**
326
-     * Get the certification path length (n).
327
-     *
328
-     * @return int
329
-     */
330
-    public function pathLength(): int
331
-    {
332
-        return $this->_pathLength;
333
-    }
334
-    
335
-    /**
336
-     * Get the current index in certification path in the range of 1..n.
337
-     *
338
-     * @return int
339
-     */
340
-    public function index(): int
341
-    {
342
-        return $this->_index;
343
-    }
344
-    
345
-    /**
346
-     * Check whether valid_policy_tree is present.
347
-     *
348
-     * @return bool
349
-     */
350
-    public function hasValidPolicyTree(): bool
351
-    {
352
-        return isset($this->_validPolicyTree);
353
-    }
354
-    
355
-    /**
356
-     * Get valid_policy_tree.
357
-     *
358
-     * @throws \LogicException
359
-     * @return PolicyTree
360
-     */
361
-    public function validPolicyTree(): PolicyTree
362
-    {
363
-        if (!$this->hasValidPolicyTree()) {
364
-            throw new \LogicException("valid_policy_tree not set.");
365
-        }
366
-        return $this->_validPolicyTree;
367
-    }
368
-    
369
-    /**
370
-     * Get permitted_subtrees.
371
-     *
372
-     * @return mixed
373
-     */
374
-    public function permittedSubtrees()
375
-    {
376
-        return $this->_permittedSubtrees;
377
-    }
378
-    
379
-    /**
380
-     * Get excluded_subtrees.
381
-     *
382
-     * @return mixed
383
-     */
384
-    public function excludedSubtrees()
385
-    {
386
-        return $this->_excludedSubtrees;
387
-    }
388
-    
389
-    /**
390
-     * Get explicit_policy.
391
-     *
392
-     * @return int
393
-     */
394
-    public function explicitPolicy()
395
-    {
396
-        return $this->_explicitPolicy;
397
-    }
398
-    
399
-    /**
400
-     * Get inhibit_anyPolicy.
401
-     *
402
-     * @return int
403
-     */
404
-    public function inhibitAnyPolicy(): int
405
-    {
406
-        return $this->_inhibitAnyPolicy;
407
-    }
408
-    
409
-    /**
410
-     * Get policy_mapping.
411
-     *
412
-     * @return int
413
-     */
414
-    public function policyMapping(): int
415
-    {
416
-        return $this->_policyMapping;
417
-    }
418
-    
419
-    /**
420
-     * Get working_public_key_algorithm.
421
-     *
422
-     * @return AlgorithmIdentifierType
423
-     */
424
-    public function workingPublicKeyAlgorithm(): AlgorithmIdentifierType
425
-    {
426
-        return $this->_workingPublicKeyAlgorithm;
427
-    }
428
-    
429
-    /**
430
-     * Get working_public_key.
431
-     *
432
-     * @return PublicKeyInfo
433
-     */
434
-    public function workingPublicKey(): PublicKeyInfo
435
-    {
436
-        return $this->_workingPublicKey;
437
-    }
438
-    
439
-    /**
440
-     * Get working_public_key_parameters.
441
-     *
442
-     * @return Element|null
443
-     */
444
-    public function workingPublicKeyParameters()
445
-    {
446
-        return $this->_workingPublicKeyParameters;
447
-    }
448
-    
449
-    /**
450
-     * Get working_issuer_name.
451
-     *
452
-     * @return Name
453
-     */
454
-    public function workingIssuerName(): Name
455
-    {
456
-        return $this->_workingIssuerName;
457
-    }
458
-    
459
-    /**
460
-     * Get maximum certification path length.
461
-     *
462
-     * @return int
463
-     */
464
-    public function maxPathLength(): int
465
-    {
466
-        return $this->_maxPathLength;
467
-    }
468
-    
469
-    /**
470
-     * Check whether processing the final certificate of the certification path.
471
-     *
472
-     * @return bool
473
-     */
474
-    public function isFinal(): bool
475
-    {
476
-        return $this->_index == $this->_pathLength;
477
-    }
478
-    
479
-    /**
480
-     * Get the path validation result.
481
-     *
482
-     * @param Certificate[] $certificates Certificates in a certification path
483
-     * @return PathValidationResult
484
-     */
485
-    public function getResult(array $certificates): PathValidationResult
486
-    {
487
-        return new PathValidationResult($certificates, $this->_validPolicyTree,
488
-            $this->_workingPublicKey, $this->_workingPublicKeyAlgorithm,
489
-            $this->_workingPublicKeyParameters);
490
-    }
491
-    
492
-    /**
493
-     * Get ASN.1 parameters from algorithm identifier.
494
-     *
495
-     * @param AlgorithmIdentifierType $algo
496
-     * @return Element|null ASN.1 element or null if parameters are omitted
497
-     */
498
-    public static function getAlgorithmParameters(AlgorithmIdentifierType $algo)
499
-    {
500
-        $seq = $algo->toASN1();
501
-        return $seq->has(1) ? $seq->at(1)->asElement() : null;
502
-    }
23
+	/**
24
+	 * Length of the certification path (n).
25
+	 *
26
+	 * @var int $_pathLength
27
+	 */
28
+	protected $_pathLength;
29
+    
30
+	/**
31
+	 * Current index in the certification path in the range of 1..n (i).
32
+	 *
33
+	 * @var int $_index
34
+	 */
35
+	protected $_index;
36
+    
37
+	/**
38
+	 * Valid policy tree (valid_policy_tree).
39
+	 *
40
+	 * A tree of certificate policies with their optional qualifiers.
41
+	 * Each of the leaves of the tree represents a valid policy at this stage in
42
+	 * the certification path validation.
43
+	 * Once the tree is set to NULL, policy processing ceases.
44
+	 *
45
+	 * @var PolicyTree|null $_validPolicyTree
46
+	 */
47
+	protected $_validPolicyTree;
48
+    
49
+	/**
50
+	 * Permitted subtrees (permitted_subtrees).
51
+	 *
52
+	 * A set of root names for each name type defining a set of subtrees within
53
+	 * which all subject names in subsequent certificates in the certification
54
+	 * path must fall.
55
+	 *
56
+	 * @var mixed $_permittedSubtrees
57
+	 */
58
+	protected $_permittedSubtrees;
59
+    
60
+	/**
61
+	 * Excluded subtrees (excluded_subtrees).
62
+	 *
63
+	 * A set of root names for each name type defining a set of subtrees within
64
+	 * which no subject name in subsequent certificates in the certification
65
+	 * path may fall.
66
+	 *
67
+	 * @var mixed $_excludedSubtrees
68
+	 */
69
+	protected $_excludedSubtrees;
70
+    
71
+	/**
72
+	 * Explicit policy (explicit_policy).
73
+	 *
74
+	 * An integer that indicates if a non-NULL valid_policy_tree is required.
75
+	 *
76
+	 * @var int $_explicitPolicy
77
+	 */
78
+	protected $_explicitPolicy;
79
+    
80
+	/**
81
+	 * Inhibit anyPolicy (inhibit_anyPolicy).
82
+	 *
83
+	 * An integer that indicates whether the anyPolicy policy identifier is
84
+	 * considered a match.
85
+	 *
86
+	 * @var int $_inhibitAnyPolicy
87
+	 */
88
+	protected $_inhibitAnyPolicy;
89
+    
90
+	/**
91
+	 * Policy mapping (policy_mapping).
92
+	 *
93
+	 * An integer that indicates if policy mapping is permitted.
94
+	 *
95
+	 * @var int $_policyMapping
96
+	 */
97
+	protected $_policyMapping;
98
+    
99
+	/**
100
+	 * Working public key algorithm (working_public_key_algorithm).
101
+	 *
102
+	 * The digital signature algorithm used to verify the signature of a
103
+	 * certificate.
104
+	 *
105
+	 * @var AlgorithmIdentifierType $_workingPublicKeyAlgorithm
106
+	 */
107
+	protected $_workingPublicKeyAlgorithm;
108
+    
109
+	/**
110
+	 * Working public key (working_public_key).
111
+	 *
112
+	 * The public key used to verify the signature of a certificate.
113
+	 *
114
+	 * @var PublicKeyInfo $_workingPublicKey
115
+	 */
116
+	protected $_workingPublicKey;
117
+    
118
+	/**
119
+	 * Working public key parameters (working_public_key_parameters).
120
+	 *
121
+	 * Parameters associated with the current public key that may be required to
122
+	 * verify a signature.
123
+	 *
124
+	 * @var Element|null $_workingPublicKeyParameters
125
+	 */
126
+	protected $_workingPublicKeyParameters;
127
+    
128
+	/**
129
+	 * Working issuer name (working_issuer_name).
130
+	 *
131
+	 * The issuer distinguished name expected in the next certificate in the
132
+	 * chain.
133
+	 *
134
+	 * @var Name $_workingIssuerName
135
+	 */
136
+	protected $_workingIssuerName;
137
+    
138
+	/**
139
+	 * Maximum certification path length (max_path_length).
140
+	 *
141
+	 * @var int $_maxPathLength
142
+	 */
143
+	protected $_maxPathLength;
144
+    
145
+	/**
146
+	 * Constructor.
147
+	 */
148
+	protected function __construct()
149
+	{
150
+	}
151
+    
152
+	/**
153
+	 * Initialize variables according to RFC 5280 6.1.2.
154
+	 *
155
+	 * @link https://tools.ietf.org/html/rfc5280#section-6.1.2
156
+	 * @param PathValidationConfig $config
157
+	 * @param Certificate $trust_anchor Trust anchor certificate
158
+	 * @param int $n Number of certificates in the certification path
159
+	 * @return self
160
+	 */
161
+	public static function initialize(PathValidationConfig $config,
162
+		Certificate $trust_anchor, $n)
163
+	{
164
+		$state = new self();
165
+		$state->_pathLength = $n;
166
+		$state->_index = 1;
167
+		$state->_validPolicyTree = new PolicyTree(PolicyNode::anyPolicyNode());
168
+		$state->_permittedSubtrees = null;
169
+		$state->_excludedSubtrees = null;
170
+		$state->_explicitPolicy = $config->explicitPolicy() ? 0 : $n + 1;
171
+		$state->_inhibitAnyPolicy = $config->anyPolicyInhibit() ? 0 : $n + 1;
172
+		$state->_policyMapping = $config->policyMappingInhibit() ? 0 : $n + 1;
173
+		$state->_workingPublicKeyAlgorithm = $trust_anchor->signatureAlgorithm();
174
+		$tbsCert = $trust_anchor->tbsCertificate();
175
+		$state->_workingPublicKey = $tbsCert->subjectPublicKeyInfo();
176
+		$state->_workingPublicKeyParameters = self::getAlgorithmParameters(
177
+			$state->_workingPublicKey->algorithmIdentifier());
178
+		$state->_workingIssuerName = $tbsCert->issuer();
179
+		$state->_maxPathLength = $config->maxLength();
180
+		return $state;
181
+	}
182
+    
183
+	/**
184
+	 * Get self with current certification path index set.
185
+	 *
186
+	 * @param int $index
187
+	 * @return self
188
+	 */
189
+	public function withIndex($index)
190
+	{
191
+		$state = clone $this;
192
+		$state->_index = $index;
193
+		return $state;
194
+	}
195
+    
196
+	/**
197
+	 * Get self with valid_policy_tree.
198
+	 *
199
+	 * @param PolicyTree $policy_tree
200
+	 * @return self
201
+	 */
202
+	public function withValidPolicyTree(PolicyTree $policy_tree)
203
+	{
204
+		$state = clone $this;
205
+		$state->_validPolicyTree = $policy_tree;
206
+		return $state;
207
+	}
208
+    
209
+	/**
210
+	 * Get self with valid_policy_tree set to null.
211
+	 *
212
+	 * @return self
213
+	 */
214
+	public function withoutValidPolicyTree()
215
+	{
216
+		$state = clone $this;
217
+		$state->_validPolicyTree = null;
218
+		return $state;
219
+	}
220
+    
221
+	/**
222
+	 * Get self with explicit_policy.
223
+	 *
224
+	 * @param int $num
225
+	 * @return self
226
+	 */
227
+	public function withExplicitPolicy($num)
228
+	{
229
+		$state = clone $this;
230
+		$state->_explicitPolicy = $num;
231
+		return $state;
232
+	}
233
+    
234
+	/**
235
+	 * Get self with inhibit_anyPolicy.
236
+	 *
237
+	 * @param int $num
238
+	 * @return self
239
+	 */
240
+	public function withInhibitAnyPolicy($num)
241
+	{
242
+		$state = clone $this;
243
+		$state->_inhibitAnyPolicy = $num;
244
+		return $state;
245
+	}
246
+    
247
+	/**
248
+	 * Get self with policy_mapping.
249
+	 *
250
+	 * @param int $num
251
+	 * @return self
252
+	 */
253
+	public function withPolicyMapping($num)
254
+	{
255
+		$state = clone $this;
256
+		$state->_policyMapping = $num;
257
+		return $state;
258
+	}
259
+    
260
+	/**
261
+	 * Get self with working_public_key_algorithm.
262
+	 *
263
+	 * @param AlgorithmIdentifierType $algo
264
+	 * @return self
265
+	 */
266
+	public function withWorkingPublicKeyAlgorithm(AlgorithmIdentifierType $algo)
267
+	{
268
+		$state = clone $this;
269
+		$state->_workingPublicKeyAlgorithm = $algo;
270
+		return $state;
271
+	}
272
+    
273
+	/**
274
+	 * Get self with working_public_key.
275
+	 *
276
+	 * @param PublicKeyInfo $pubkey_info
277
+	 * @return self
278
+	 */
279
+	public function withWorkingPublicKey(PublicKeyInfo $pubkey_info)
280
+	{
281
+		$state = clone $this;
282
+		$state->_workingPublicKey = $pubkey_info;
283
+		return $state;
284
+	}
285
+    
286
+	/**
287
+	 * Get self with working_public_key_parameters.
288
+	 *
289
+	 * @param Element|null $params
290
+	 * @return self
291
+	 */
292
+	public function withWorkingPublicKeyParameters(Element $params = null)
293
+	{
294
+		$state = clone $this;
295
+		$state->_workingPublicKeyParameters = $params;
296
+		return $state;
297
+	}
298
+    
299
+	/**
300
+	 * Get self with working_issuer_name.
301
+	 *
302
+	 * @param Name $issuer
303
+	 * @return self
304
+	 */
305
+	public function withWorkingIssuerName(Name $issuer)
306
+	{
307
+		$state = clone $this;
308
+		$state->_workingIssuerName = $issuer;
309
+		return $state;
310
+	}
311
+    
312
+	/**
313
+	 * Get self with max_path_length.
314
+	 *
315
+	 * @param int $length
316
+	 * @return self
317
+	 */
318
+	public function withMaxPathLength($length)
319
+	{
320
+		$state = clone $this;
321
+		$state->_maxPathLength = $length;
322
+		return $state;
323
+	}
324
+    
325
+	/**
326
+	 * Get the certification path length (n).
327
+	 *
328
+	 * @return int
329
+	 */
330
+	public function pathLength(): int
331
+	{
332
+		return $this->_pathLength;
333
+	}
334
+    
335
+	/**
336
+	 * Get the current index in certification path in the range of 1..n.
337
+	 *
338
+	 * @return int
339
+	 */
340
+	public function index(): int
341
+	{
342
+		return $this->_index;
343
+	}
344
+    
345
+	/**
346
+	 * Check whether valid_policy_tree is present.
347
+	 *
348
+	 * @return bool
349
+	 */
350
+	public function hasValidPolicyTree(): bool
351
+	{
352
+		return isset($this->_validPolicyTree);
353
+	}
354
+    
355
+	/**
356
+	 * Get valid_policy_tree.
357
+	 *
358
+	 * @throws \LogicException
359
+	 * @return PolicyTree
360
+	 */
361
+	public function validPolicyTree(): PolicyTree
362
+	{
363
+		if (!$this->hasValidPolicyTree()) {
364
+			throw new \LogicException("valid_policy_tree not set.");
365
+		}
366
+		return $this->_validPolicyTree;
367
+	}
368
+    
369
+	/**
370
+	 * Get permitted_subtrees.
371
+	 *
372
+	 * @return mixed
373
+	 */
374
+	public function permittedSubtrees()
375
+	{
376
+		return $this->_permittedSubtrees;
377
+	}
378
+    
379
+	/**
380
+	 * Get excluded_subtrees.
381
+	 *
382
+	 * @return mixed
383
+	 */
384
+	public function excludedSubtrees()
385
+	{
386
+		return $this->_excludedSubtrees;
387
+	}
388
+    
389
+	/**
390
+	 * Get explicit_policy.
391
+	 *
392
+	 * @return int
393
+	 */
394
+	public function explicitPolicy()
395
+	{
396
+		return $this->_explicitPolicy;
397
+	}
398
+    
399
+	/**
400
+	 * Get inhibit_anyPolicy.
401
+	 *
402
+	 * @return int
403
+	 */
404
+	public function inhibitAnyPolicy(): int
405
+	{
406
+		return $this->_inhibitAnyPolicy;
407
+	}
408
+    
409
+	/**
410
+	 * Get policy_mapping.
411
+	 *
412
+	 * @return int
413
+	 */
414
+	public function policyMapping(): int
415
+	{
416
+		return $this->_policyMapping;
417
+	}
418
+    
419
+	/**
420
+	 * Get working_public_key_algorithm.
421
+	 *
422
+	 * @return AlgorithmIdentifierType
423
+	 */
424
+	public function workingPublicKeyAlgorithm(): AlgorithmIdentifierType
425
+	{
426
+		return $this->_workingPublicKeyAlgorithm;
427
+	}
428
+    
429
+	/**
430
+	 * Get working_public_key.
431
+	 *
432
+	 * @return PublicKeyInfo
433
+	 */
434
+	public function workingPublicKey(): PublicKeyInfo
435
+	{
436
+		return $this->_workingPublicKey;
437
+	}
438
+    
439
+	/**
440
+	 * Get working_public_key_parameters.
441
+	 *
442
+	 * @return Element|null
443
+	 */
444
+	public function workingPublicKeyParameters()
445
+	{
446
+		return $this->_workingPublicKeyParameters;
447
+	}
448
+    
449
+	/**
450
+	 * Get working_issuer_name.
451
+	 *
452
+	 * @return Name
453
+	 */
454
+	public function workingIssuerName(): Name
455
+	{
456
+		return $this->_workingIssuerName;
457
+	}
458
+    
459
+	/**
460
+	 * Get maximum certification path length.
461
+	 *
462
+	 * @return int
463
+	 */
464
+	public function maxPathLength(): int
465
+	{
466
+		return $this->_maxPathLength;
467
+	}
468
+    
469
+	/**
470
+	 * Check whether processing the final certificate of the certification path.
471
+	 *
472
+	 * @return bool
473
+	 */
474
+	public function isFinal(): bool
475
+	{
476
+		return $this->_index == $this->_pathLength;
477
+	}
478
+    
479
+	/**
480
+	 * Get the path validation result.
481
+	 *
482
+	 * @param Certificate[] $certificates Certificates in a certification path
483
+	 * @return PathValidationResult
484
+	 */
485
+	public function getResult(array $certificates): PathValidationResult
486
+	{
487
+		return new PathValidationResult($certificates, $this->_validPolicyTree,
488
+			$this->_workingPublicKey, $this->_workingPublicKeyAlgorithm,
489
+			$this->_workingPublicKeyParameters);
490
+	}
491
+    
492
+	/**
493
+	 * Get ASN.1 parameters from algorithm identifier.
494
+	 *
495
+	 * @param AlgorithmIdentifierType $algo
496
+	 * @return Element|null ASN.1 element or null if parameters are omitted
497
+	 */
498
+	public static function getAlgorithmParameters(AlgorithmIdentifierType $algo)
499
+	{
500
+		$seq = $algo->toASN1();
501
+		return $seq->has(1) ? $seq->at(1)->asElement() : null;
502
+	}
503 503
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath\PathValidation;
6 6
 
Please login to merge, or discard this patch.
lib/X509/CertificationPath/PathValidation/PathValidationResult.php 2 patches
Indentation   +74 added lines, -74 removed lines patch added patch discarded remove patch
@@ -16,85 +16,85 @@
 block discarded – undo
16 16
  */
17 17
 class PathValidationResult
18 18
 {
19
-    /**
20
-     * Certificates in a certification path.
21
-     *
22
-     * @var \X509\Certificate\Certificate[] $_certificates
23
-     */
24
-    protected $_certificates;
19
+	/**
20
+	 * Certificates in a certification path.
21
+	 *
22
+	 * @var \X509\Certificate\Certificate[] $_certificates
23
+	 */
24
+	protected $_certificates;
25 25
     
26
-    /**
27
-     * Valid policy tree.
28
-     *
29
-     * @var \X509\CertificationPath\Policy\PolicyTree|null $_policyTree
30
-     */
31
-    protected $_policyTree;
26
+	/**
27
+	 * Valid policy tree.
28
+	 *
29
+	 * @var \X509\CertificationPath\Policy\PolicyTree|null $_policyTree
30
+	 */
31
+	protected $_policyTree;
32 32
     
33
-    /**
34
-     * End-entity certificate's public key.
35
-     *
36
-     * @var PublicKeyInfo
37
-     */
38
-    protected $_publicKeyInfo;
33
+	/**
34
+	 * End-entity certificate's public key.
35
+	 *
36
+	 * @var PublicKeyInfo
37
+	 */
38
+	protected $_publicKeyInfo;
39 39
     
40
-    /**
41
-     * Public key algorithm.
42
-     *
43
-     * @var AlgorithmIdentifierType
44
-     */
45
-    protected $_publicKeyAlgo;
40
+	/**
41
+	 * Public key algorithm.
42
+	 *
43
+	 * @var AlgorithmIdentifierType
44
+	 */
45
+	protected $_publicKeyAlgo;
46 46
     
47
-    /**
48
-     * Public key parameters.
49
-     *
50
-     * @var Element|null $_publicKeyParameters
51
-     */
52
-    protected $_publicKeyParameters;
47
+	/**
48
+	 * Public key parameters.
49
+	 *
50
+	 * @var Element|null $_publicKeyParameters
51
+	 */
52
+	protected $_publicKeyParameters;
53 53
     
54
-    /**
55
-     * Constructor.
56
-     *
57
-     * @param \X509\Certificate\Certificate[] $certificates Certificates in a
58
-     *        certification path
59
-     * @param \X509\CertificationPath\Policy\PolicyTree|null $policy_tree Valid
60
-     *        policy tree
61
-     * @param PublicKeyInfo $pubkey_info Public key of the end-entity
62
-     *        certificate
63
-     * @param AlgorithmIdentifierType $algo Public key algorithm of the
64
-     *        end-entity certificate
65
-     * @param Element|null $params Algorithm parameters
66
-     */
67
-    public function __construct(array $certificates, $policy_tree,
68
-        PublicKeyInfo $pubkey_info, AlgorithmIdentifierType $algo,
69
-        Element $params = null)
70
-    {
71
-        $this->_certificates = array_values($certificates);
72
-        $this->_policyTree = $policy_tree;
73
-        $this->_publicKeyInfo = $pubkey_info;
74
-        $this->_publicKeyAlgo = $algo;
75
-        $this->_publicKeyParameters = $params;
76
-    }
54
+	/**
55
+	 * Constructor.
56
+	 *
57
+	 * @param \X509\Certificate\Certificate[] $certificates Certificates in a
58
+	 *        certification path
59
+	 * @param \X509\CertificationPath\Policy\PolicyTree|null $policy_tree Valid
60
+	 *        policy tree
61
+	 * @param PublicKeyInfo $pubkey_info Public key of the end-entity
62
+	 *        certificate
63
+	 * @param AlgorithmIdentifierType $algo Public key algorithm of the
64
+	 *        end-entity certificate
65
+	 * @param Element|null $params Algorithm parameters
66
+	 */
67
+	public function __construct(array $certificates, $policy_tree,
68
+		PublicKeyInfo $pubkey_info, AlgorithmIdentifierType $algo,
69
+		Element $params = null)
70
+	{
71
+		$this->_certificates = array_values($certificates);
72
+		$this->_policyTree = $policy_tree;
73
+		$this->_publicKeyInfo = $pubkey_info;
74
+		$this->_publicKeyAlgo = $algo;
75
+		$this->_publicKeyParameters = $params;
76
+	}
77 77
     
78
-    /**
79
-     * Get end-entity certificate.
80
-     *
81
-     * @return \X509\Certificate\Certificate
82
-     */
83
-    public function certificate(): Certificate
84
-    {
85
-        return $this->_certificates[count($this->_certificates) - 1];
86
-    }
78
+	/**
79
+	 * Get end-entity certificate.
80
+	 *
81
+	 * @return \X509\Certificate\Certificate
82
+	 */
83
+	public function certificate(): Certificate
84
+	{
85
+		return $this->_certificates[count($this->_certificates) - 1];
86
+	}
87 87
     
88
-    /**
89
-     * Get certificate policies of the end-entity certificate.
90
-     *
91
-     * @return \X509\Certificate\Extension\CertificatePolicy\PolicyInformation[]
92
-     */
93
-    public function policies(): array
94
-    {
95
-        if (!$this->_policyTree) {
96
-            return array();
97
-        }
98
-        return $this->_policyTree->policiesAtDepth(count($this->_certificates));
99
-    }
88
+	/**
89
+	 * Get certificate policies of the end-entity certificate.
90
+	 *
91
+	 * @return \X509\Certificate\Extension\CertificatePolicy\PolicyInformation[]
92
+	 */
93
+	public function policies(): array
94
+	{
95
+		if (!$this->_policyTree) {
96
+			return array();
97
+		}
98
+		return $this->_policyTree->policiesAtDepth(count($this->_certificates));
99
+	}
100 100
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace X509\CertificationPath\PathValidation;
6 6
 
Please login to merge, or discard this patch.