2009-06-11 6 views
0

私は自分のcertrequestをPEMのbase64データとして持っています。以下のデータを参照してください。ICertRequest2 :: CSRデータの提出互換性のあるASCIIからBSTRへ

1)これはASCIIデータタイプであり、 UNICODEフォーマットではないことを理解しています。どうか明らかにしてください。

----- BEGIN NEW CERTIFICATE REQUEST ----- MIIBTjCBuAIBADARMQ8wDQYDVQQDEwZ3dTAwMzEwgZ0wDQYJKoZIhvcNAQEBBQAD gYsAMIGHAoGBAKP48eljetv3fVicT6g6hKjmLpsySJaZ/NnepEJEqtQQNbwsluhW yWxhHWzPoNPV9uqjZBW7EnqYjxyPp1A0vOK35uxmmcNrgmuSjO1WBkD0YVZwzh2u OovRCOwJKklQtJnQWoM + yT8CyBVk7raVJOrLDMC8FR5AMknVCIlt7HppAgEDoAAw DQYJKoZIhvcNAQEFBQADgYEAAK5G10e39GxiNiPXdrOAwtuIiLd1UTWn3VYY7nYY 74LhydUBjo0Xi6HBTTNVlPNoRB9GOe5P1Qgq0EJ6gLIriFY + Gxdl2Y4lSo7FmpxB + 87bRCLpC3mxQltNm97ZysmS4I4diYhPDSS/2acKeH2cBgAtQVG9KsuZ41qxUQ10 EY8 = -----新しい証明書申請を完了する-----

2)上記のデータがASCIIの場合、どのようにしてBSTRに変換できますか? ICertRequest2 :: Submitは、データをUnicode文字列にする必要があります。

3)私はBSTR

に直接ASCIIデータに変換することができますおかげで ラジ

答えて

0

次のいずれかの

  1. 使用MultiByteToWideChar

  2. 使用_bstr_tかのBSTRのためのC++ラッパーですCComBSTRSysAllocString(またはSysAllocStringLen)を呼び出す前に。

+0

こんにちはRasmus、ありがとうございます。私はあなたのオプション1を使用しています。しかし、私はどのオプションを使用すべきかわかりません __in UINT CodePage、 __in DWORD dwFlags、 私はCP_ACP(デフォルト)を使用しており、フラグにゼロを使用しています。私の場合、これらのオプションは大丈夫だと思いますか? MSはCP_ACPについて、PCからPCへと変化するものとして警告しています。私はそれを維持するためにPCを構成したい場合、私はこれを行う方法がありますか?ありがとう – Raj

+0

あなたのデータは純粋なASCII(すなわち値> 127の文字がない)なので、どのフラグを使っても問題ありません。警告が気になる方は、CP_UTF8を使用してください。コードページの詳細については、こちらの記事をご覧ください:http://blogs.msdn.com/oldnewthing/archive/2005/03/08/389527.aspx –

0

US-ASCIIはUTF-8のサブセットです。 ASCII文字のエンコードされた形式はUTF-8エンコーディングであるため、変換は必要ありません。

そのまま文字列をそのまま渡して、CR_IN_BASE64HEADERフラグを設定します。

+0

こんにちはエリクソン - あなたの答えをありがとうございます。私はここで何も理由が混同されているかどうかは分かりません。私はディスクからCSRを読んでいます。私は2つのバッファタイプとしてCSRを読んでいます char * mDataBuffer1; wchar_t * mDataBuffer; 最初のchar *の長さは548、wchar_t *は274です。 2番目のケースの長さは、 以下で計算されます。RequestBuff = SysAllocString(mDataBuffer); - > CreateFileによって返される> 548 fn long len = SysStringLen(RequestBuff); - > 274 私の宣言は、 私はseconsが間違っていると確信しています。私はchar *として宣言し、続行する必要があります ありがとうございます Raj – Raj

+0

こんにちはRaj。あなたの質問に正確に従っているかどうかはわかりませんが、548の長さのchar *を渡す必要があると思います。 – erickson

+0

こんにちはエリクソン - 私はフォローインを試みています 1. char * DataBufferのディスクからCSRを読みます。 bstrRequest = SysAllocString(DataBuffer); CSRをchar *にしておけば、SysAllocStringはchar *の代わりにwchar_t *だけを期待しているのでエラーをスローします。そこで、char *をwchar_t * に変更しました。hr = pCertRequest->送信(CR_IN_BASE64HEADER | CR_IN_PKCS10,bstrRequest、 bstrAttribute、 bstrCA、 &vDispositionCode); 私の文字列タイプを変更したかった理由は?私は意味をなさない? ありがとう Raj – Raj

関連する問題