This section provides an overview of changes introduced in the Secure Storage SDK to facilitate the integration of the SDK and provide information on backward compatibility.

Previous versions

Version 5.1.0

iOS

Bitcode support has been eliminated

Following the deprecation of bitcode by Apple, we have removed all bitcode from the SDK framework.

Version 5.0.0

All platforms

Biometric protection - new ways to enhance storage protection

New options have been added to the API which provide the ability to require a passcode or biometric authentication for initializing the storage. The Protection option is set when the write function is called. With this, it is now possible to protect the keys with biometry. For more information, see the technical documentation included in the product package.

Android

Target API increased to 33

To meet the latest requirements for apps published on the Google Play Store, the target version of the SDK has been increased to Android 13 with API level 33.

SDK source code now in Kotlin

The SDK has been rewritten in Kotlin.

New interface for Secure Storage APIs

A new interface called SecureStorage is included in the product package and contains the public APIs for the SDK. To instantiate the Secure Storage SDK instance, use the createSecureStorage method from the companion object of the SecureStorage interface.

Updates to technical documentation and tutorials

The technical documentation and the sample apps included in the product package have been updated. The sample apps include new flavor examples for Kotlin and Java implementations.

iOS

SDK source code now in Swift

The SDK has been rewritten in Swift.

New asynchronous API

The Secure Storage SDK 5 comes with new asynchronous APIs replacing the old synchronous APIs. This is a result of changing the architecture of the SDK to fix the unhandled threading issues in the previous versions. The new API allows us to do heavy operations like reading and writing of the storage without blocking the main thread. And it makes the secure storage instance thread safe.

To use the asynchronous API, you need to add:

  • Await functions to Swift calls
  • Completion handler parameter to Objective-C calls

Enhanced error handling and thread management

Error handling has been enhanced. The SDK now provides more information when an error is thrown, and stack traces are available to facilitate tracing errors if thrown in multiple locations. Also, thread management has been improved.

Updates to technical documentation and sample

The technical documentation and the sample application included in the product package have been updated.

4.29.0

Android

Target API increased to Android 12 (API 31)

To meet new requirements for apps published on the Google Play Store, the target version of the SDK has been increased to Android 12 with API 31. This change is needed to avoid APK rejection caused by security issues found with the older API versions.

Minimum supported version increased to Android 6 (API 23)

The minimum supported version has been increased to fully support new features and devices. Deprecated code has been replaced and simplified to be compatible with API 23.

iOS

Increased the minimum supported version to iOS 13

The minimum supported version has been increased to fully support all arm64 devices and SwiftUI features. Deprecated code has been removed and replaced with code fully supporting iOS 13 and later.

Fixed internal error conversion issues

Error codes converted between Objective-C and Swift need to have the NSCustomError setting implemented to display the correct value. Without this setting, the wrong codes could be displayed from the enum. The setting has been implemented in all the remaining error handling objects.

Version 4.28.2

Android

Delivering AAR file instead of JAR

AAR files are the current standard for Android libraries. For this reason, the JAR file has been replaced with an AAR file. For more information, see Integrate the Secure Storage SDK with Android or refer to the sample included in the product package.

iOS

API updates – NSErrors API support for Objective-C added

The Objective-C API points no longer throw an NSException. All API points that previously would throw such an NSException now require an NSError pointer. If an error occurs, it will be attached to the pointer that is provided as parameter. Refer to the Objective-C sample included in the product package for full code examples.

Change of framework name to MSSSecureStorage

The framework name has been changed from SecureStorageSDK to MSSSecureStorage. To use the new Objective-C API, replace all previous SecureStorageSDK imports with #import <MSSSecureStorage/MSSSecureStorage.h>.