Migration from 1.8.x to 1.9.x
PowerAuth Mobile SDK in version 1.9.0
provides the following improvements:
- Added support for PowerAuth protocol version 3.3, including the following improvements:
- The PowerAuth protocol is no longer use EC key-pairs for encryption and signature calculation (dual use problem.)
- The End-To-End encryption is now using a temporary keys to improve the forward secrecy of our ECIES scheme.
- Simplified construction of encrypted request and response. Check updated Android or iOS documentation for more details.
- Now it’s possible to create an activation via OpenID Connect provider.
Compatibility with PowerAuth Server
- This release is fully compatible with PowerAuth Server version
1.9.0
and newer.
Android
API changes
- The following methods are no longer available in the
PowerAuthSDK
class:- Synchronous method
getEciesEncryptorForApplicationScope()
is replaced with asynchronous variant that guarantees the temporary encryption key is prepared. - Synchronous method
getEciesEncryptorForActivationScope()
is replaced with asynchronous variant that guarantees the temporary encryption key is prepared.
- Synchronous method
- The shared biometry-related encryption key is no longer supported in
PowerAuthSDK
. If an activation is already using the shared key, then it’s in use until the activation or the biometry factor is removed. As part of this change, the following methods are now deprecated:- Method
PowerAuthSDK.removeActivationLocal(Context, boolean)
is now deprecated. UseremoveActivationLocal(Context)
as a replacement. - Method
PowerAuthKeychainConfiguration.getKeychainBiometryDefaultKey()
is now deprecated. UsegetKeychainKeyBiometry()
as a replacement. - Method
PowerAuthKeychainConfiguration.Builder.keychainBiometryDefaultKey(String)
is now deprecated. UsekeychainKeyBiometry(String)
as a replacement.
- Method
- Removed all interfaces deprecated in release
1.8.x
Other changes
End-To-End Encryption
Encrypted request now contains a new property temporaryKeyId
with type String
, please update your model objects. For example:
{
"temporaryKeyId" : "UUID",
"ephemeralPublicKey" : "BASE64-DATA-BLOB",
"encryptedData": "BASE64-DATA-BLOB",
"mac" : "BASE64-DATA-BLOB",
"nonce" : "BASE64-NONCE",
"timestamp" : 1694172789256
}
You can use new EciesCryptogram.toEncryptedRequest()
method to convert cryptogram into easily serializable request object. It’s also no longer necessary to synchronize the time with the server, because as the new asynchronous getEciesEncryptorFor{*}Scope()
methods do that automatically.
iOS & tvOS
API changes
- The following functions are no longer available in
PowerAuthSDK
class:- Synchronous function
eciesEncryptorForApplicationScope()
is replaced with asynchronous variant that guarantees the temporary encryption key is prepared. - Synchronous function
eciesEncryptorForActivationScope()
is replaced with asynchronous variant that guarantees the temporary encryption key is prepared.
- Synchronous function
- Removed all interfaces deprecated in release
1.8.x
Other changes
End-To-End Encryption
Encrypted request now contains a new property temporaryKeyId
with type String
, please update your model objects. For example:
{
"temporaryKeyId" : "UUID",
"ephemeralPublicKey" : "BASE64-DATA-BLOB",
"encryptedData": "BASE64-DATA-BLOB",
"mac" : "BASE64-DATA-BLOB",
"nonce" : "BASE64-NONCE",
"timestamp" : 1694172789256
}
You can use the new PowerAuthCoreEciesCryptogram.requestPayload()
function to prepare a dictionary containing all request parameters. It’s also no longer necessary to synchronize the time with the server, because as the new asynchronous eciesEncryptorFor{*}Scope()
functions do that automatically.
iOS & tvOS App Extensions
- Removed all interfaces deprecated in release
1.8.x
Known Bugs
The PowerAuth SDKs for iOS and tvOS App Extensions, as well as for watchOS, do not use time synchronized with the server for token-based authentication. To avoid any compatibility issues with the server, the authentication headers generated in your App Extension or on watchOS still use the older protocol version 3.1. This issue will be fixed in a future SDK update.
You can watch the following related issues:
- wultra/powerauth-mobile-sdk#551
- wultra/powerauth-mobile-watch-sdk#7
- wultra/powerauth-mobile-extensions-sdk#7