diff --git a/services/implementation/src/authentication_v2/auth_stages/auth_confirm.cpp b/services/implementation/src/authentication_v2/auth_stages/auth_confirm.cpp index 5b0c4014cd5f1290b5bd3140d5c2e99b11ff026f..88bf18015ee535e83407dff1c79165598defce9a 100644 --- a/services/implementation/src/authentication_v2/auth_stages/auth_confirm.cpp +++ b/services/implementation/src/authentication_v2/auth_stages/auth_confirm.cpp @@ -689,6 +689,19 @@ int32_t AuthSrcConfirmState::Action(std::shared_ptr context) context->accesser.aclTypeList = aclNegoResult.Dump(); NegotiateProxyAcl(context); NegotiateUltrasonic(context); + uint32_t credType = 0; + uint32_t aclType = 0; + if (IsUint32(credTypeNegoResult, "identicalCredType")) { + credType = credTypeNegoResult["identicalCredType"].Get(); + } + if (IsUint32(aclNegoResult, "identicalAcl")) { + aclType = aclNegoResult["identicalAcl"].Get(); + } + if (credType == DM_IDENTICAL_ACCOUNT && aclType != DM_IDENTICAL_ACCOUNT) { + context->softbusConnector->JoinLnn(context->accessee.addr, true); + context->authStateMachine->TransitionTo(std::make_shared()); + return DM_OK; + } context->authMessageProcessor->CreateAndSendMsg(MSG_TYPE_REQ_USER_CONFIRM, context); // generate cert sync ffrt::submit([=]() { GenerateCertificate(context);});