/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT remdesk_generate_expert_blob(remdeskPlugin* remdesk) { char* name; char* pass; char* password; rdpSettings* settings = remdesk->settings; if (remdesk->ExpertBlob) return CHANNEL_RC_OK; if (settings->RemoteAssistancePassword) password = settings->RemoteAssistancePassword; else password = settings->Password; if (!password) { WLog_ERR(TAG, "password was not set!"); return ERROR_INTERNAL_ERROR; } name = settings->Username; if (!name) name = "Expert"; remdesk->EncryptedPassStub = freerdp_assistance_encrypt_pass_stub(password, settings->RemoteAssistancePassStub, &(remdesk->EncryptedPassStubSize)); if (!remdesk->EncryptedPassStub) { WLog_ERR(TAG, "freerdp_assistance_encrypt_pass_stub failed!"); return ERROR_INTERNAL_ERROR; } pass = freerdp_assistance_bin_to_hex_string(remdesk->EncryptedPassStub, remdesk->EncryptedPassStubSize); if (!pass) { WLog_ERR(TAG, "freerdp_assistance_bin_to_hex_string failed!"); return ERROR_INTERNAL_ERROR; } remdesk->ExpertBlob = freerdp_assistance_construct_expert_blob(name, pass); if (!remdesk->ExpertBlob) { WLog_ERR(TAG, "freerdp_assistance_construct_expert_blob failed!"); return ERROR_INTERNAL_ERROR; } return CHANNEL_RC_OK; }
int remdesk_generate_expert_blob(remdeskPlugin* remdesk) { char* name; char* pass; char* password; rdpSettings* settings = remdesk->settings; if (remdesk->ExpertBlob) return 1; if (settings->RemoteAssistancePassword) password = settings->RemoteAssistancePassword; else password = settings->Password; if (!password) return -1; name = settings->Username; if (!name) name = "Expert"; remdesk->EncryptedPassStub = freerdp_assistance_encrypt_pass_stub(password, settings->RemoteAssistancePassStub, &(remdesk->EncryptedPassStubSize)); if (!remdesk->EncryptedPassStub) return -1; pass = freerdp_assistance_bin_to_hex_string(remdesk->EncryptedPassStub, remdesk->EncryptedPassStubSize); if (!pass) return -1; remdesk->ExpertBlob = freerdp_assistance_construct_expert_blob(name, pass); if (!remdesk->ExpertBlob) return -1; return 1; }