Xamarin Public Jenkins (auto-signing) 94b2861243 Imported Upstream version 4.8.0.309
Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
2016-11-10 13:04:39 +00:00

47 lines
1.3 KiB
C#

using System.Security;
using System.Runtime.InteropServices;
namespace System.Net
{
static partial class UnsafeNclNativeMethods
{
internal unsafe static class SecureStringHelper
{
internal static string CreateString(SecureString secureString)
{
string plainString;
IntPtr bstr = IntPtr.Zero;
if (secureString == null || secureString.Length == 0)
return String.Empty;
try
{
bstr = Marshal.SecureStringToBSTR(secureString);
plainString = Marshal.PtrToStringBSTR(bstr);
}
finally
{
if (bstr != IntPtr.Zero)
Marshal.ZeroFreeBSTR(bstr);
}
return plainString;
}
internal static SecureString CreateSecureString(string plainString)
{
SecureString secureString;
if (plainString == null || plainString.Length == 0)
return new SecureString();
fixed (char* pch = plainString)
{
secureString = new SecureString(pch, plainString.Length);
}
return secureString;
}
}
}
}