Skip to content

Commit

Permalink
Rewrite PackageCollectionsSigning using swift-certificates (#6468)
Browse files Browse the repository at this point in the history
* Rewrite PackageCollectionsSigning using swift-certificates

Motivation:
`PackageCollectionsSigning` was written before `swift-certificates` and `swift-asn1` were available. The implementation relied on BoringSSL C library via `CCryptoBoringSSL`, which is not meant to be used outside of `swift-crypto` because it introduces Swift-breaking changes often (as SwiftPM had experienced with version `2.4.1`).

Modifications:
- Rewrite `PackageCollectionsSigning` using `swift-certificates` and `swift-asn1` so we can remove `CCryptoBoringSSL` dependency.
- `PackageCollectionsSigningLibC`, which contains SwiftPM's implementation of OCSP, is no longer needed and removed in this PR.

* Fix file not found error in tests

* Fix compilation error: cannot find 'Task' in scope

* Specify RSA signing padding to ensure backwards compatibility
  • Loading branch information
yim-lee committed May 4, 2023
1 parent a4cd224 commit ef422c1
Show file tree
Hide file tree
Showing 54 changed files with 2,486 additions and 6,395 deletions.
5 changes: 5 additions & 0 deletions Fixtures/Signing/Certificates/Test_ec_key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIGfOkQcQq6oTC06KkGMVBAr2MiYFRaLo4/wKdNBpIjhnoAoGCCqGSM49
AwEHoUQDQgAE6SjFVQRtU/+ywvxslaVsl+iZf65YgkQShuxsbAbNJBTVkEkMGyNL
8nbaj6B4Jskjo1loNPLirNE7mKeTLYbrcw==
-----END EC PRIVATE KEY-----
27 changes: 27 additions & 0 deletions Fixtures/Signing/Certificates/Test_rsa_key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA13XgJ9lIhR2LefNxQdo3tVrbXEZ3o4T8+MgteVJVohbPMypf
yGgGlJJ/r7+hhL/klsPDyR4SAtgLZUGFVt3WzGMolGyV11VUTTFHMWZ10tcgrUmR
5wg2n5E59FsJf3y3WTs5CpD2tM8igWyAUOyS/MWvhgnMtvBG8I4Mg9xyyWi/GW3g
PLXfnyULW/v2Zg+yG9j+/Bbpx+AP8TCvWoiPyiLEZ/DKZK2kC+8mkwOtHYDMkBO5
2nIrxopB42VUWYBfAzHm0M2XlEuc26PVojqno2ht5WU486uJXzWILvW3zFdlNDF/
SLeqQy1mNLRt5/An6la7e3sjOcuI1W2Qe7dkrwIDAQABAoIBAES+eUx9iSPfr1az
k5k9NLUKTh785MMpdUUzKT8iQ+w5dtaOWI0qk57ntxGuBKzERPzNbTRIAdsib1BZ
PV/f297ObG4ezxgrQ4B1jo92b3Vb6jMf3AtolXUH8wPB4B/q/Nzdhm+WnQBHbmz4
31/ye1tm/3+2tLhRpXCvAdM4jO8xhJlH+Pxg20fliAuiJ+ggSL56CyBR4kg80KtA
omeGB1DOVFd23aDO/79Mii/2tf6EpmVFB/4zBkPHOH3zucwt8XUttwBeOcGdIbP+
CiU9VdZmG0XOJfC3apAXf9YwU3WVbmbvUWSwt6iHGZD4AuKY2R0ECTZnYS8ThDhd
ZwPXzCECgYEA6xe9MpBCIVRK51Hb083mDg16UjRvPJA4T8w9xFg4UtAwe/u3CC67
4fAOSe0P3NtsXhcQFby7PEJwoeo2Hn6hUifxVMsKWmHb+FCg+CG/oBSwRKCa5BwG
WpJ0jEt6KHZf0u+b/N1aOjVi/9tMrsHXFV3s2Gm9LQqA8u8izshDqakCgYEA6p8t
KVK2mA+JjvSGyR6WfpVZ1OIi6CEEUhRU3aNHRB2zPf6J3PQLjz+Ad50BCVHXQSy/
aG3LpR44eUu5Q9AmTwDr8eiC8AT6uyE19zJHbK//E40Bn6khQvtymwByjav/5ZB+
ZAhE7E31eCZO8bqufSlnMNTD0Z8oqB5YR8uDApcCgYAkPcGd5N089Bij9luUGD6p
1ewQdiLbzEPSEWNIPG1aXtvKkTBTI5k1KGObg98ZJf5btuR05WZb0MY6P7feFZla
5+ttLevHqSRW8F8QQWugCvBtc/DMz4EvPzqWUiBf0nfNNcDvR1RcetRrKux0WE+G
7LbRWeOe6OqeCL1t8TN1GQKBgHPaH6m8/w689VbSpc+fu/5Lby0wcL4gt4p0IafD
nUgkRkLBcn/ZPfABEkV+EGnysJCtMOK2/IzPDGHQo2251YDDWr576lPskYZfks86
U4x2p0SXJwsYr6Tslp21LduI5/YKUG7Cqo3ovOIUQH0ailihXiP9m6fhqGjDeyIQ
euOHAoGAfDpntw1HRuk812au430Stl5eaTsH+w1msLLKZOukr6qWc2xFeC3fYPWQ
BBkyzM3p6Se9FsfHY6LMxrEkz9fSdeVOeHenyUCTMqhqrc6o9f79zIlocsMzVGsK
XKcULjpf67Igyx12eh3rqAEKwm6PGhbv9pK5/NpuzsP1atArMRg=
-----END RSA PRIVATE KEY-----
50 changes: 11 additions & 39 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -66,44 +66,6 @@ automatic linking type with `-auto` suffix appended to product's name.
*/
let autoProducts = [swiftPMProduct, swiftPMDataModelProduct]

var packageCollectionsSigningTargets = [Target]()
var packageCollectionsSigningDeps: [Target.Dependency] = [
"Basics",
.product(name: "Crypto", package: "swift-crypto"),
"PackageCollectionsModel",
]
// swift-crypto's Crypto module depends on CCryptoBoringSSL on these platforms only
#if os(Linux) || os(Windows) || os(Android)
packageCollectionsSigningTargets.append(
.target(
/** Package collections signing C lib */
name: "PackageCollectionsSigningLibc",
dependencies: [
.product(name: "Crypto", package: "swift-crypto"), // for CCryptoBoringSSL
],
cSettings: [
.define("WIN32_LEAN_AND_MEAN"),
]
)
)
packageCollectionsSigningDeps.append(
.target(
name: "PackageCollectionsSigningLibc",
condition: .when(
platforms: [.linux, .android, .windows]
)
)
)
#endif
// Define PackageCollectionsSigning target always
packageCollectionsSigningTargets.append(
.target(
/** Package collections signing */
name: "PackageCollectionsSigning",
dependencies: packageCollectionsSigningDeps
)
)

let package = Package(
name: "SwiftPM",
platforms: [
Expand Down Expand Up @@ -152,7 +114,7 @@ let package = Package(
]
),
],
targets: packageCollectionsSigningTargets + [
targets: [
// The `PackageDescription` target provides the API that is available
// to `Package.swift` manifests. Here we build a debug version of the
// library; the bootstrap scripts build the deployable version.
Expand Down Expand Up @@ -287,6 +249,16 @@ let package = Package(
]
),

.target(
name: "PackageCollectionsSigning",
dependencies: [
.product(name: "Crypto", package: "swift-crypto"),
.product(name: "X509", package: "swift-certificates"),
"Basics",
"PackageCollectionsModel",
]
),

.target(
name: "PackageFingerprint",
dependencies: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ internal struct PackageCollectionSourceCertificatePolicy {
private static let defaultSourceCertPolicies: [String: [CertificatePolicyConfig]] = [
"developer.apple.com": [
CertificatePolicyConfig(
certPolicyKey: .appleSwiftPackageCollection(subjectUserID: "XLVRDL8TZV"),
certPolicyKey: .appleSwiftPackageCollection(subjectOrganizationalUnit: "XLVRDL8TZV"),
base64EncodedRootCerts: [
// AppleComputerRootCertificate.cer
"MIIFujCCBKKgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFEFwcGxlIENvbXB1dGVyLCBJbmMuMS0wKwYDVQQLEyRBcHBsZSBDb21wdXRlciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxKTAnBgNVBAMTIEFwcGxlIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA1MDIxMDAwMTgxNFoXDTI1MDIxMDAwMTgxNFowgYYxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBcHBsZSBDb21wdXRlciwgSW5jLjEtMCsGA1UECxMkQXBwbGUgQ29tcHV0ZXIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSkwJwYDVQQDEyBBcHBsZSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOSRqQkfkdseR1DrBe1eeYQt6zaiV0xV7IsZid75S2z1B6siMALoGD74UAnTf0GomPnRymacJGsR0KO75Bsqwx+VnnoMpEeLW9QWNzPLxA9NzhRp0ckZcvVdDtV/X5vyJQO6VY9NXQ3xZDUjFUsVWR2zlPf2nJ7PULrBWFBnjwi0IPfLrCwgb3C2PwEwjLdDzw+dPfMrSSgayP7OtbkO2V4c1ss9tTqt9A8OAJILsSEWLnTVPA3bYharo3GSR1NVwa8vQbP4++NwzeajTEV+H0xrUJZBicR0YgsQg0GHM4qBsTBY7FoEMoxos48d3mVz/2deZbxJ2HafMxRloXeUyS0CAwEAAaOCAi8wggIrMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjAfBgNVHSMEGDAWgBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjCCASkGA1UdIASCASAwggEcMIIBGAYJKoZIhvdjZAUBMIIBCTBBBggrBgEFBQcCARY1aHR0cHM6Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5L3Rlcm1zLmh0bWwwgcMGCCsGAQUFBwICMIG2GoGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wRAYDVR0fBD0wOzA5oDegNYYzaHR0cHM6Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5L3Jvb3QuY3JsMFUGCCsGAQUFBwEBBEkwRzBFBggrBgEFBQcwAoY5aHR0cHM6Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5L2Nhc2lnbmVycy5odG1sMA0GCSqGSIb3DQEBBQUAA4IBAQCd2i0oWC99dgS5BNM+zrdmY06PL9T+S61yvaM5xlJNBZhS9YlRASR5vhoy9+VEi0tEBzmC1lrKtCBe2a4VXR2MHTK/ODFiSF3H4ZCx+CRA+F9Ym1FdV53B5f88zHIhbsTp6aF31ywXJsM/65roCwO66bNKcuszCVut5mIxauivL9WvHld2j383LS4CXN1jyfJxuCZA3xWNdUQ/eb3mHZnhQyw+rW++uaT+DjUZUWOxw961kj5ReAFziqQjyqSI8R5cH0EWLX6VCqrpiUGYGxrdyyC/R14MJsVVNU3GMIuZZxTHCR+6R8faAQmHJEKVvRNgGQrv6n8Obs3BREM6StXj",
Expand Down
272 changes: 0 additions & 272 deletions Sources/PackageCollectionsSigning/Certificate/Certificate.swift

This file was deleted.

0 comments on commit ef422c1

Please sign in to comment.