[PATCH 2/5] dssenh: Implement CPExportKey.

Hans Leidekker hans at codeweavers.com
Wed Oct 14 04:03:54 CDT 2020


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/dssenh/main.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c
index 38f249ef04d..b575689ab1f 100644
--- a/dlls/dssenh/main.c
+++ b/dlls/dssenh/main.c
@@ -17,7 +17,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-
 #include <stdarg.h>
 
 #include "windef.h"
@@ -469,7 +468,29 @@ BOOL WINAPI CPImportKey( HCRYPTPROV hprov, const BYTE *data, DWORD len, HCRYPTKE
 BOOL WINAPI CPExportKey( HCRYPTPROV hprov, HCRYPTKEY hkey, HCRYPTKEY hexpkey, DWORD blobtype, DWORD flags,
                          BYTE *data, DWORD *len )
 {
-    return FALSE;
+    struct key *key = (struct key *)hkey;
+
+    TRACE( "%p, %p, %p, %08x, %08x, %p, %p\n", (void *)hprov, (void *)hkey, (void *)hexpkey, blobtype, flags,
+           data, len );
+
+    if (key->magic != MAGIC_KEY) return FALSE;
+    if (hexpkey)
+    {
+        FIXME( "export key not supported\n" );
+        return FALSE;
+    }
+    if (blobtype != PUBLICKEYBLOB)
+    {
+        FIXME( "blob type %u not supported\n", blobtype );
+        return FALSE;
+    }
+    if (flags)
+    {
+        FIXME( "flags %08x not supported\n", flags );
+        return FALSE;
+    }
+
+    return !BCryptExportKey( key->handle, NULL, LEGACY_DSA_V2_PUBLIC_BLOB, data, *len, len, 0 );
 }
 
 static struct key *duplicate_key( const struct key *key )
-- 
2.28.0




More information about the wine-devel mailing list