How to integrate support for securing a property in my .NET application?
The following article uses options that are available starting
with the Professional edition and project
type.
Step 1 - Loading and initializing the SecureProp library
This code needs to be added to your C# application.
using System.Runtime.InteropServices;
// Match the calling convention of the "GetRevealedTextLength" exported function
[DllImport("SecureProp.dll", CharSet = CharSet.Unicode)]
private static extern uint GetRevealedTextLength(string aSecuredText);
// Match the calling convention of the "RevealText" exported function
[DllImport("SecureProp.dll", CharSet = CharSet.Unicode)]
private static extern void RevealText(string aSecuredText, string aPlainTextBuffer, uint aBufferLength);
This code needs to be added to your VB.NET application.
' Match the calling convention of the "GetRevealedTextLength" exported function
<DllImport("SecureProp.dll", CharSet:=CharSet.Unicode)>
Private Shared Function GetRevealedTextLength(ByVal aSecuredText As String) As UInteger
End Function
' Match the calling convention of the "RevealText" exported function
<DllImport("SecureProp.dll", CharSet:=CharSet.Unicode)>
Private Shared Sub RevealText(ByVal aSecuredText As String, ByVal aPlainTextBuffer As String, ByVal aBufferLength As UInteger)
End Sub
SecureProp library exported functions
- GetRevealedTextLength - the DLL exported function that reveals the secured text and returns its length
- RevealText - the DLL exported function that reveals the secured text and stores the result in the provided buffer
Step 2 - Using the SecureProp library
This code needs to be added to your C# application.
private static void SecureProps()
{
// Load the properties from the ini file
List<SecuredProperty> properties = new List<SecuredProperty>();
LoadPropertiesFromIni(ref properties);
if (properties.Count == 0)
return;
//------------------------------------------------------------------------------------------
// Use the SecureProp library
//------------------------------------------------------------------------------------------
foreach (SecuredProperty property in properties)
{
string propValue = property.mValue;
//------------------------------------------------------------------------------------------
// Exported function call
// Reveal the secured text and return its length
//------------------------------------------------------------------------------------------
uint textLength = GetRevealedTextLength(propValue);
// Allocate a buffer of wide characters with the length: textLength + 1
// We need to add 1 in order to provide space for the null terminator
char[] textBuffer = new char[++textLength];
string textBufferStr = new string(textBuffer);
//------------------------------------------------------------------------------------------
// Exported function call
// Reveal the secured text and store the result in the provided buffer
//------------------------------------------------------------------------------------------
RevealText(propValue, textBufferStr, textLength);
// Output the revealed text
System.Console.WriteLine(property.mName + " = " + textBufferStr);
}
}
This code needs to be added to your VB.NET application.
Private Shared Sub SecureProps()
' Load the properties from the ini file
Dim properties As List(Of SecuredProperty) = New List(Of SecuredProperty)
LoadPropertiesFromIni(properties)
If (properties.Count.Equals(0)) Then
Return
End If
'------------------------------------------------------------------------------------------
' Use the SecureProp library
'------------------------------------------------------------------------------------------
For Each securedProp As SecuredProperty In properties
Dim propValue As String = securedProp.mValue
'------------------------------------------------------------------------------------------
' Exported function call
' Reveal the secured text And return its length
'------------------------------------------------------------------------------------------
Dim textLength As UInteger = GetRevealedTextLength(propValue)
' Allocate a buffer of wide characters with the length textLength + 1
' We need to add 1 in order to provide space for the null terminator
textLength += 1
Dim textBuffer As Char() = New Char(textLength) {}
Dim textBufferStr As String = New String(textBuffer)
'------------------------------------------------------------------------------------------
' Exported function call
' Reveal the secured text And store the result in the provided buffer
'------------------------------------------------------------------------------------------
RevealText(propValue, textBufferStr, textLength)
' Output the revealed text
System.Console.WriteLine(securedProp.mName + " = " + textBufferStr)
Next
End Sub
Sample Project
Download the C# sample or the VB.NET sample showcasing how the secure property functionality works.