Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit 4ec813d

Browse files
committed
merge 3.0.1 into 3.1
2 parents d385df6 + 77fdaac commit 4ec813d

File tree

9 files changed

+29
-17
lines changed

9 files changed

+29
-17
lines changed

src/xcode/ENA/ENA/Resources/Environment/Environments.default.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010
"dccURL": "https://dcc.coronawarn.app",
1111
"dccRecertifyURL": "https://api.reissue.ubirch.com",
1212
"validationKeyString": "c7DEstcUIRcyk35OYDJ95/hTg3UVhsaDXKT0zK7NhHPXoyzipEnOp3GyNXDVpaPi3cAfQmxeuFMZAIX2+6A5Xg==",
13-
"pinningKeyHash": "f30c3959de6b062374f037c505fb3864e1b0678086252ab457ddd97c729d06ab"
13+
"pinningKeyHash": [
14+
"f30c3959de6b062374f037c505fb3864e1b0678086252ab457ddd97c729d06ab",
15+
"62bdfb71764d97afd156056560fce3e65e6e415b4d2600ac028a04ddeaa92c80",
16+
"b79dbce4e7be69ac58417428aa60d2348f97ff667dc8b2094c6e19c87175a3c8"
17+
]
1418
}
1519
]
1620
}

src/xcode/ENA/ENA/Source/Developer Menu/Features/DMNewHttpCommunication/DMNHCViewModel.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ final class DMNHCViewModel {
8888
let requestCertificates = [certificateToReissue] + accompanyingCertificates
8989
let sendModel = DCCReissuanceSendModel(action: certificate.action, certificates: requestCertificates)
9090
let appConfig = self.appConfiguration.currentAppConfig.value
91-
let publicKeyHash = appConfig.dgcParameters.reissueServicePublicKeyDigest
91+
let publicKeyHash = [appConfig.dgcParameters.reissueServicePublicKeyDigest]
9292
let trustEvaluation = DefaultTrustEvaluation(
9393
publicKeyHash: publicKeyHash,
9494
certificatePosition: 0

src/xcode/ENA/ENA/Source/Environment/Environments.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ struct EnvironmentData: Codable {
2323
let validationKeyString: String
2424

2525
/// Used for certificate pinning
26-
let pinningKeyHash: String
26+
let pinningKeyHash: [String]
2727

28-
var pinningKeyHashData: Data {
29-
pinningKeyHash.dataWithHexString()
28+
var pinningKeyHashData: [Data] {
29+
pinningKeyHash.map { $0.dataWithHexString() }
3030
}
3131
}
3232

src/xcode/ENA/ENA/Source/Environment/__tests__/TestEnvironments.json

+12-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
"dccURL": "https://TestEnvironment0.dgc",
1111
"dccRecertifyURL": "https://TestEnvironment0.logupload",
1212
"validationKeyString": "Key0",
13-
"pinningKeyHash": "hash0"
13+
"pinningKeyHash": [
14+
"hash0"
15+
]
1416
},
1517
{
1618
"name": "TestEnvironment1",
@@ -22,7 +24,9 @@
2224
"dccURL": "https://TestEnvironment1.dgc",
2325
"dccRecertifyURL": "https://TestEnvironment1.logupload",
2426
"validationKeyString": "Key1",
25-
"pinningKeyHash": "hash1"
27+
"pinningKeyHash": [
28+
"hash1"
29+
]
2630
},
2731
{
2832
"name": "TestEnvironment2",
@@ -34,7 +38,9 @@
3438
"dccURL": "https://TestEnvironment2.dgc",
3539
"dccRecertifyURL": "https://TestEnvironment2.logupload",
3640
"validationKeyString": "Key2",
37-
"pinningKeyHash": "hash2"
41+
"pinningKeyHash": [
42+
"hash2"
43+
]
3844
},
3945
{
4046
"name": "prod",
@@ -46,7 +52,9 @@
4652
"dccURL": "https://prod.dgc",
4753
"dccRecertifyURL": "https://prod.recertify",
4854
"validationKeyString": "Key",
49-
"pinningKeyHash": "hash"
55+
"pinningKeyHash": [
56+
"hash"
57+
]
5058
}
5159
]
5260
}

