1 /* -*- Mode: c++; c-basic-offset: 2; tab-width: 20; indent-tabs-mode: nil; -*- 2 * This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef WebAuthnTokenManager_h 7 #define WebAuthnTokenManager_h 8 9 #include "mozilla/dom/AndroidWebAuthnTokenManager.h" 10 11 #include "mozilla/java/WebAuthnTokenManagerNatives.h" 12 13 namespace mozilla { 14 class WebAuthnTokenManager final 15 : public java::WebAuthnTokenManager::Natives<WebAuthnTokenManager> { 16 public: WebAuthnMakeCredentialFinish(jni::ByteArray::Param aClientDataJson,jni::ByteArray::Param aKeyHandle,jni::ByteArray::Param aAttestationObject)17 static void WebAuthnMakeCredentialFinish( 18 jni::ByteArray::Param aClientDataJson, jni::ByteArray::Param aKeyHandle, 19 jni::ByteArray::Param aAttestationObject) { 20 mozilla::dom::AndroidWebAuthnResult result; 21 22 result.mClientDataJSON.Assign( 23 reinterpret_cast<const char*>( 24 aClientDataJson->GetElements().Elements()), 25 aClientDataJson->Length()); 26 result.mKeyHandle.Assign( 27 reinterpret_cast<uint8_t*>(aKeyHandle->GetElements().Elements()), 28 aKeyHandle->Length()); 29 result.mAttObj.Assign(reinterpret_cast<uint8_t*>( 30 aAttestationObject->GetElements().Elements()), 31 aAttestationObject->Length()); 32 33 mozilla::dom::AndroidWebAuthnTokenManager::GetInstance() 34 ->HandleRegisterResult(std::move(result)); 35 } 36 WebAuthnMakeCredentialReturnError(jni::String::Param aErrorCode)37 static void WebAuthnMakeCredentialReturnError(jni::String::Param aErrorCode) { 38 mozilla::dom::AndroidWebAuthnResult result(aErrorCode->ToString()); 39 mozilla::dom::AndroidWebAuthnTokenManager::GetInstance() 40 ->HandleRegisterResult(std::move(result)); 41 } 42 WebAuthnGetAssertionFinish(jni::ByteArray::Param aClientDataJson,jni::ByteArray::Param aKeyHandle,jni::ByteArray::Param aAuthData,jni::ByteArray::Param aSignature,jni::ByteArray::Param aUserHandle)43 static void WebAuthnGetAssertionFinish(jni::ByteArray::Param aClientDataJson, 44 jni::ByteArray::Param aKeyHandle, 45 jni::ByteArray::Param aAuthData, 46 jni::ByteArray::Param aSignature, 47 jni::ByteArray::Param aUserHandle) { 48 mozilla::dom::AndroidWebAuthnResult result; 49 50 result.mClientDataJSON.Assign( 51 reinterpret_cast<const char*>( 52 aClientDataJson->GetElements().Elements()), 53 aClientDataJson->Length()); 54 result.mKeyHandle.Assign( 55 reinterpret_cast<uint8_t*>(aKeyHandle->GetElements().Elements()), 56 aKeyHandle->Length()); 57 result.mAuthData.Assign( 58 reinterpret_cast<uint8_t*>(aAuthData->GetElements().Elements()), 59 aAuthData->Length()); 60 result.mSignature.Assign( 61 reinterpret_cast<uint8_t*>(aSignature->GetElements().Elements()), 62 aSignature->Length()); 63 result.mUserHandle.Assign( 64 reinterpret_cast<uint8_t*>(aUserHandle->GetElements().Elements()), 65 aUserHandle->Length()); 66 67 mozilla::dom::AndroidWebAuthnTokenManager::GetInstance()->HandleSignResult( 68 std::move(result)); 69 } 70 WebAuthnGetAssertionReturnError(jni::String::Param aErrorCode)71 static void WebAuthnGetAssertionReturnError(jni::String::Param aErrorCode) { 72 mozilla::dom::AndroidWebAuthnResult result(aErrorCode->ToString()); 73 mozilla::dom::AndroidWebAuthnTokenManager::GetInstance()->HandleSignResult( 74 std::move(result)); 75 } 76 }; 77 } // namespace mozilla 78 79 #endif 80