Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Passkey Support #12733

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft

Passkey Support #12733

wants to merge 5 commits into from

Conversation

Xiaoshouzi-gh
Copy link
Contributor

@Xiaoshouzi-gh Xiaoshouzi-gh commented Apr 9, 2024

This PR is for TW review for private preview. We will not merge it to main branch.

Xiaoshouzi-gh and others added 5 commits March 28, 2024 11:48
[Passkey #1 cloned] start passkey enrollment rpc (#11872)

1. implemented rpc call to startPasskeyEnrollment
2. defined startPasskeyEnrollment request and response
3. added unit tests

[Passkey #2] finalize passkey enrollment rpc (#11885)

Implemented finalizePasskeyEnrollment rpc call
Defined finalizePasskeyEnrollment Request and Response object
Added unit tests

[passkey #3] startPasskeySignIn RPC call (#11889)

Implemented start passkey sign in rpc call
Defined startPasskeySignInRequest & Response
Added Unit tests

[Passkey #4] finalizePasskeySignIn rpc (#11904)

1.  Implemented passkey finalize sign in rpc call
2. Defined finalizePasskeySignIn request & response
3. Added unit tests.

[Passkey #5] Auth startPasskeySignInWithCompletion: and finalizePasskeySignInWithPlatformCredential:completion (#11952)

[Passkey #6] Update passkey related proto naming change (#11953)

[Passkey #7] FIRUser startPasskeyEnrollmentWithName:completion: & finalizePasskeyEnrollmentWithPlatformCredential:completion: implementation (#11991)
[Passkey #8] Added enrolledPasskeys support on getAccountInfo rpc (#12002)

[Passkey #9] Passkey withdraw (#12127)
@google-oss-bot
Copy link

2 Warnings
⚠️ Did you forget to add a changelog entry? (Add #no-changelog to the PR description to silence this warning.)
⚠️ New public headers were added, did you remember to add them to the umbrella header?

Generated by 🚫 Danger

Copy link
Contributor

github-actions bot commented Apr 9, 2024

Apple API Diff Report

Commit: 1949880
Last updated: Tue Apr 9 08:20 PDT 2024
View workflow logs & download artifacts


FirebaseAuth

Classes

FIRUser
[ADDED] -finalizePasskeyEnrollmentWithPlatformCredential:completion:
Swift:
+  func finalizePasskeyEnrollment ( with platformCredential : ASAuthorizationPlatformPublicKeyCredentialRegistration ) async throws -> AuthDataResult
Objective-C:
+  - ( void ) finalizePasskeyEnrollmentWithPlatformCredential : ( nonnull ASAuthorizationPlatformPublicKeyCredentialRegistration * ) platformCredential completion : ( nullable void ( ^ )( FIRAuthDataResult * _Nullable , NSError * _Nullable )) completion ;
[ADDED] -startPasskeyEnrollmentWithName:completion:
Swift:
+  func startPasskeyEnrollment ( with name : String ?) async throws -> ASAuthorizationPlatformPublicKeyCredentialRegistrationRequest
Objective-C:
+  - ( void ) startPasskeyEnrollmentWithName :( nullable NSString * ) name completion : ( nullable void ( ^ )( ASAuthorizationPlatformPublicKeyCredentialRegistrationRequest * _Nullable , NSError * _Nullable )) completion ;
[ADDED] enrolledPasskeys
Swift:
+  var enrolledPasskeys : [ PasskeyInfo ] { get }
Objective-C:
+  @property ( nonatomic , readonly ) API_UNAVAILABLE ( watchos ) NSArray < FIRPasskeyInfo *> * enrolledPasskeys ;
[ADDED] -unenrollPasskeyWithCredentialID:completion:
Swift:
+  func unenrollPasskey ( with credentialID : String ) async throws
Objective-C:
+  - ( void ) unenrollPasskeyWithCredentialID :( nonnull NSString * ) credentialID completion :( nullable void ( ^ )( NSError * _Nullable )) completion ;
FIRAuth
[ADDED] -startPasskeySignInWithCompletion:
Swift:
+  func startPasskeySignIn () async throws -> ASAuthorizationPlatformPublicKeyCredentialAssertionRequest
Objective-C:
+  - ( void ) startPasskeySignInWithCompletion : ( nullable void ( ^ )( ASAuthorizationPlatformPublicKeyCredentialAssertionRequest * _Nullable , NSError * _Nullable )) completion ;
[ADDED] -finalizePasskeySignInWithPlatformCredential:completion:
Swift:
+  func finalizePasskeySignIn ( with platformCredential : ASAuthorizationPlatformPublicKeyCredentialAssertion ) async throws -> FIRAuthDataResult
Objective-C:
+  - ( void ) finalizePasskeySignInWithPlatformCredential : ( nonnull ASAuthorizationPlatformPublicKeyCredentialAssertion * ) platformCredential completion : ( nullable void ( ^ )( FIRAuthDataResult * _Nullable , NSError * _Nullable )) completion ;
[ADDED] FIRPasskeyInfo
[ADDED] FIRPasskeyInfo
Swift:
+  class PasskeyInfo : NSObject
+    var name : String { get }
+    var credentialID : String { get }
Objective-C:
+  @interface FIRPasskeyInfo : NSObject
+    @property ( nonatomic , readonly ) NSString * _Nonnull name ;
+    @property ( nonatomic , readonly ) NSString * _Nonnull credentialID ;

Enumerations

FIRAuthErrorCode
[ADDED] FIRAuthErrorCodePasskeyEnrollmentNotFound
Swift:
+  case passkeyEnrollmentNotFound = 17209
Objective-C:
+  FIRAuthErrorCodePasskeyEnrollmentNotFound = 17209

@google-oss-bot
Copy link

Coverage Report 1

Affected Products

  • FirebaseAuth-iOS-FirebaseAuth.framework

    Overall coverage changed from ? (03ce722) to 69.48% (1949880) by ?.

    129 individual files with coverage change

    FilenameBase (03ce722)Merge (1949880)Diff
    FIRActionCodeSettings.m?100.00%?
    FIRAdditionalUserInfo.m?92.31%?
    FIRAuth.m?83.59%?
    FIRAuthAPNSToken.m?100.00%?
    FIRAuthAPNSTokenManager.m?55.62%?
    FIRAuthAppCredential.m?91.30%?
    FIRAuthAppCredentialManager.m?100.00%?
    FIRAuthBackend+MultiFactor.m?37.89%?
    FIRAuthBackend.m?83.08%?
    FIRAuthCredential.m?38.89%?
    FIRAuthDataResult.m?41.38%?
    FIRAuthDefaultUIDelegate.m?0.00%?
    FIRAuthDispatcher.m?100.00%?
    FIRAuthErrorUtils.m?67.65%?
    FIRAuthExceptionUtils.m?0.00%?
    FIRAuthGlobalWorkQueue.m?100.00%?
    FIRAuthKeychainServices.m?59.66%?
    FIRAuthNotificationManager.m?84.68%?
    FIRAuthProtoFinalizeMFAPhoneRequestInfo.m?0.00%?
    FIRAuthProtoFinalizeMFAPhoneResponseInfo.m?0.00%?
    FIRAuthProtoFinalizeMFATOTPEnrollmentRequestInfo.m?100.00%?
    FIRAuthProtoFinalizeMFATOTPEnrollmentResponseInfo.m?0.00%?
    FIRAuthProtoFinalizeMFATOTPSignInRequestInfo.m?100.00%?
    FIRAuthProtoMFAEnrollment.m?89.47%?
    FIRAuthProtoStartMFAPhoneRequestInfo.m?0.00%?
    FIRAuthProtoStartMFAPhoneResponseInfo.m?0.00%?
    FIRAuthProtoStartMFATOTPEnrollmentRequestInfo.m?100.00%?
    FIRAuthProtoStartMFATOTPEnrollmentResponseInfo.m?0.00%?
    FIRAuthRecaptchaVerifier.m?10.79%?
    FIRAuthRequestConfiguration.m?100.00%?
    FIRAuthSerialTaskQueue.m?100.00%?
    FIRAuthSettings.m?58.33%?
    FIRAuthStoredUserManager.m?52.87%?
    FIRAuthTokenResult.m?78.67%?
    FIRAuthURLPresenter.m?51.68%?
    FIRAuthUserDefaults.m?100.00%?
    FIRAuthWebUtils.m?89.41%?
    FIRAuthWebView.m?0.00%?
    FIRAuthWebViewController.m?0.00%?
    FIRCreateAuthURIRequest.m?61.29%?
    FIRCreateAuthURIResponse.m?100.00%?
    FIRDeleteAccountRequest.m?100.00%?
    FIRDeleteAccountResponse.m?100.00%?
    FIREmailAuthProvider.m?54.55%?
    FIREmailLinkSignInRequest.m?90.91%?
    FIREmailLinkSignInResponse.m?60.87%?
    FIREmailPasswordAuthCredential.m?34.04%?
    FIRFacebookAuthCredential.m?38.46%?
    FIRFacebookAuthProvider.m?37.50%?
    FIRFinalizeMFAEnrollmentRequest.m?65.00%?
    FIRFinalizeMFAEnrollmentResponse.m?0.00%?
    FIRFinalizeMFASignInRequest.m?87.10%?
    FIRFinalizeMFASignInResponse.m?0.00%?
    FIRFinalizePasskeyEnrollmentRequest.m?95.00%?
    FIRFinalizePasskeyEnrollmentResponse.m?100.00%?
    FIRFinalizePasskeySignInRequest.m?95.00%?
    FIRFinalizePasskeySignInResponse.m?100.00%?
    FIRGameCenterAuthCredential.m?0.00%?
    FIRGameCenterAuthProvider.m?0.00%?
    FIRGetAccountInfoRequest.m?100.00%?
    FIRGetAccountInfoResponse.m?82.28%?
    FIRGetOOBConfirmationCodeRequest.m?86.55%?
    FIRGetOOBConfirmationCodeResponse.m?100.00%?
    FIRGetProjectConfigRequest.m?100.00%?
    FIRGetProjectConfigResponse.m?64.29%?
    FIRGetRecaptchaConfigRequest.m?77.27%?
    FIRGetRecaptchaConfigResponse.m?100.00%?
    FIRGitHubAuthCredential.m?38.46%?
    FIRGitHubAuthProvider.m?37.50%?
    FIRGoogleAuthCredential.m?40.00%?
    FIRGoogleAuthProvider.m?37.50%?
    FIRIdentityToolkitRequest.m?91.67%?
    FIRMultiFactor.m?12.12%?
    FIRMultiFactorInfo.m?89.29%?
    FIRMultiFactorResolver.m?11.34%?
    FIRMultiFactorSession.m?0.00%?
    FIROAuthCredential.m?50.00%?
    FIROAuthProvider.m?85.93%?
    FIRPasskeyInfo.m?100.00%?
    FIRPhoneAuthCredential.m?31.37%?
    FIRPhoneAuthProvider.m?56.02%?
    FIRPhoneMultiFactorAssertion.m?0.00%?
    FIRPhoneMultiFactorGenerator.m?0.00%?
    FIRPhoneMultiFactorInfo.m?86.36%?
    FIRResetPasswordRequest.m?89.47%?
    FIRResetPasswordResponse.m?100.00%?
    FIRRevokeTokenRequest.m?100.00%?
    FIRRevokeTokenResponse.m?100.00%?
    FIRSecureTokenRequest.m?56.82%?
    FIRSecureTokenResponse.m?0.00%?
    FIRSecureTokenService.m?91.39%?
    FIRSendVerificationCodeRequest.m?93.10%?
    FIRSendVerificationCodeResponse.m?57.14%?
    FIRSetAccountInfoRequest.m?96.77%?
    FIRSetAccountInfoResponse.m?100.00%?
    FIRSignInWithGameCenterRequest.m?100.00%?
    FIRSignInWithGameCenterResponse.m?100.00%?
    FIRSignUpNewUserRequest.m?96.30%?
    FIRSignUpNewUserResponse.m?100.00%?
    FIRStartMFAEnrollmentRequest.m?62.86%?
    FIRStartMFAEnrollmentResponse.m?0.00%?
    FIRStartMFASignInRequest.m?0.00%?
    FIRStartMFASignInResponse.m?0.00%?
    FIRStartPasskeyEnrollmentRequest.m?90.00%?
    FIRStartPasskeyEnrollmentResponse.m?100.00%?
    FIRStartPasskeySignInRequest.m?87.50%?
    FIRStartPasskeySignInResponse.m?85.71%?
    FIRTOTPMultiFactorAssertion.m?0.00%?
    FIRTOTPMultiFactorGenerator.m?0.00%?
    FIRTOTPMultiFactorInfo.m?0.00%?
    FIRTOTPSecret.m?0.00%?
    FIRTwitterAuthCredential.m?40.00%?
    FIRTwitterAuthProvider.m?37.50%?
    FIRUser.m?71.30%?
    FIRUserInfoImpl.m?93.75%?
    FIRUserMetadata.m?86.36%?
    FIRVerifyAssertionRequest.m?91.36%?
    FIRVerifyAssertionResponse.m?87.50%?
    FIRVerifyClientRequest.m?100.00%?
    FIRVerifyClientResponse.m?100.00%?
    FIRVerifyCustomTokenRequest.m?89.47%?
    FIRVerifyCustomTokenResponse.m?100.00%?
    FIRVerifyPasswordRequest.m?95.45%?
    FIRVerifyPasswordResponse.m?62.50%?
    FIRVerifyPhoneNumberRequest.m?82.76%?
    FIRVerifyPhoneNumberResponse.m?81.25%?
    FIRWithdrawMFARequest.m?0.00%?
    FIRWithdrawMFAResponse.m?0.00%?
    NSData+FIRBase64.m?100.00%?

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/YGwDsq2Zoh.html

@brief start sign in with passkey retrieving challenge from GCIP and create an assertion request.
@param completion Optionally; a block which creates a assertation request.

@remarks // TODO @liubinj add possible error codes
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a fast follow up after private preview. Let me know if you think it's better to remove it for now @kevinthecheung

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants