From eef11ef46e77244665f398065fcbc7b0a3a01369 Mon Sep 17 00:00:00 2001 From: dahall Date: Sun, 29 May 2022 21:40:08 -0600 Subject: [PATCH] Added unit tests for changes to Crypt functions --- .../PInvoke/Security/AdvApi32/WinCryptTests.cs | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 UnitTests/PInvoke/Security/AdvApi32/WinCryptTests.cs diff --git a/UnitTests/PInvoke/Security/AdvApi32/WinCryptTests.cs b/UnitTests/PInvoke/Security/AdvApi32/WinCryptTests.cs new file mode 100644 index 00000000..4486453f --- /dev/null +++ b/UnitTests/PInvoke/Security/AdvApi32/WinCryptTests.cs @@ -0,0 +1,49 @@ +using NUnit.Framework; +using System.Linq; +using static Vanara.PInvoke.AdvApi32; +using static Vanara.PInvoke.Crypt32; + +namespace Vanara.PInvoke.Tests; + +[TestFixture()] +public class WinCryptTests +{ + private const string myContName = "MyTestingContainer"; + + [Test] + public void CryptExportKeyTest() + { + CryptAcquireContext(out _, myContName, CryptProviderName.MS_ENHANCED_PROV, PROV_RSA_FULL, CryptAcquireContextFlags.CRYPT_DELETEKEYSET); + Assert.That(CryptAcquireContext(out SafeHCRYPTPROV hProv, myContName, CryptProviderName.MS_ENHANCED_PROV, PROV_RSA_FULL, CryptAcquireContextFlags.CRYPT_NEWKEYSET), ResultIs.Successful); + using (hProv) + { + // get user key from container + Assert.That(CryptGenKey(hProv, (ALG_ID)CertKeySpec.AT_KEYEXCHANGE, CryptGenKeyFlags.CRYPT_EXPORTABLE, out SafeHCRYPTKEY hKey), ResultIs.Successful); + using (hKey) + { + uint dwBlobLen = 0; + CryptExportKey(hKey, default, BlobType.PUBLICKEYBLOB, 0, null, ref dwBlobLen); + Assert.That(dwBlobLen, Is.GreaterThan(0)); + + var pbKeyBlobBuffer = new byte[dwBlobLen]; + Assert.That(CryptExportKey(hKey, default, BlobType.PUBLICKEYBLOB, 0, pbKeyBlobBuffer, ref dwBlobLen), ResultIs.Successful); + } + } + } + + [Test] + public void CryptEnumProviderTypesTest() + { + var output = CryptEnumProviderTypes().ToArray(); + Assert.That(output, Is.Not.Empty); + output.WriteValues(); + } + + [Test] + public void CryptEnumKeyIdentifierPropertiesTest() + { + var output = CryptEnumKeyIdentifierProperties().ToArray(); + Assert.That(output, Is.Not.Empty); + output.WriteValues(); + } +} \ No newline at end of file