src/xcode/ENA/ENA/Source/HTTPClientCore/Security/EvaluateTrust/DefaultTrustEvaluation.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public enum DefaultTrustEvaluationError {
1111
class DefaultTrustEvaluation: TrustEvaluating {
1212

1313
init(
14-
publicKeyHash: Data,
14+
publicKeyHash: [Data],
1515
// 1 is used as default for backwards compatibility.
1616
certificatePosition: Int = 1
1717
) {
@@ -45,7 +45,7 @@ class DefaultTrustEvaluation: TrustEvaluating {
4545
guard let serverCertificate = SecTrustGetCertificateAtIndex(trust, certificatePosition),
4646
let serverPublicKey = SecCertificateCopyKey(serverCertificate),
4747
let serverPublicKeyData = SecKeyCopyExternalRepresentation(serverPublicKey, nil ) as Data?,
48-
publicKeyHash == serverPublicKeyData.sha256()
48+
publicKeyHash.contains(where: { $0 == serverPublicKeyData.sha256() })
4949
else {
5050
Log.error("Certificate mismatch.")
5151
trustEvaluationError = .default(.CERT_MISMATCH)
@@ -64,7 +64,7 @@ class DefaultTrustEvaluation: TrustEvaluating {
6464

6565
// MARK: - Private
6666

67-
private let publicKeyHash: Data
67+
private let publicKeyHash: [Data]
6868
private let certificatePosition: Int
6969

7070
}

src/xcode/ENA/ENA/Source/HTTPClientCore/Security/URLSessionDelegates/CoronaWarnURLSessionDelegate.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ final class CoronaWarnURLSessionDelegate: NSObject, URLSessionDelegate {
1919
}
2020

2121
convenience init(
22-
publicKeyHash: Data
22+
publicKeyHash: [Data]
2323
) {
2424
self.init(
2525
evaluateTrust: DefaultTrustEvaluation(

src/xcode/ENA/ENA/Source/HTTPClientCore/Security/__tests__/HTTPClientCertificatePinningTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class HTTPClientCertificatePinningTests: CWATestCase {
1010
/// Testing ~~certificate~~ public key pinning mechanism on a valid and invalid host.
1111
func testPinning() throws {
1212
let coronaWarnURLSessionDelegate = CoronaWarnURLSessionDelegate(
13-
publicKeyHash: "f30c3959de6b062374f037c505fb3864e1b0678086252ab457ddd97c729d06ab".dataWithHexString()
13+
publicKeyHash: ["f30c3959de6b062374f037c505fb3864e1b0678086252ab457ddd97c729d06ab".dataWithHexString()]
1414
)
1515
let session = URLSession(
1616
configuration: .coronaWarnSessionConfiguration(),
@@ -70,7 +70,7 @@ class HTTPClientCertificatePinningTests: CWATestCase {
7070
]
7171

7272
let coronaWarnURLSessionDelegate = CoronaWarnURLSessionDelegate(
73-
publicKeyHash: "f30c3959de6b062374f037c505fb3864e1b0678086252ab457ddd97c729d06ab".dataWithHexString()
73+
publicKeyHash: ["f30c3959de6b062374f037c505fb3864e1b0678086252ab457ddd97c729d06ab".dataWithHexString()]
7474
)
7575
let session = URLSession(
7676
configuration: .coronaWarnSessionConfiguration(),

src/xcode/ENA/ENA/Source/Scenes/HealthCertificates/Reissuance/ReissuanceConsent/HealthCertificateReissuanceConsentViewModel.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ final class HealthCertificateReissuanceConsentViewModel {
190190
}
191191

192192
let trustEvaluation = DefaultTrustEvaluation(
193-
publicKeyHash: appConfig.dgcParameters.reissueServicePublicKeyDigest,
193+
publicKeyHash: [appConfig.dgcParameters.reissueServicePublicKeyDigest],
194194
certificatePosition: 0
195195
)
196196
guard let certificateReissuance = self.certifiedPerson.dccWalletInfo?.certificateReissuance else {

src/xcode/fastlane/Fastfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ENV["LC_ALL"] = "de_DE.UTF-8"
1919
ENV["LANG"] = "de_DE.UTF-8"
2020

2121
ENV["FASTLANE_SKIP_UPDATE_CHECK"] = "true"
22-
22+
ENV['ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD'] = 'true'
2323

2424
default_platform(:ios)
2525

0 commit comments

Comments
 (0)