@@ -279,13 +279,23 @@ - (void)setInternalCredentials:(AWSCredentials *)internalCredentials {
279279 @synchronized (self) {
280280 _internalCredentials = internalCredentials;
281281
282- self.keychain [AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey ;
283- self.keychain [AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey ;
284- self.keychain [AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey ;
285- if (internalCredentials.expiration ) {
286- self.keychain [AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat: @" %f " , [internalCredentials.expiration timeIntervalSince1970 ]];
282+ // Handle the case when internalCredentials is nil
283+ if (internalCredentials) {
284+ // Store credentials in keychain when credentials are not nil
285+ self.keychain [AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey ;
286+ self.keychain [AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey ;
287+ self.keychain [AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey ;
288+ if (internalCredentials.expiration ) {
289+ self.keychain [AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat: @" %f " , [internalCredentials.expiration timeIntervalSince1970 ]];
290+ } else {
291+ self.keychain [AWSCredentialsProviderKeychainExpiration] = nil ;
292+ }
287293 } else {
288- self.keychain [AWSCredentialsProviderKeychainExpiration] = nil ;
294+ // Clear keychain entries when credentials are nil
295+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainAccessKeyId];
296+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainSecretAccessKey];
297+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainSessionToken];
298+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainExpiration];
289299 }
290300 }
291301}
@@ -837,13 +847,23 @@ - (void)setInternalCredentials:(AWSCredentials *)internalCredentials {
837847 @synchronized (self) {
838848 _internalCredentials = internalCredentials;
839849
840- self.keychain [AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey ;
841- self.keychain [AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey ;
842- self.keychain [AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey ;
843- if (internalCredentials.expiration ) {
844- self.keychain [AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat: @" %f " , [internalCredentials.expiration timeIntervalSince1970 ]];
850+ // Handle the case when internalCredentials is nil
851+ if (internalCredentials) {
852+ // Store credentials in keychain when credentials are not nil
853+ self.keychain [AWSCredentialsProviderKeychainAccessKeyId] = internalCredentials.accessKey ;
854+ self.keychain [AWSCredentialsProviderKeychainSecretAccessKey] = internalCredentials.secretKey ;
855+ self.keychain [AWSCredentialsProviderKeychainSessionToken] = internalCredentials.sessionKey ;
856+ if (internalCredentials.expiration ) {
857+ self.keychain [AWSCredentialsProviderKeychainExpiration] = [NSString stringWithFormat: @" %f " , [internalCredentials.expiration timeIntervalSince1970 ]];
858+ } else {
859+ self.keychain [AWSCredentialsProviderKeychainExpiration] = nil ;
860+ }
845861 } else {
846- self.keychain [AWSCredentialsProviderKeychainExpiration] = nil ;
862+ // Clear keychain entries when credentials are nil
863+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainAccessKeyId];
864+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainSecretAccessKey];
865+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainSessionToken];
866+ [self .keychain removeItemForKey: AWSCredentialsProviderKeychainExpiration];
847867 }
848868 }
849869}
0 commit comments