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

Version 4.29.0

All platforms

Windows support for White-Box Table Generator

The White-Box Table Generator tool can now also be used on the Windows platform, in addition to Linux and Mac, to generate the encrypted table data file.

Previous versions

Version 4.28.1

All platforms

Updates to the White-Box Table Generator

Two changes were made to the White-Box Table Generator:

  • The output now includes the key checksum value (KCV) of the keys or keyparts. This can help validate the integrity or verify that the correct key or keypart is being used.
  • The key partition logic has been updated to correctly perform the XOR on the keyparts instead of concatenating the keyparts.

Version 4.28.0

All platforms

Updated WBC SDK API

The WBC SDK has been re-factored from a static method to an instance-based API. You may now use multiple instances of the WBC SDK, each with a different obfuscated encryption or decryption key to improve security of your apps.

New output for the White-Box Table Generator

The new, Java-based White-Box Table Generator tool creates a .dat file instead of source code files to be integrated into your mobile project.

At this time, the new White-Box Table Generator tool is only available for the Linux and Mac platforms. The tool is still being refined for Windows and will be available in an upcoming release.

You must review and update your integrations to accommodate the API changes and add the .dat file into your project. For more information about using the API, refer to the technical documentation included in the product package.

4.27.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 or higher.

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 or higher.

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.

Change of framework name to MSSWBC

The framework name has been changed from WBCSDK.xcframework to MSSWBC.xcframework.

Update to the White-Box Cryptography SDK API

The API was updated to remove a dependency to vds_int32.

4.26.3

Android

Cryptographic methods updated

Internal cryptographic methods have been updated to not rely on the Utilities SDK anymore. As a result of this update, imports for tables have changed and all tables must be regenerated using the latest WBCSDKTableGenerator.exe utility. For information about the correct imports, 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 a parameter. Refer to the Objective-C sample included in the product package for full code examples.

Tables now accepted parameters

The WBC SDK now accepts tables as parameters. Consequently, the encrypt() and decrypt() methods now require tables as input.

  • Integration for Objective-C: follow the example in the Objective-C sample provided in the product package where tables use simple inheritance.
  • Integration for Swift: an Objective-C wrapper must be created (along with a bridging header if you do not yet have one) to be allowed to use C++ code in Swift. For more information about how to correctly inject C++ code into Swift, refer to the sample provided in the product package.

As a result of this update, imports for tables have changed and all tables must be regenerated using the latest WBCSDKTableGenerator.exe utility. For information about the correct imports, refer to the sample included in the product package.