【问题标题】:How to set a PreSharedKey in a RasEntry on Windows CE / Compact Framework?如何在 Windows CE / Compact Framework 上的 RasEntry 中设置 PreSharedKey?
【发布时间】:2012-03-29 22:02:00
【问题描述】:

由于我在最后几个小时内确实没有取得任何进展,因此我需要向您咨询一个我没有解决的问题。 我们有一个 Win CE 5.0 应用程序,使用 C#/Compact Frmaework 2.0 编写,它使用 RASDial 拨入 VPN。目前它使用 PPTP,但我必须使用 Pre Shard Key 将其更改为 L2TP。但老实说,我没有 C++ 经验,我真的只了解一半的代码,或者更清楚地说,我不了解 MSDN 中的 RAS Api 和文档。 我了解如何创建此 L2PT RAS 条目以及如何拨号,但我绝不了解在何处以及如何设置预共享密钥! 我发现代码的和平似乎与我们的代码在原则上所做的事情相同,但在网站/板上我发现它作者说这是使用预共享密钥但老实说,我不知道密钥在哪里.

(...)

// Device configuration for L2TP VPN 
if (bIsL2TP) { 
    DWORD cbKey = 0; 
    if (g_sharedKey) { 
        cbKey = (wcslen(g_sharedKey))*sizeof(WCHAR); 
    } 
    pL2TPConfigData = (PL2TP_CONFIG_DATA)new BYTE 
[sizeof(L2TP_CONFIG_DATA)+ cbKey]; 


    ZeroMemory(pL2TPConfigData, sizeof(L2TP_CONFIG_DATA)+ cbKey); 
    pL2TPConfigData->dwVersion = 1; 
    pL2TPConfigData->dwAuthType = L2TP_IPSEC_AUTH_PRESHAREDKEY; 
    pL2TPConfigData->dwFlags = 0; 
    pL2TPConfigData->cbKey = cbKey; 
    pL2TPConfigData->dwOffsetKey = sizeof(L2TP_CONFIG_DATA); 
    pL2TPConfigData->cMyCerts = 0; 
    pL2TPConfigData->cRootCerts = 0; 
    pL2TPConfigData->dwOffsetCertHashes = sizeof(L2TP_CONFIG_DATA); 
    if (g_sharedKey) { 
        memcpy((PBYTE)pL2TPConfigData+pL2TPConfigData->dwOffsetKey, 
g_sharedKey, cbKey); 
    } 
    pConfigData = (PBYTE)pL2TPConfigData; 
    cbConfigData = sizeof(L2TP_CONFIG_DATA) + cbKey; 
} 


(...) 


// Create a new phone-book entry. 
res = ::RasSetEntryProperties(NULL, g_entryName, &rasEntry, sizeof 
(rasEntry), pConfigData, cbConfigData); 
if (res != 0) { 
    wprintf(L"Cannot create or update the phone book entry (error# %u). 
Aborting.", res); 
    goto exit; 
} 

在代码中,密钥的长度 (cbKey) 已确定,但有人可以向我解释代码中实际密钥的位置吗?或者有人可以解释一下如何在 RASEntry 中为 L2TP 设置预共享密钥?

非常感谢

twickl

【问题讨论】:

    标签: c# compact-framework windows-ce vpn ras


    【解决方案1】:

    预共享密钥被复制到L2TP_CONFIG_DATA结构中,这一行:

    memcpy((PBYTE)pL2TPConfigData+pL2TPConfigData->dwOffsetKey, g_sharedKey, cbKey);
    

    基本上,这一行说“将数据从g_sharedKey 复制到pL2TPConfigData 实例中,从pL2TPConfigData->dwOffsetKey 的偏移量开始,长度为cbKey

    代码将其包装在 if 块中,因此如果 g_sharedKey 为 NULL,则不会执行此复制。

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多