Juan Lang : crypt32: Implement CertRDNValueToStr for UTF-8 strings.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Aug 8 08:59:28 CDT 2007


Module: wine
Branch: master
Commit: 05d2ab176a83d251c5fd698885ae892e0f971c82
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=05d2ab176a83d251c5fd698885ae892e0f971c82

Author: Juan Lang <juan.lang at 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);
     }




More information about the wine-cvs mailing list