diff --git a/SignalMessaging/Payments/MobileCoinAPI+Configuration.swift b/SignalMessaging/Payments/MobileCoinAPI+Configuration.swift index 6905cfbff4..5342693d9a 100644 --- a/SignalMessaging/Payments/MobileCoinAPI+Configuration.swift +++ b/SignalMessaging/Payments/MobileCoinAPI+Configuration.swift @@ -177,6 +177,7 @@ extension MobileCoinAPI { private enum AttestationType { case mrSigner(mrSignerData: Data) case mrEnclave(mrEnclaveData: Data) + case mrEnclaves(mrEnclaveDatas: [Data]) case mrSignerAndMrEnclave(mrSignerData: Data, mrEnclaveData: Data) } @@ -219,6 +220,14 @@ extension MobileCoinAPI { } } + private static func buildMrEnclaves(mrEnclaveDatas: [Data], + attestationInfo: AttestationInfo) throws -> [MobileCoin.Attestation.MrEnclave] { + try mrEnclaveDatas.map { + try buildMrEnclave(mrEnclaveData: $0, + attestationInfo: attestationInfo) + } + } + private static func buildAttestation(attestationType: AttestationType, attestationInfo: AttestationInfo) throws -> MobileCoin.Attestation { switch attestationType { @@ -230,6 +239,10 @@ extension MobileCoinAPI { let mrEnclave = try buildMrEnclave(mrEnclaveData: mrEnclaveData, attestationInfo: attestationInfo) return MobileCoin.Attestation(mrEnclaves: [mrEnclave]) + case .mrEnclaves(let mrEnclaveDatas): + let mrEnclaves = try buildMrEnclaves(mrEnclaveDatas: mrEnclaveDatas, + attestationInfo: attestationInfo) + return MobileCoin.Attestation(mrEnclaves: mrEnclaves) case .mrSignerAndMrEnclave(let mrSignerData, let mrEnclaveData): let mrSigner = try buildMrSigner(mrSignerData: mrSignerData, attestationInfo: attestationInfo) @@ -256,14 +269,14 @@ extension MobileCoinAPI { } } - private static func buildAttestationConfig(mrEnclaveConsensus: Data, + private static func buildAttestationConfig(mrEnclaveConsensus: [Data], mrEnclaveFogView: Data, mrEnclaveFogKeyImage: Data, mrEnclaveFogMerkleProof: Data, mrEnclaveFogReport: Data) -> OWSAttestationConfig { do { return OWSAttestationConfig( - consensus: try buildAttestation(attestationType: .mrEnclave(mrEnclaveData: mrEnclaveConsensus), + consensus: try buildAttestation(attestationType: .mrEnclaves(mrEnclaveDatas: mrEnclaveConsensus), attestationInfo: .consensus), fogView: try buildAttestation(attestationType: .mrEnclave(mrEnclaveData: mrEnclaveFogView), attestationInfo: .fogView), @@ -289,7 +302,7 @@ extension MobileCoinAPI { let mrEnclaveFogView = Data.data(fromHex: "ddd59da874fdf3239d5edb1ef251df07a8728c9ef63057dd0b50ade5a9ddb041")! let mrEnclaveFogReport = Data.data(fromHex: "709ab90621e3a8d9eb26ed9e2830e091beceebd55fb01c5d7c31d27e83b9b0d1")! let mrEnclaveFogLedger = Data.data(fromHex: "511eab36de691ded50eb08b173304194da8b9d86bfdd7102001fe6bb279c3666")! - return buildAttestationConfig(mrEnclaveConsensus: mrEnclaveConsensus, + return buildAttestationConfig(mrEnclaveConsensus: [mrEnclaveConsensus], mrEnclaveFogView: mrEnclaveFogView, mrEnclaveFogKeyImage: mrEnclaveFogLedger, mrEnclaveFogMerkleProof: mrEnclaveFogLedger, @@ -302,7 +315,10 @@ extension MobileCoinAPI { } static var signalTestNet: OWSAttestationConfig { - let mrEnclaveConsensus = Data.data(fromHex: "3dc0c6b273ca16c50d3d94d6e1042998980cf977a79521c6d87366cddc70db03")! + let mrEnclaveConsensus = [ + Data.data(fromHex: "9268c3220a5260e51e4b586f00e4677fed2b80380f1eeaf775af60f8e880fde8")!, + Data.data(fromHex: "3dc0c6b273ca16c50d3d94d6e1042998980cf977a79521c6d87366cddc70db03")! + ] let mrEnclaveFogView = Data.data(fromHex: "4e598799faa4bb08a3bd55c0bcda7e1d22e41151d0c591f6c2a48b3562b0881e")! let mrEnclaveFogReport = Data.data(fromHex: "185875464ccd67a879d58181055383505a719b364b12d56d9bef90a40bed07ca")! let mrEnclaveFogLedger = Data.data(fromHex: "7330c9987f21b91313b39dcdeaa7da8da5ca101c929f5740c207742c762e6dcd")!