Skip to content

Commit 532b967

Browse files
committed
Address some of Cory's feedback
1 parent ce1432b commit 532b967

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

Sources/PackageCollectionsSigning/Certificate/Certificate.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,7 @@ final class BoringSSLCertificate {
155155
throw CertificateError.keyExtractionFailure
156156
}
157157

158-
let bytes = UnsafeBufferPointer(start: buffer, count: Int(length)).map { $0 }
159-
let data = Data(bytes)
158+
let data = Data(UnsafeBufferPointer(start: buffer, count: Int(length)))
160159

161160
switch try self.keyType(of: key) {
162161
case .RSA:
@@ -217,7 +216,7 @@ private extension UnsafeMutablePointer where Pointee == X509_NAME {
217216
return nil
218217
}
219218

220-
return value.map { String(validatingUTF8: $0) } ?? nil
219+
return String.decodeCString(value, as: UTF8.self, repairingInvalidCodeUnits: true)?.result
221220
}
222221
}
223222

Sources/PackageCollectionsSigning/Key/BoringSSLKey.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,23 @@ protocol BoringSSLKey {}
3030

3131
extension BoringSSLKey {
3232
// Source: https://github.com/vapor/jwt-kit/blob/master/Sources/JWTKit/Utilities/OpenSSLSigner.swift
33-
static func load<Data, T>(pem data: Data,
34-
_ closure: (UnsafeMutablePointer<BIO>) -> (T?)) throws -> T where Data: DataProtocol {
33+
static func load<Data, KeyType>(pem data: Data,
34+
_ createKey: (UnsafeMutablePointer<BIO>) -> (KeyType?)) throws -> KeyType where Data: DataProtocol {
3535
let bytes = data.copyBytes()
3636

37+
// Not doing `CCryptoBoringSSL_BIO_new_mem_buf(bytes, numericCast(bytes.count))` because
38+
// it causes `bioConversionFailure` error on *some* Linux builds (e.g., SPM Linux smoke test)
3739
let bio = CCryptoBoringSSL_BIO_new(CCryptoBoringSSL_BIO_s_mem())
3840
defer { CCryptoBoringSSL_BIO_free(bio) }
3941

4042
guard let bioPointer = bio, CCryptoBoringSSL_BIO_write(bioPointer, bytes, numericCast(bytes.count)) > 0 else {
4143
throw BoringSSLKeyError.bioInitializationFailure
4244
}
43-
guard let result = closure(bioPointer) else {
45+
guard let key = createKey(bioPointer) else {
4446
throw BoringSSLKeyError.bioConversionFailure
4547
}
4648

47-
return result
49+
return key
4850
}
4951
}
5052

0 commit comments

Comments
 (0)