fix(mobile): Android U2F authenticator response encoding (#2313)
This commit is contained in:
@@ -74,27 +74,28 @@ public class Fido2ApiModule extends ReactContextBaseJavaModule {
|
|||||||
(AuthenticatorAssertionResponse) publicKeyCredential.getResponse();
|
(AuthenticatorAssertionResponse) publicKeyCredential.getResponse();
|
||||||
|
|
||||||
WritableMap signInResult = Arguments.createMap();
|
WritableMap signInResult = Arguments.createMap();
|
||||||
signInResult.putString("id", Base64.encodeToString(signedData.getKeyHandle(), Base64.URL_SAFE));
|
signInResult.putString("id", Base64.encodeToString(signedData.getKeyHandle(), Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
signInResult.putString("rawId", Base64.encodeToString(signedData.getKeyHandle(), Base64.URL_SAFE));
|
signInResult.putString("rawId", Base64.encodeToString(signedData.getKeyHandle(), Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
|
|
||||||
byte[] extensionOutputsBytes = null;
|
byte[] extensionOutputsBytes = null;
|
||||||
AuthenticationExtensionsClientOutputs extensionOutputs = publicKeyCredential.getClientExtensionResults();
|
AuthenticationExtensionsClientOutputs extensionOutputs = publicKeyCredential.getClientExtensionResults();
|
||||||
if (extensionOutputs != null) {
|
if (extensionOutputs != null) {
|
||||||
extensionOutputsBytes = extensionOutputs.serializeToBytes();
|
extensionOutputsBytes = extensionOutputs.serializeToBytes();
|
||||||
if (extensionOutputsBytes != null) {
|
if (extensionOutputsBytes != null) {
|
||||||
signInResult.putString("clientExtensionResults", Base64.encodeToString(extensionOutputsBytes, Base64.URL_SAFE));
|
signInResult.putString("clientExtensionResults", Base64.encodeToString(extensionOutputsBytes, Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WritableMap response = Arguments.createMap();
|
WritableMap response = Arguments.createMap();
|
||||||
response.putString("clientDataJSON", Base64.encodeToString(signedData.getClientDataJSON(), Base64.URL_SAFE));
|
response.putString("clientDataJSON", Base64.encodeToString(signedData.getClientDataJSON(), Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
response.putString("authenticatorData", Base64.encodeToString(signedData.getAuthenticatorData(), Base64.URL_SAFE));
|
response.putString("authenticatorData", Base64.encodeToString(signedData.getAuthenticatorData(), Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
response.putString("signature", Base64.encodeToString(signedData.getSignature(), Base64.URL_SAFE));
|
response.putString("signature", Base64.encodeToString(signedData.getSignature(), Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
byte[] userHandle = signedData.getUserHandle();
|
byte[] userHandle = signedData.getUserHandle();
|
||||||
if (userHandle != null) {
|
if (userHandle != null) {
|
||||||
response.putString("userHandle", Base64.encodeToString(userHandle, Base64.URL_SAFE));
|
response.putString("userHandle", Base64.encodeToString(userHandle, Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING));
|
||||||
}
|
}
|
||||||
signInResult.putMap("response", response);
|
signInResult.putMap("response", response);
|
||||||
|
signInResult.putString("type", PublicKeyCredentialType.PUBLIC_KEY.toString());
|
||||||
|
|
||||||
signInPromise.resolve(signInResult);
|
signInPromise.resolve(signInResult);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user