|  |  |  | @ -417,7 +417,8 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         // Try to obtain a new sender certificate. | 
		
	
		
			
				|  |  |  |  |         return firstly { | 
		
	
		
			
				|  |  |  |  |             requestSenderCertificate() | 
		
	
		
			
				|  |  |  |  | //            requestSenderCertificate() | 
		
	
		
			
				|  |  |  |  |             generateSenderCertificate() | 
		
	
		
			
				|  |  |  |  |         }.map { (certificateData: Data, certificate: SMKSenderCertificate) in | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             // Cache the current sender certificate. | 
		
	
	
		
			
				
					|  |  |  | @ -426,6 +427,19 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { | 
		
	
		
			
				|  |  |  |  |             return certificate | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |     private func generateSenderCertificate() -> Promise<(certificateData: Data, certificate: SMKSenderCertificate)> { | 
		
	
		
			
				|  |  |  |  |         return Promise<(certificateData: Data, certificate: SMKSenderCertificate)> { seal in | 
		
	
		
			
				|  |  |  |  |             //Loki: Generate a sender certifate locally | 
		
	
		
			
				|  |  |  |  |             let sender = OWSIdentityManager.shared().identityKeyPair()?.hexEncodedPublicKey | 
		
	
		
			
				|  |  |  |  |             let certificate = SMKSenderCertificate(senderDeviceId: OWSDevicePrimaryDeviceId, senderRecipientId: sender!) | 
		
	
		
			
				|  |  |  |  |             let certificateData = try certificate.serialized() | 
		
	
		
			
				|  |  |  |  |             guard self.isValidCertificate(certificate) else { | 
		
	
		
			
				|  |  |  |  |                 throw OWSUDError.invalidData(description: "Invalid sender certificate returned by server") | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             seal.fulfill((certificateData: certificateData, certificate: certificate)) | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private func requestSenderCertificate() -> Promise<(certificateData: Data, certificate: SMKSenderCertificate)> { | 
		
	
		
			
				|  |  |  |  |         return firstly { | 
		
	
	
		
			
				
					|  |  |  | 
 |