Module: wine Branch: master Commit: 05d2ab176a83d251c5fd698885ae892e0f971c82 URL: http://source.winehq.org/git/wine.git/?a=commit;h=05d2ab176a83d251c5fd698885...
Author: Juan Lang juan.lang@gmail.com Date: Tue Aug 7 09:18:44 2007 -0700
crypt32: Implement CertRDNValueToStr for UTF-8 strings.
---
dlls/crypt32/str.c | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/dlls/crypt32/str.c b/dlls/crypt32/str.c index ef2d2e3..96430dc 100644 --- a/dlls/crypt32/str.c +++ b/dlls/crypt32/str.c @@ -59,6 +59,17 @@ DWORD WINAPI CertRDNValueToStrA(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, } } break; + case CERT_RDN_UTF8_STRING: + if (!psz || !csz) + ret = WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)pValue->pbData, + pValue->cbData / sizeof(WCHAR) + 1, NULL, 0, NULL, NULL); + else + { + ret = WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)pValue->pbData, + pValue->cbData / sizeof(WCHAR) + 1, psz, csz - 1, NULL, NULL); + csz -= ret; + } + break; default: FIXME("string type %d unimplemented\n", dwValueType); } @@ -110,6 +121,24 @@ DWORD WINAPI CertRDNValueToStrW(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, } } break; + case CERT_RDN_UTF8_STRING: + if (!psz || !csz) + ret = pValue->cbData / sizeof(WCHAR); + else + { + DWORD chars = min(pValue->cbData / sizeof(WCHAR), csz - 1); + + if (chars) + { + DWORD i; + + for (i = 0; i < chars; i++) + psz[i] = *((LPWSTR)pValue->pbData + i); + ret += chars; + csz -= chars; + } + } + break; default: FIXME("string type %d unimplemented\n", dwValueType); }