in IoT-Sample/Swift/IoTSampleSwift/ConnectionViewController.swift [144:187]
func searchForExistingCertificateIdInBundle() -> String? {
let defaults = UserDefaults.standard
// No certificate ID has been stored in the user defaults; check to see if any .p12 files
// exist in the bundle.
let myBundle = Bundle.main
let myImages = myBundle.paths(forResourcesOfType: "p12" as String, inDirectory:nil)
let uuid = UUID().uuidString
guard let certId = myImages.first else {
let certificateId = defaults.string(forKey: "certificateId")
return certificateId
}
// A PKCS12 file may exist in the bundle. Attempt to load the first one
// into the keychain (the others are ignored), and set the certificate ID in the
// user defaults as the filename. If the PKCS12 file requires a passphrase,
// you'll need to provide that here; this code is written to expect that the
// PKCS12 file will not have a passphrase.
guard let data = try? Data(contentsOf: URL(fileURLWithPath: certId)) else {
print("[ERROR] Found PKCS12 File in bundle, but unable to use it")
let certificateId = defaults.string( forKey: "certificateId")
return certificateId
}
DispatchQueue.main.async {
self.logTextView.text = "found identity \(certId), importing..."
}
if AWSIoTManager.importIdentity( fromPKCS12Data: data, passPhrase:"", certificateId:certId) {
// Set the certificate ID and ARN values to indicate that we have imported
// our identity from the PKCS12 file in the bundle.
defaults.set(certId, forKey:"certificateId")
defaults.set("from-bundle", forKey:"certificateArn")
DispatchQueue.main.async {
self.logTextView.text = "Using certificate: \(certId))"
self.iotDataManager.connect( withClientId: uuid,
cleanSession:true,
certificateId:certId,
statusCallback: self.mqttEventCallback)
}
}
let certificateId = defaults.string( forKey: "certificateId")
return certificateId
}