             kSecAttrService: label,
             kSecValueData: stringData
         ]
-        let status = SecItemAdd(key, nil)
-        
+        var status = SecItemAdd(key, nil)
+        if(status != errSecSuccess){
+            if(SecurityUtils.removeItemFromKeyChain(label) == true) {
+                status = SecItemAdd(key, nil)
+            }
+        }
         return status == errSecSuccess
-        
     }
     internal static func removeItemFromKeyChain(label: String) -> Bool{
         

/*
*     Copyright 2015 IBM Corp.
*     Licensed under the Apache License, Version 2.0 (the "License");
*     you may not use this file except in compliance with the License.
*     You may obtain a copy of the License at
*     http://www.apache.org/licenses/LICENSE-2.0
*     Unless required by applicable law or agreed to in writing, software
*     distributed under the License is distributed on an "AS IS" BASIS,
*     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*     See the License for the specific language governing permissions and
*     limitations under the License.
*/

import Foundation
import RNCryptor

            kSecAttrIsPermanent : true,
            kSecAttrApplicationTag : publicTag,
            kSecAttrKeyClass : kSecAttrKeyClassPublic,
            ]
        
        let keyPairAttr : [NSString:AnyObject] = [
            kSecAttrKeyType : kSecAttrKeyTypeRSA,
