crypt32(1/7): Implement CertRDNValueToStr for UTF-8 strings
Juan Lang
juan.lang at gmail.com
Tue Aug 7 17:00:33 CDT 2007
--Juan
-------------- next part --------------
From 692807a37de7b9ec7e1e5b09c1093779fb077ba3 Mon Sep 17 00:00:00 2001
From: Juan Lang <juanlang at juan.corp.google.com>
Date: Tue, 7 Aug 2007 09:18:44 -0700
Subject: [PATCH] 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 dw
}
}
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 dw
}
}
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);
}
--
1.4.1
More information about the wine-patches
mailing list