Skip to content

Commit 4a6087c

Browse files
authored
[5.10] Bring back "Update swift-certificates to 1.0.1, swift-crypto to 3.0.0 (#6949)" (#6989)
This reverts the revert PR #6988 **This requires update-checkout changes**
1 parent 5facaa5 commit 4a6087c

File tree

6 files changed

+49
-81
lines changed

6 files changed

+49
-81
lines changed

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -740,10 +740,10 @@ if ProcessInfo.processInfo.environment["SWIFTCI_USE_LOCAL_DEPS"] == nil {
740740
// dependency version changes here with those projects.
741741
.package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.2.2")),
742742
.package(url: "https://github.com/apple/swift-driver.git", branch: relatedDependenciesBranch),
743-
.package(url: "https://github.com/apple/swift-crypto.git", .upToNextMinor(from: "2.5.0")),
743+
.package(url: "https://github.com/apple/swift-crypto.git", .upToNextMinor(from: "3.0.0")),
744744
.package(url: "https://github.com/apple/swift-system.git", .upToNextMinor(from: "1.1.1")),
745745
.package(url: "https://github.com/apple/swift-collections.git", .upToNextMinor(from: "1.0.1")),
746-
.package(url: "https://github.com/apple/swift-certificates.git", .upToNextMinor(from: "0.6.0")),
746+
.package(url: "https://github.com/apple/swift-certificates.git", .upToNextMinor(from: "1.0.1")),
747747
]
748748
} else {
749749
package.dependencies += [

Sources/PackageCollectionsSigning/CertificatePolicy.swift

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -408,27 +408,31 @@ struct _OCSPVerifierPolicy: VerifierPolicy {
408408
private struct _OCSPRequester: OCSPRequester {
409409
let httpClient: HTTPClient
410410

411-
func query(request: [UInt8], uri: String) async throws -> [UInt8] {
411+
func query(request: [UInt8], uri: String) async -> OCSPRequesterQueryResult {
412412
guard let url = URL(string: uri), let host = url.host else {
413-
throw SwiftOCSPRequesterError.invalidURL(uri)
413+
return .terminalError(SwiftOCSPRequesterError.invalidURL(uri))
414414
}
415415

416-
let response = try await self.httpClient.post(
417-
url,
418-
body: Data(request),
419-
headers: [
420-
"Content-Type": "application/ocsp-request",
421-
"Host": host,
422-
]
423-
)
416+
do {
417+
let response = try await self.httpClient.post(
418+
url,
419+
body: Data(request),
420+
headers: [
421+
"Content-Type": "application/ocsp-request",
422+
"Host": host,
423+
]
424+
)
424425

425-
guard response.statusCode == 200 else {
426-
throw SwiftOCSPRequesterError.invalidResponse(statusCode: response.statusCode)
427-
}
428-
guard let responseBody = response.body else {
429-
throw SwiftOCSPRequesterError.emptyResponse
426+
guard response.statusCode == 200 else {
427+
throw SwiftOCSPRequesterError.invalidResponse(statusCode: response.statusCode)
428+
}
429+
guard let responseBody = response.body else {
430+
throw SwiftOCSPRequesterError.emptyResponse
431+
}
432+
return .response(Array(responseBody))
433+
} catch {
434+
return .nonTerminalError(error)
430435
}
431-
return Array(responseBody)
432436
}
433437
}
434438

Sources/PackageCollectionsSigning/X509Extensions.swift

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -64,29 +64,9 @@ extension DistinguishedName {
6464
private func stringAttribute(oid: ASN1ObjectIdentifier) -> String? {
6565
for relativeDistinguishedName in self {
6666
for attribute in relativeDistinguishedName where attribute.type == oid {
67-
if let stringValue = attribute.stringValue {
68-
return stringValue
69-
}
67+
return attribute.value.description
7068
}
7169
}
7270
return nil
7371
}
7472
}
75-
76-
extension RelativeDistinguishedName.Attribute {
77-
fileprivate var stringValue: String? {
78-
let asn1StringBytes: ArraySlice<UInt8>?
79-
do {
80-
asn1StringBytes = try ASN1PrintableString(asn1Any: self.value).bytes
81-
} catch {
82-
asn1StringBytes = try? ASN1UTF8String(asn1Any: self.value).bytes
83-
}
84-
85-
guard let asn1StringBytes,
86-
let stringValue = String(bytes: asn1StringBytes, encoding: .utf8)
87-
else {
88-
return nil
89-
}
90-
return stringValue
91-
}
92-
}

Sources/PackageSigning/VerifierPolicies.swift

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ extension SignatureProviderProtocol {
3030
func buildPolicySet(configuration: VerifierConfiguration, httpClient: HTTPClient) -> some VerifierPolicy {
3131
_CodeSigningPolicy()
3232
_ADPCertificatePolicy()
33-
33+
3434
let now = Date()
3535
switch (configuration.certificateExpiration, configuration.certificateRevocation) {
3636
case (.enabled(let expiryValidationTime), .strict(let revocationValidationTime)):
@@ -164,27 +164,31 @@ struct _OCSPVerifierPolicy: VerifierPolicy {
164164
private struct _OCSPRequester: OCSPRequester {
165165
let httpClient: HTTPClient
166166

167-
func query(request: [UInt8], uri: String) async throws -> [UInt8] {
167+
func query(request: [UInt8], uri: String) async -> OCSPRequesterQueryResult {
168168
guard let url = URL(string: uri), let host = url.host else {
169-
throw SwiftOCSPRequesterError.invalidURL(uri)
169+
return .terminalError(SwiftOCSPRequesterError.invalidURL(uri))
170170
}
171171

172-
let response = try await self.httpClient.post(
173-
url,
174-
body: Data(request),
175-
headers: [
176-
"Content-Type": "application/ocsp-request",
177-
"Host": host,
178-
]
179-
)
172+
do {
173+
let response = try await self.httpClient.post(
174+
url,
175+
body: Data(request),
176+
headers: [
177+
"Content-Type": "application/ocsp-request",
178+
"Host": host,
179+
]
180+
)
180181

181-
guard response.statusCode == 200 else {
182-
throw SwiftOCSPRequesterError.invalidResponse(statusCode: response.statusCode)
183-
}
184-
guard let responseBody = response.body else {
185-
throw SwiftOCSPRequesterError.emptyResponse
182+
guard response.statusCode == 200 else {
183+
throw SwiftOCSPRequesterError.invalidResponse(statusCode: response.statusCode)
184+
}
185+
guard let responseBody = response.body else {
186+
throw SwiftOCSPRequesterError.emptyResponse
187+
}
188+
return .response(Array(responseBody))
189+
} catch {
190+
return .nonTerminalError(error)
186191
}
187-
return Array(responseBody)
188192
}
189193
}
190194

Sources/PackageSigning/X509Extensions.swift

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ extension Certificate {
4040
init(secIdentity: SecIdentity) throws {
4141
var secCertificate: SecCertificate?
4242
let status = SecIdentityCopyCertificate(secIdentity, &secCertificate)
43-
guard status == errSecSuccess, let secCertificate = secCertificate else {
43+
guard status == errSecSuccess, let secCertificate else {
4444
throw StringError("failed to get certificate from SecIdentity: status \(status)")
4545
}
4646
self = try Certificate(secCertificate: secCertificate)
@@ -70,33 +70,13 @@ extension DistinguishedName {
7070
private func stringAttribute(oid: ASN1ObjectIdentifier) -> String? {
7171
for relativeDistinguishedName in self {
7272
for attribute in relativeDistinguishedName where attribute.type == oid {
73-
if let stringValue = attribute.stringValue {
74-
return stringValue
75-
}
73+
return attribute.value.description
7674
}
7775
}
7876
return nil
7977
}
8078
}
8179

82-
extension RelativeDistinguishedName.Attribute {
83-
fileprivate var stringValue: String? {
84-
let asn1StringBytes: ArraySlice<UInt8>?
85-
do {
86-
asn1StringBytes = try ASN1PrintableString(asn1Any: self.value).bytes
87-
} catch {
88-
asn1StringBytes = try? ASN1UTF8String(asn1Any: self.value).bytes
89-
}
90-
91-
guard let asn1StringBytes,
92-
let stringValue = String(bytes: asn1StringBytes, encoding: .utf8)
93-
else {
94-
return nil
95-
}
96-
return stringValue
97-
}
98-
}
99-
10080
// MARK: - Certificate cache
10181

10282
extension Certificate {

Tests/PackageSigningTests/SigningTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -517,8 +517,8 @@ final class SigningTests: XCTestCase {
517517
responses: [OCSPSingleResponse(
518518
certID: singleRequest.certID,
519519
certStatus: .unknown,
520-
thisUpdate: try .init(validationTime - .days(1)),
521-
nextUpdate: try .init(validationTime + .days(1))
520+
thisUpdate: try GeneralizedTime(validationTime - .days(1)),
521+
nextUpdate: try GeneralizedTime(validationTime + .days(1))
522522
)],
523523
privateKey: intermediatePrivateKey,
524524
responseExtensions: { nonce }
@@ -1150,7 +1150,7 @@ enum OCSPTestHelper {
11501150
}
11511151
if isCodeSigning {
11521152
Critical(
1153-
ExtendedKeyUsage([ExtendedKeyUsage.Usage.codeSigning])
1153+
try ExtendedKeyUsage([ExtendedKeyUsage.Usage.codeSigning])
11541154
)
11551155
}
11561156
if let ocspServer {

0 commit comments

Comments
 (0)