1414
1515import SwiftASN1
1616
17- extension Certificate . Extensions {
18- /// Provides details on how to access information about the certificate issuer.
19- ///
20- /// This extension behaves as a collection of ``Certificate/Extensions-swift.struct/AuthorityInformationAccess-swift.struct/AccessDescription`` objects.
17+ /// Provides details on how to access information about the certificate issuer.
18+ ///
19+ /// This extension behaves as a collection of ``AuthorityInformationAccess/AccessDescription`` objects.
20+ ///
21+ /// In practice this most commonly contains OCSP servers and links to the issuing CA certificate.
22+ public struct AuthorityInformationAccess {
23+ @usableFromInline
24+ var descriptions : [ AccessDescription ]
25+
26+ /// Create a new ``AuthorityInformationAccess/`` object
27+ /// containing specific access descriptions.
2128 ///
22- /// In practice this most commonly contains OCSP servers and links to the issuing CA certificate.
23- public struct AuthorityInformationAccess {
24- @usableFromInline
25- var descriptions : [ AccessDescription ]
29+ /// - Parameter descriptions: The descriptions to include in the AIA extension.
30+ @inlinable
31+ public init < Descriptions: Sequence > ( _ descriptions: Descriptions ) where Descriptions. Element == AccessDescription {
32+ self . descriptions = Array ( descriptions)
33+ }
2634
27- /// Create a new ``Certificate/Extensions-swift.struct/AuthorityInformationAccess-swift.struct/`` object
28- /// containing specific access descriptions.
29- ///
30- /// - Parameter descriptions: The descriptions to include in the AIA extension.
31- @inlinable
32- public init < Descriptions: Sequence > ( _ descriptions: Descriptions ) where Descriptions. Element == AccessDescription {
33- self . descriptions = Array ( descriptions)
35+ /// Create a new ``AuthorityInformationAccess`` object
36+ /// by unwrapping a ``Certificate/Extension``.
37+ ///
38+ /// - Parameter ext: The ``Certificate/Extension`` to unwrap
39+ /// - Throws: if the ``Certificate/Extension/oid`` is not equal to
40+ /// `ASN1ObjectIdentifier.X509ExtensionID.authorityInformationAccess`.
41+ @inlinable
42+ public init ( _ ext: Certificate . Extension ) throws {
43+ guard ext. oid == . X509ExtensionID. authorityInformationAccess else {
44+ throw CertificateError . incorrectOIDForExtension ( reason: " Expected \( ASN1ObjectIdentifier . X509ExtensionID. authorityInformationAccess) , got \( ext. oid) " )
3445 }
3546
36- /// Create a new ``Certificate/Extensions-swift.struct/AuthorityInformationAccess-swift.struct`` object
37- /// by unwrapping a ``Certificate/Extension``.
38- ///
39- /// - Parameter ext: The ``Certificate/Extension`` to unwrap
40- /// - Throws: if the ``Certificate/Extension/oid`` is not equal to
41- /// `ASN1ObjectIdentifier.X509ExtensionID.authorityInformationAccess`.
42- @inlinable
43- public init ( _ ext: Certificate . Extension ) throws {
44- guard ext. oid == . X509ExtensionID. authorityInformationAccess else {
45- throw CertificateError . incorrectOIDForExtension ( reason: " Expected \( ASN1ObjectIdentifier . X509ExtensionID. authorityInformationAccess) , got \( ext. oid) " )
46- }
47-
48- let aiaSyntax = try AuthorityInfoAccessSyntax ( derEncoded: ext. value)
49- self . descriptions = aiaSyntax. descriptions. map { AccessDescription ( $0) }
50- }
47+ let aiaSyntax = try AuthorityInfoAccessSyntax ( derEncoded: ext. value)
48+ self . descriptions = aiaSyntax. descriptions. map { AccessDescription ( $0) }
5149 }
5250}
5351
54- extension Certificate . Extensions . AuthorityInformationAccess : Hashable { }
52+ extension AuthorityInformationAccess : Hashable { }
5553
56- extension Certificate . Extensions . AuthorityInformationAccess : Sendable { }
54+ extension AuthorityInformationAccess : Sendable { }
5755
58- extension Certificate . Extensions . AuthorityInformationAccess : CustomStringConvertible {
56+ extension AuthorityInformationAccess : CustomStringConvertible {
5957 public var description : String {
6058 return self . map { String ( describing: $0) } . joined ( separator: " , " )
6159 }
6260}
6361
6462// TODO(cory): Probably also RangeReplaceableCollection, even though it's kinda crap.
65- extension Certificate . Extensions . AuthorityInformationAccess : RandomAccessCollection {
63+ extension AuthorityInformationAccess : RandomAccessCollection {
6664 @inlinable
6765 public var startIndex : Int {
6866 self . descriptions. startIndex
@@ -85,7 +83,7 @@ extension Certificate.Extensions.AuthorityInformationAccess: RandomAccessCollect
8583 }
8684}
8785
88- extension Certificate . Extensions . AuthorityInformationAccess {
86+ extension AuthorityInformationAccess {
8987 /// Describes the location and format of additional information provided
9088 /// by the issuer of a given certificate.
9189 public struct AccessDescription {
@@ -95,7 +93,7 @@ extension Certificate.Extensions.AuthorityInformationAccess {
9593 /// The location where the information may be found.
9694 public var location : GeneralName
9795
98- /// Construct a new ``Certificate/Extensions-swift.struct/ AuthorityInformationAccess-swift.struct /AccessDescription`` from constituent parts.
96+ /// Construct a new ``AuthorityInformationAccess/AccessDescription`` from constituent parts.
9997 @inlinable
10098 public init ( method: AccessMethod , location: GeneralName ) {
10199 self . method = method
@@ -110,19 +108,19 @@ extension Certificate.Extensions.AuthorityInformationAccess {
110108 }
111109}
112110
113- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription : Hashable { }
111+ extension AuthorityInformationAccess . AccessDescription : Hashable { }
114112
115- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription : Sendable { }
113+ extension AuthorityInformationAccess . AccessDescription : Sendable { }
116114
117- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription : CustomStringConvertible {
115+ extension AuthorityInformationAccess . AccessDescription : CustomStringConvertible {
118116 public var description : String {
119117 return " \( self . method) : \( self . location) "
120118 }
121119}
122120
123- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription {
121+ extension AuthorityInformationAccess . AccessDescription {
124122 /// The format and meaning of the information included in a single
125- /// ``Certificate/Extensions-swift.struct/ AuthorityInformationAccess-swift.struct /AccessDescription``
123+ /// ``AuthorityInformationAccess/AccessDescription``
126124 /// object.
127125 public struct AccessMethod {
128126 @usableFromInline
@@ -160,11 +158,11 @@ extension Certificate.Extensions.AuthorityInformationAccess.AccessDescription {
160158 }
161159}
162160
163- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription . AccessMethod : Hashable { }
161+ extension AuthorityInformationAccess . AccessDescription . AccessMethod : Hashable { }
164162
165- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription . AccessMethod : Sendable { }
163+ extension AuthorityInformationAccess . AccessDescription . AccessMethod : Sendable { }
166164
167- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription . AccessMethod : CustomStringConvertible {
165+ extension AuthorityInformationAccess . AccessDescription . AccessMethod : CustomStringConvertible {
168166 @inlinable
169167 public var description : String {
170168 switch self . backing {
@@ -178,9 +176,9 @@ extension Certificate.Extensions.AuthorityInformationAccess.AccessDescription.Ac
178176 }
179177}
180178
181- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription . AccessMethod . Backing : Hashable { }
179+ extension AuthorityInformationAccess . AccessDescription . AccessMethod . Backing : Hashable { }
182180
183- extension Certificate . Extensions . AuthorityInformationAccess . AccessDescription . AccessMethod . Backing : Sendable { }
181+ extension AuthorityInformationAccess . AccessDescription . AccessMethod . Backing : Sendable { }
184182
185183extension Certificate . Extension {
186184 /// Construct an opaque ``Certificate/Extension`` from this AIA extension.
@@ -189,15 +187,15 @@ extension Certificate.Extension {
189187 /// - aia: The extension to wrap
190188 /// - critical: Whether this extension should have the critical bit set.
191189 @inlinable
192- public init ( _ aia: Certificate . Extensions . AuthorityInformationAccess , critical: Bool ) throws {
190+ public init ( _ aia: AuthorityInformationAccess , critical: Bool ) throws {
193191 let asn1Representation = AuthorityInfoAccessSyntax ( aia)
194192 var serializer = DER . Serializer ( )
195193 try serializer. serialize ( asn1Representation)
196194 self . init ( oid: . X509ExtensionID. authorityInformationAccess, critical: critical, value: serializer. serializedBytes [ ... ] )
197195 }
198196}
199197
200- extension Certificate . Extensions . AuthorityInformationAccess : CertificateExtensionConvertible {
198+ extension AuthorityInformationAccess : CertificateExtensionConvertible {
201199 public func makeCertificateExtension( ) throws -> Certificate . Extension {
202200 return try . init( self , critical: false )
203201 }
@@ -222,7 +220,7 @@ struct AuthorityInfoAccessSyntax: DERImplicitlyTaggable {
222220 var descriptions : [ AIAAccessDescription ]
223221
224222 @inlinable
225- init ( _ aia: Certificate . Extensions . AuthorityInformationAccess ) {
223+ init ( _ aia: AuthorityInformationAccess ) {
226224 self . descriptions = aia. descriptions. map { . init( $0) }
227225 }
228226
@@ -261,7 +259,7 @@ struct AIAAccessDescription: DERImplicitlyTaggable {
261259 }
262260
263261 @inlinable
264- init ( _ description: Certificate . Extensions . AuthorityInformationAccess . AccessDescription ) {
262+ init ( _ description: AuthorityInformationAccess . AccessDescription ) {
265263 self . accessMethod = ASN1ObjectIdentifier ( accessMethod: description. method)
266264 self . accessLocation = description. location
267265 }
@@ -295,7 +293,7 @@ extension ASN1ObjectIdentifier {
295293 }
296294
297295 @inlinable
298- public init ( accessMethod: Certificate . Extensions . AuthorityInformationAccess . AccessDescription . AccessMethod ) {
296+ public init ( accessMethod: AuthorityInformationAccess . AccessDescription . AccessMethod ) {
299297 switch accessMethod. backing {
300298 case . ocspServer:
301299 self = . AccessMethodIdentifiers. ocspServer
0 commit comments