Как сохранить идентификатор сертификата в цепочке для ключей для метода .connect в AWSIoTDataManager? - PullRequest
1 голос
/ 23 апреля 2019

У меня проблемы с использованием класса AWSIotDataManager для подключения к брокеру AWS MQTT для подписки на события. Я передавал строку certificateID методу .connect, но затем понял, что выше определения метода .connect упоминается, что «certificateID должно храниться в KeyChain».
Я наткнулся на класс AWSIoTKeychain, но я не уверен, как его использовать. Я также сталкивался с AWSIoTManager.createKeysAndCertificateFromCsr, но я также не могу понять, как его использовать, учитывая тот факт, что я использую класс AWSIoTDataManager.
Как мне сохранить сертификат в цепочке для ключей? и как я могу использовать его для подключения к брокеру AWS MQTT? (У меня есть certID, pem и privateKey)

let credentialsProvider:AWSCognitoCredentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.EUWest1, identityPoolId: consumerPoolId);

let iotEndPoint = AWSEndpoint(urlString: endPoint);

let iotDataConfiguration = AWSServiceConfiguration(
      region: AWSRegionType.EUWest1,
      endpoint: iotEndPoint,
      credentialsProvider: credentialsProvider
);
AWSServiceManager.default()?.defaultServiceConfiguration = iotDataConfiguration;
AWSIoTDataManager.register(with: iotDataConfiguration!, forKey: KEYSTORE_NAME);

iotDataManager = AWSIoTDataManager(forKey: KEYSTORE_NAME);

func mqttEventCallback(status: AWSIoTMQTTStatus) {
      if(status == AWSIoTMQTTStatus.connected) {
        iotDataManager.subscribe(
          toTopic: topic,
          qoS: .messageDeliveryAttemptedAtMostOnce,
          messageCallback: {
            (payload) ->Void in
            let stringValue = String(data: payload, encoding: String.Encoding.utf8)!;  
            // do stuff with the payload
            // ...
        } );

      }
}

let isConnected: Bool = iotDataManager.connect(withClientId: clientID,
                           cleanSession: true,
                           certificateId: certID,
                           statusCallback: mqttEventCallback);
...