diff --git a/main/xmlsecurity/source/dialogs/certificateviewer.src b/main/xmlsecurity/source/dialogs/certificateviewer.src
index 4b9550a..0eceb96 100644
--- a/main/xmlsecurity/source/dialogs/certificateviewer.src
+++ b/main/xmlsecurity/source/dialogs/certificateviewer.src
@@ -1,5 +1,5 @@
 /**************************************************************
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -7,340 +7,333 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- * 
+ *
  *************************************************************/
 
+
 ﻿
 #include "dialogs.hrc"
 #include "helpids.hrc"
 
 TabDialog RID_XMLSECDLG_CERTVIEWER
 {
-    HelpID = HID_XMLSEC_DLG_CERTVIEWER;
-	Size = MAP_APPFONT( TD_WIDTH, TD_HEIGHT );
-	OutputSize = TRUE;
-	Closeable = TRUE;
-	Moveable = TRUE;
-	SVLook = TRUE;
+	HelpID = HID_XMLSEC_DLG_CERTVIEWER ;
+	Size = MAP_APPFONT ( TD_WIDTH, TD_HEIGHT ) ;
+	OutputSize = TRUE ;
+	Closeable = TRUE ;
+	Moveable = TRUE ;
+	SVLook = TRUE ;
 
-	Text [ en-US ] = "View Certificate";
+	Text [ en-US ] = "View Certificate" ;
 	TabControl 1
 	{
-		Pos = MAP_APPFONT( TD_SP_INNERBORDER_LEFT, TD_SP_INNERBORDER_TOP );
-		Size = MAP_APPFONT( TP_WIDTH, TP_HEIGHT+RIDDER_HEIGHT );
+		Pos = MAP_APPFONT ( TD_SP_INNERBORDER_LEFT, TD_SP_INNERBORDER_TOP ) ;
+		Size = MAP_APPFONT ( TP_WIDTH, TP_HEIGHT+RIDDER_HEIGHT ) ;
 		SVLook = TRUE ;
 		PageList =
 		{
 			PageItem
 			{
-				Identifier = RID_XMLSECTP_GENERAL;
-				Text [ en-US ] = "General";
+				Identifier = RID_XMLSECTP_GENERAL ;
+				Text [ en-US ] = "General" ;
 			};
 			PageItem
 			{
-				Identifier = RID_XMLSECTP_DETAILS;
-				Text [ en-US ] = "Details";
+				Identifier = RID_XMLSECTP_DETAILS ;
+				Text [ en-US ] = "Details" ;
 			};
 			PageItem
 			{
-				Identifier = RID_XMLSECTP_CERTPATH;
-				Text [ en-US ] = "Certification Path";
+				Identifier = RID_XMLSECTP_CERTPATH ;
+				Text [ en-US ] = "Certification Path" ;
 			};
 		};
 	};
 	OKButton BTN_OK
 	{
-		Pos = MAP_APPFONT( CV_COL_A, CV_ROW_A );
-		Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
-		DefButton = TRUE;
+		Pos = MAP_APPFONT ( CV_COL_A, CV_ROW_A ) ;
+		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
+		DefButton = TRUE ;
 	};
 	HelpButton BTN_HELP
 	{
-		Pos = MAP_APPFONT( CV_COL_C, CV_ROW_A );
-		Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
+		Pos = MAP_APPFONT ( CV_COL_C, CV_ROW_A ) ;
+		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
 	};
 };
 
 TabPage RID_XMLSECTP_GENERAL
 {
-    HelpId = HID_XMLSEC_TP_GENERAL;
-	Size = MAP_APPFONT( TP_WIDTH, TP_HEIGHT );
-	OutputSize = TRUE;
-	Hide = TRUE;
-	SVLook = TRUE;
+	HelpId = HID_XMLSEC_TP_GENERAL ;
+	Size = MAP_APPFONT ( TP_WIDTH, TP_HEIGHT ) ;
+	OutputSize = TRUE ;
+	Hide = TRUE ;
+	SVLook = TRUE ;
 	Window WIN_FRAME
 	{
-		SVLook = TRUE;
-		Border = TRUE;
-		Pos = MAP_APPFONT( CV_COL_0, CV_ROW_0 );
-		Size = MAP_APPFONT( CV_CONT_WIDTH, CV_CONT_HEIGHT );
+		SVLook = TRUE ;
+		Border = TRUE ;
+		Pos = MAP_APPFONT ( CV_COL_0, CV_ROW_0 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, CV_CONT_HEIGHT ) ;
 	};
 	FixedImage IMG_CERT
 	{
-		Pos = MAP_APPFONT( CW_COL_0, CW_ROW_0 );
-		Size = MAP_APPFONT( IMG1_WIDTH, IMG1_HEIGHT );
+		Pos = MAP_APPFONT ( CW_COL_0, CW_ROW_0 ) ;
+		Size = MAP_APPFONT ( IMG1_WIDTH, IMG1_HEIGHT ) ;
 		Fixed = Image
 		{
-			ImageBitmap = Bitmap { File = "certificate_40x56.png"; };
-			MaskColor = STD_MASKCOLOR;
+			ImageBitmap = Bitmap { File = "certificate_40x56.png"; } ;
 		};
 	};
 	FixedText FI_CERTINFO
 	{
-		Pos = MAP_APPFONT( CW_COL_3, CW_ROW_1 );
-		Size = MAP_APPFONT( CW_COL_5-CW_COL_3, RSC_CD_FIXEDTEXT_HEIGHT );
-		Text [ en-US ] = " Certificate Information";
+		Pos = MAP_APPFONT ( CW_COL_3, CW_ROW_1 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_3, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = " Certificate Information" ;
 	};
 	FixedLine FL_SEP1
 	{
-		Pos = MAP_APPFONT( CW_COL_0, CW_ROW_3 );
-		Size = MAP_APPFONT( CW_COL_5-CW_COL_0, RSC_CD_FIXEDLINE_HEIGHT );
+		Pos = MAP_APPFONT ( CW_COL_0, CW_ROW_3 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_0, RSC_CD_FIXEDLINE_HEIGHT ) ;
 	};
 	FixedText FI_HINTNOTTRUST
 	{
-		Pos = MAP_APPFONT( CW_COL_1, CW_ROW_4 );
-		Size = MAP_APPFONT( CW_COL_5a-CW_COL_1, CW_ROW_4a-CW_ROW_4 );
-		WordBreak = TRUE;
-		Text [ en-US ] = "This certificate is intended for the following purpose(s):";
+		Pos = MAP_APPFONT ( CW_COL_1, CW_ROW_4 ) ;
+		Size = MAP_APPFONT ( CW_COL_5a-CW_COL_1, CW_ROW_4a-CW_ROW_4 ) ;
+		WordBreak = TRUE ;
+		Text [ en-US ] = "This certificate is intended for the following purpose(s):" ;
 	};
 	FixedLine FL_SEP2
 	{
-		Pos = MAP_APPFONT( CW_COL_0, CW_ROW_5 );
-		Size = MAP_APPFONT( CW_COL_5-CW_COL_0, RSC_CD_FIXEDLINE_HEIGHT );
+		Pos = MAP_APPFONT ( CW_COL_0, CW_ROW_5 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_0, RSC_CD_FIXEDLINE_HEIGHT ) ;
 	};
 	FixedText FI_ISSTOLABEL
 	{
-		Pos = MAP_APPFONT( CW_COL_1, CW_ROW_6 );
-		Size = MAP_APPFONT( CW_COL_4-CW_COL_1-1, RSC_CD_FIXEDTEXT_HEIGHT );
-		Text [ en-US ] = "Issued to:";
+		Pos = MAP_APPFONT ( CW_COL_1, CW_ROW_6 ) ;
+		Size = MAP_APPFONT ( CW_COL_4-CW_COL_1-1, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = "Issued to:" ;
 	};
 	FixedText FI_ISSTO
 	{
-		Pos = MAP_APPFONT( CW_COL_4, CW_ROW_6 );
-		Size = MAP_APPFONT( CW_COL_5-CW_COL_4, RSC_CD_FIXEDTEXT_HEIGHT );
+		Pos = MAP_APPFONT ( CW_COL_4, CW_ROW_6 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_4, RSC_CD_FIXEDTEXT_HEIGHT ) ;
 	};
 	FixedText FI_ISSBYLABEL
 	{
-		Pos = MAP_APPFONT( CW_COL_1, CW_ROW_7 );
-		Size = MAP_APPFONT( CW_COL_4-CW_COL_1-1, RSC_CD_FIXEDTEXT_HEIGHT );
-		Text [ en-US ] = "Issued by:";
+		Pos = MAP_APPFONT ( CW_COL_1, CW_ROW_7 ) ;
+		Size = MAP_APPFONT ( CW_COL_4-CW_COL_1-1, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = "Issued by:" ;
 	};
 	FixedText FI_ISSBY
 	{
-		Pos = MAP_APPFONT( CW_COL_4, CW_ROW_7 );
-		Size = MAP_APPFONT( CW_COL_5-CW_COL_4, RSC_CD_FIXEDTEXT_HEIGHT );
+		Pos = MAP_APPFONT ( CW_COL_4, CW_ROW_7 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_4, RSC_CD_FIXEDTEXT_HEIGHT ) ;
 	};
-    FixedText FI_VALIDDATE
+	FixedText FI_VALIDDATE
 	{
-		Pos = MAP_APPFONT( CW_COL_1, CW_ROW_8 );
-        Size = MAP_APPFONT( CW_COL_5-CW_COL_1-1, RSC_CD_FIXEDTEXT_HEIGHT );
-        Text [ en-US ] = "Valid from %SDATE% to %EDATE%";
+		Pos = MAP_APPFONT ( CW_COL_1, CW_ROW_8 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_1-1, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = "Valid from %SDATE% to %EDATE%" ;
 	};
 	FixedImage IMG_KEY
 	{
-		Pos = MAP_APPFONT( CW_COL_0, CW_ROW_9 );
-		Size = MAP_APPFONT( IMG2_WIDTH, IMG2_HEIGHT );
+		Pos = MAP_APPFONT ( CW_COL_0, CW_ROW_9 ) ;
+		Size = MAP_APPFONT ( IMG2_WIDTH, IMG2_HEIGHT ) ;
 		Fixed = Image
 		{
-			ImageBitmap = Bitmap { File = "key_12.png"; };
-			MaskColor = STD_MASKCOLOR;
+			ImageBitmap = Bitmap { File = "key_12.png"; } ;
 		};
 	};
 	FixedText FI_CORRPRIVKEY
 	{
-		Pos = MAP_APPFONT( CW_COL_1a, CW_ROW_10 );
-		Size = MAP_APPFONT( CW_COL_5-CW_COL_1a, RSC_CD_FIXEDTEXT_HEIGHT );
-		Text [ en-US ] = "You have a private key that corresponds to this certificate.";
+		Pos = MAP_APPFONT ( CW_COL_1a, CW_ROW_10 ) ;
+		Size = MAP_APPFONT ( CW_COL_5-CW_COL_1a, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = "You have a private key that corresponds to this certificate." ;
 	};
 	String STR_CERTIFICATE_NOT_VALIDATED
 	{
-		Text [ en-US ] = "The certificate could not be validated.";
+		Text [ en-US ] = "The certificate could not be validated." ;
 	};
-    Image IMG_STATE_NOT_VALIDATED
-    {
-	    ImageBitmap = Bitmap { File = "notcertificate_40x56.png"; };
-       	MaskColor = STD_MASKCOLOR;
+	Image IMG_STATE_NOT_VALIDATED
+	{
+		ImageBitmap = Bitmap { File = "notcertificate_40x56.png"; } ;
 	};
-    Image IMG_STATE_CERIFICATED_HC
-    {
-	    ImageBitmap = Bitmap { File = "certificate_40x56_h.png"; };
-       	MaskColor = STD_MASKCOLOR;
+	Image IMG_STATE_CERIFICATED_HC
+	{
+		ImageBitmap = Bitmap { File = "certificate_40x56_h.png"; } ;
 	};
-    Image IMG_STATE_NOT_VALIDATED_HC
-    {
-	    ImageBitmap = Bitmap { File = "notcertificate_40x56_h.png"; };
-       	MaskColor = STD_MASKCOLOR;
+	Image IMG_STATE_NOT_VALIDATED_HC
+	{
+		ImageBitmap = Bitmap { File = "notcertificate_40x56_h.png"; } ;
 	};
-    Image IMG_KEY_HC
-    {
-	    ImageBitmap = Bitmap { File = "key_12_h.png"; };
-       	MaskColor = STD_MASKCOLOR;
+	Image IMG_KEY_HC
+	{
+		ImageBitmap = Bitmap { File = "key_12_h.png"; } ;
 	};
 };
 
 TabPage RID_XMLSECTP_DETAILS
 {
-    HelpId = HID_XMLSEC_TP_DETAILS;
-	Size = MAP_APPFONT( TP_WIDTH, TP_HEIGHT );
-	OutputSize = TRUE;
-	Hide = TRUE;
-	SVLook = TRUE;
+	HelpId = HID_XMLSEC_TP_DETAILS ;
+	Size = MAP_APPFONT ( TP_WIDTH, TP_HEIGHT ) ;
+	OutputSize = TRUE ;
+	Hide = TRUE ;
+	SVLook = TRUE ;
 	Control LB_ELEMENTS
 	{
-        HelpId = HID_XMLSEC_CTRL_ELEMENTS;
-		Pos = MAP_APPFONT( CV_COL_0, CV_ROW_0 );
-		Size = MAP_APPFONT( CV_CONT_WIDTH, CV_ROW_1-CV_ROW_0 );
-		SVLook = TRUE;
-		Border = TRUE;
+		HelpId = HID_XMLSEC_CTRL_ELEMENTS ;
+		Pos = MAP_APPFONT ( CV_COL_0, CV_ROW_0 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, CV_ROW_1-CV_ROW_0 ) ;
+		SVLook = TRUE ;
+		Border = TRUE ;
 	};
 	String STR_HEADERBAR
 	{
-		Text [ en-US ] = "Field\tValue";
+		Text [ en-US ] = "Field\tValue" ;
 	};
 	MultiLineEdit ML_ELEMENT
 	{
-	    HelpID = "xmlsecurity:MultiLineEdit:RID_XMLSECTP_DETAILS:ML_ELEMENT";
-		Pos = MAP_APPFONT( CV_COL_0, CV_ROW_2 );
-		Size = MAP_APPFONT( CV_CONT_WIDTH, CV_ROW_3-CV_ROW_2 );
-		ReadOnly = TRUE;
-		Border = TRUE;
-		VSCROLL = TRUE;
+		HelpID = "xmlsecurity:MultiLineEdit:RID_XMLSECTP_DETAILS:ML_ELEMENT" ;
+		Pos = MAP_APPFONT ( CV_COL_0, CV_ROW_2 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, CV_ROW_3-CV_ROW_2 ) ;
+		ReadOnly = TRUE ;
+		Border = TRUE ;
+		VSCROLL = TRUE ;
 	};
 	String STR_VERSION
 	{
-		Text [ en-US ] = "Version";
+		Text [ en-US ] = "Version" ;
 	};
 	String STR_SERIALNUM
 	{
-		Text [ en-US ] = "Serial Number";
+		Text [ en-US ] = "Serial Number" ;
 	};
 	String STR_SIGALGORITHM
 	{
-		Text [ en-US ] = "Signature Algorithm";
+		Text [ en-US ] = "Signature Algorithm" ;
 	};
 	String STR_ISSUER
 	{
-		Text [ en-US ] = "Issuer";
+		Text [ en-US ] = "Issuer" ;
 	};
 	String STR_ISSUER_ID
 	{
-		Text [ en-US ] = "Issuer Unique ID";
+		Text [ en-US ] = "Issuer Unique ID" ;
 	};
 	String STR_VALIDFROM
 	{
-		Text [ en-US ] = "Valid From";
+		Text [ en-US ] = "Valid From" ;
 	};
 	String STR_VALIDTO
 	{
-		Text [ en-US ] = "Valid to";
+		Text [ en-US ] = "Valid to" ;
 	};
 	String STR_SUBJECT
 	{
-		Text [ en-US ] = "Subject";
+		Text [ en-US ] = "Subject" ;
 	};
 	String STR_SUBJECT_ID
 	{
-		Text [ en-US ] = "Subject Unique ID";
+		Text [ en-US ] = "Subject Unique ID" ;
 	};
 	String STR_SUBJECT_PUBKEY_ALGO
 	{
-		Text [ en-US ] = "Subject Algorithm";
+		Text [ en-US ] = "Subject Algorithm" ;
 	};
 	String STR_SUBJECT_PUBKEY_VAL
 	{
-        Text [ en-US ] = "Public Key";
+		Text [ en-US ] = "Public Key" ;
 	};
 	String STR_SIGNATURE_ALGO
 	{
-		Text [ en-US ] = "Signature Algorithm";
+		Text [ en-US ] = "Signature Algorithm" ;
 	};
 	String STR_THUMBPRINT_SHA1
 	{
-		Text [ en-US ] = "Thumbprint SHA1";
+		Text [ en-US ] = "Thumbprint SHA1" ;
 	};
 	String STR_THUMBPRINT_MD5
 	{
-		Text [ en-US ] = "Thumbprint MD5";
+		Text [ en-US ] = "Thumbprint MD5" ;
 	};
 };
 
 TabPage RID_XMLSECTP_CERTPATH
 {
-    HelpId = HID_XMLSEC_TP_CERTPATH;
-	Size = MAP_APPFONT( TP_WIDTH, TP_HEIGHT );
-	OutputSize = TRUE;
-	Hide = TRUE;
-	SVLook = TRUE;
+	HelpId = HID_XMLSEC_TP_CERTPATH ;
+	Size = MAP_APPFONT ( TP_WIDTH, TP_HEIGHT ) ;
+	OutputSize = TRUE ;
+	Hide = TRUE ;
+	SVLook = TRUE ;
 	FixedText FT_CERTPATH
 	{
-        Pos = MAP_APPFONT( CV_COL_0, CVP_ROW_0 );
-		Size = MAP_APPFONT( CV_CONT_WIDTH, RSC_CD_FIXEDTEXT_HEIGHT );
-		Text [ en-US ] = "Certification path";
+		Pos = MAP_APPFONT ( CV_COL_0, CVP_ROW_0 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = "Certification path" ;
 	};
 	Control LB_SIGNATURES
 	{
-        HelpId = HID_XMLSEC_CTRL_VIEWSIGNATURES;
-        Pos = MAP_APPFONT( CV_COL_0, CVP_ROW_1 );
-        Size = MAP_APPFONT( CV_CONT_WIDTH, REST_HEIGHT/3*2 );
-		SVLook = TRUE;
-		Border = TRUE;
+		HelpId = HID_XMLSEC_CTRL_VIEWSIGNATURES ;
+		Pos = MAP_APPFONT ( CV_COL_0, CVP_ROW_1 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, REST_HEIGHT/3*2 ) ;
+		SVLook = TRUE ;
+		Border = TRUE ;
 	};
 	PushButton BTN_VIEWCERT
 	{
-	    HelpID = "xmlsecurity:PushButton:RID_XMLSECTP_CERTPATH:BTN_VIEWCERT";
-        Pos = MAP_APPFONT( CV_COL_1-(CV_COL_B-CV_COL_A), CVP_ROW_2 );
-        Size = MAP_APPFONT( CV_COL_B-CV_COL_A, RSC_CD_PUSHBUTTON_HEIGHT );
-        Text [ en-US ] = "View Certificate...";
+		HelpID = "xmlsecurity:PushButton:RID_XMLSECTP_CERTPATH:BTN_VIEWCERT" ;
+		Pos = MAP_APPFONT ( CV_COL_1-(CV_COL_B-CV_COL_A), CVP_ROW_2 ) ;
+		Size = MAP_APPFONT ( CV_COL_B-CV_COL_A, RSC_CD_PUSHBUTTON_HEIGHT ) ;
+		Text [ en-US ] = "View Certificate..." ;
 	};
 	FixedText FT_CERTSTATUS
 	{
-        Pos = MAP_APPFONT( CV_COL_0, CVP_ROW_3 );
-		Size = MAP_APPFONT( CV_CONT_WIDTH, RSC_CD_FIXEDTEXT_HEIGHT );
-		Text [ en-US ] = "Certification status";
+		Pos = MAP_APPFONT ( CV_COL_0, CVP_ROW_3 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, RSC_CD_FIXEDTEXT_HEIGHT ) ;
+		Text [ en-US ] = "Certification status" ;
 	};
 	MultiLineEdit ML_CERTSTATUS
 	{
-	    HelpID = "xmlsecurity:MultiLineEdit:RID_XMLSECTP_CERTPATH:ML_CERTSTATUS";
-        Pos = MAP_APPFONT( CV_COL_0, CVP_ROW_4 );
-        Size = MAP_APPFONT( CV_CONT_WIDTH, REST_HEIGHT/3 );
-		ReadOnly = TRUE;
-		Border = TRUE;
+		HelpID = "xmlsecurity:MultiLineEdit:RID_XMLSECTP_CERTPATH:ML_CERTSTATUS" ;
+		Pos = MAP_APPFONT ( CV_COL_0, CVP_ROW_4 ) ;
+		Size = MAP_APPFONT ( CV_CONT_WIDTH, REST_HEIGHT/3 ) ;
+		ReadOnly = TRUE ;
+		Border = TRUE ;
 	};
-    Image IMG_CERT_SMALL
-    {
-        ImageBitmap = Bitmap { File = "certificate_16.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
-    Image IMG_CERT_SMALL_HC
-    {
-        ImageBitmap = Bitmap { File = "certificate_16_h.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
-    Image IMG_CERT_NOTVALIDATED_SMALL
-    {
-        ImageBitmap = Bitmap { File = "notcertificate_16.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
-    Image IMG_CERT_NOTVALIDATED_SMALL_HC
-    {
-        ImageBitmap = Bitmap { File = "notcertificate_16_h.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
-    String STR_PATH_CERT_OK
-    {
-		Text [ en-US ] = "The certificate is OK.";
-    };
-    String STR_PATH_CERT_NOT_VALIDATED
-    {
-		Text [ en-US ] = "The certificate could not be validated.";
-    };
+	Image IMG_CERT_SMALL
+	{
+		ImageBitmap = Bitmap { File = "certificate_16.png"; } ;
+	};
+	Image IMG_CERT_SMALL_HC
+	{
+		ImageBitmap = Bitmap { File = "certificate_16_h.png"; } ;
+	};
+	Image IMG_CERT_NOTVALIDATED_SMALL
+	{
+		ImageBitmap = Bitmap { File = "notcertificate_16.png"; } ;
+	};
+	Image IMG_CERT_NOTVALIDATED_SMALL_HC
+	{
+		ImageBitmap = Bitmap { File = "notcertificate_16_h.png"; } ;
+	};
+	String STR_PATH_CERT_OK
+	{
+		Text [ en-US ] = "The certificate is OK." ;
+	};
+	String STR_PATH_CERT_NOT_VALIDATED
+	{
+		Text [ en-US ] = "The certificate could not be validated." ;
+	};
 };
+
+// ********************************************************************** EOF
diff --git a/main/xmlsecurity/source/dialogs/digitalsignaturesdialog.src b/main/xmlsecurity/source/dialogs/digitalsignaturesdialog.src
index f31f5cf..7555f13 100644
--- a/main/xmlsecurity/source/dialogs/digitalsignaturesdialog.src
+++ b/main/xmlsecurity/source/dialogs/digitalsignaturesdialog.src
@@ -1,5 +1,5 @@
 /**************************************************************
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -7,16 +7,16 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- * 
+ *
  *************************************************************/
 
 ﻿
@@ -27,191 +27,182 @@
 
 ModalDialog RID_XMLSECDLG_DIGSIG
 {
-    HelpId = HID_XMLSEC_DLG_DIGSIG;
-	Size = MAP_APPFONT( 234, 191 );
-	OutputSize = TRUE;
-	Closeable = TRUE;
-	Moveable = TRUE;
-	SVLook = TRUE;
+	HelpId = HID_XMLSEC_DLG_DIGSIG ;
+	Size = MAP_APPFONT ( 234, 191 ) ;
+	OutputSize = TRUE ;
+	Closeable = TRUE ;
+	Moveable = TRUE ;
+	SVLook = TRUE ;
 
-	Text [ en-US ] = "Digital Signatures";
+	Text [ en-US ] = "Digital Signatures" ;
 
 	FixedText FT_HINT_DOC
 	{
-        Pos = MAP_APPFONT( 6, 3 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-        Text [ en-US ] = "The following have signed the document content:";
+		Pos = MAP_APPFONT ( 6, 3 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+		Text [ en-US ] = "The following have signed the document content:" ;
 	};
 	FixedText FT_HINT_BASIC
 	{
-        Pos = MAP_APPFONT( 6, 3 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-        Text [ en-US ] = "The following have signed the document macro:";
+		Pos = MAP_APPFONT ( 6, 3 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+		Text [ en-US ] = "The following have signed the document macro:" ;
 	};
 	FixedText FT_HINT_PACK
 	{
-        Pos = MAP_APPFONT( 6, 3 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-        Text [ en-US ] = "The following have signed this package:";
+		Pos = MAP_APPFONT ( 6, 3 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+		Text [ en-US ] = "The following have signed this package:" ;
 	};
 	Control LB_SIGNATURES
 	{
-        HelpId = HID_XMLSEC_CTRL_SIGNATURESDLG;
-        Pos = MAP_APPFONT( 6, 14 );
-        Size = MAP_APPFONT( 222, 109 );
-		SVLook = TRUE;
-		Border = TRUE;
+		HelpId = HID_XMLSEC_CTRL_SIGNATURESDLG ;
+		Pos = MAP_APPFONT ( 6, 14 ) ;
+		Size = MAP_APPFONT ( 222, 109 ) ;
+		SVLook = TRUE ;
+		Border = TRUE ;
 	};
 	String STR_HEADERBAR
 	{
-        Text [ en-US ] = "\tSigned by\tDigital ID issued by\tDate";
+		Text [ en-US ] = "\tSigned by\tDigital ID issued by\tDate" ;
 	};
 	String STR_VALID_SIGNATURE
-    {
-        Text [ en-US ] = "Valid signature";
-    };
+	{
+		Text [ en-US ] = "Valid signature" ;
+	};
 	String STR_NO_INFO_TO_VERIFY
-    {
-        Text [ en-US ] = "Certificate could not be validated";
-    };
+	{
+		Text [ en-US ] = "Certificate could not be validated" ;
+	};
 	String STR_INVALID_SIGNATURE
-    {
-        Text [ en-US ] = "The signatures in this document are invalid";
-    };
-	
+	{
+		Text [ en-US ] = "The signatures in this document are invalid" ;
+	};
+
 	FixedImage IMG_STATE_VALID
 	{
-		Pos = MAP_APPFONT( 6, 127 );
-		Size = MAP_APPFONT( 33, 22 );
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 33, 22 ) ;
 		Fixed = Image
 		{
-			ImageBitmap = Bitmap { File = "signet_11x16.png"; };
-			MaskColor = STD_MASKCOLOR;
+			ImageBitmap = Bitmap { File = "signet_11x16.png"; } ;
 		};
 	};
 	FixedText FI_STATE_VALID
 	{
-        Pos = MAP_APPFONT( 6, 127 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-		Text [ en-US ] = "The signatures in this document are valid";
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+		Text [ en-US ] = "The signatures in this document are valid" ;
 	};
 	FixedText FI_STATE_OLDSIGNATURE
-    {
-        Pos = MAP_APPFONT( 6, 127 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-        Text [ en-US ] = "Not all parts of the document are signed";
-    };
-    FixedImage IMG_STATE_BROKEN
-    {
-        Pos = MAP_APPFONT( 6, 127 );
-        Size = MAP_APPFONT( 33, 22 );
-        Fixed = Image
-        {
-            ImageBitmap = Bitmap { File = "caution_11x16.png"; };
-            MaskColor = STD_MASKCOLOR;
-        };
-    };
-    FixedText FI_STATE_BROKEN
-    {
-        Pos = MAP_APPFONT( 6, 127 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-        Text [ en-US ] = "The signatures in this document are invalid";
-    };
-    FixedImage IMG_STATE_NOTVALIDATED
-    {
-        Pos = MAP_APPFONT( 6, 127 );
-        Size = MAP_APPFONT( 33, 22 );
-        Fixed = Image
-        {
-            ImageBitmap = Bitmap { File = "notcertificate_16.png"; };
-            MaskColor = STD_MASKCOLOR;
-        };
-    };
-    FixedText FI_STATE_NOTVALIDATED
-    {
-        Pos = MAP_APPFONT( 6, 127 );
-        Size = MAP_APPFONT( 222, 8 );
-        Hide = TRUE;
-    };
-    PushButton BTN_VIEWCERT
 	{
-        HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_VIEWCERT";
-        Pos = MAP_APPFONT( 6, 142 );
-        Size = MAP_APPFONT( 70, 14 );
-		Text [ en-US ] = "View Certificate...";
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+		Text [ en-US ] = "Not all parts of the document are signed" ;
+	};
+	FixedImage IMG_STATE_BROKEN
+	{
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 33, 22 ) ;
+		Fixed = Image
+		{
+			ImageBitmap = Bitmap { File = "caution_11x16.png"; } ;
+		};
+	};
+	FixedText FI_STATE_BROKEN
+	{
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+		Text [ en-US ] = "The signatures in this document are invalid" ;
+	};
+	FixedImage IMG_STATE_NOTVALIDATED
+	{
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 33, 22 ) ;
+		Fixed = Image
+		{
+			ImageBitmap = Bitmap { File = "notcertificate_16.png"; } ;
+		};
+	};
+	FixedText FI_STATE_NOTVALIDATED
+	{
+		Pos = MAP_APPFONT ( 6, 127 ) ;
+		Size = MAP_APPFONT ( 222, 8 ) ;
+		Hide = TRUE ;
+	};
+	PushButton BTN_VIEWCERT
+	{
+		HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_VIEWCERT" ;
+		Pos = MAP_APPFONT ( 6, 142 ) ;
+		Size = MAP_APPFONT ( 70, 14 ) ;
+		Text [ en-US ] = "View Certificate..." ;
 	};
 	PushButton BTN_ADDCERT
 	{
-	    HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_ADDCERT";
-        Pos = MAP_APPFONT( 82, 142 );
-        Size = MAP_APPFONT( 70, 14 );
-		Text [ en-US ] = "Sign Document...";
+		HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_ADDCERT" ;
+		Pos = MAP_APPFONT ( 82, 142 ) ;
+		Size = MAP_APPFONT ( 70, 14 ) ;
+		Text [ en-US ] = "Sign Document..." ;
 	};
 	PushButton BTN_REMOVECERT
 	{
-	    HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_REMOVECERT";
-        Pos = MAP_APPFONT( 158, 142 );
-        Size = MAP_APPFONT( 70, 14 );
-		Text [ en-US ] = "Remove";
+		HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_REMOVECERT" ;
+		Pos = MAP_APPFONT ( 158, 142 ) ;
+		Size = MAP_APPFONT ( 70, 14 ) ;
+		Text [ en-US ] = "Remove" ;
 	};
-    FixedLine FL_BOTTOM_SEP
+	FixedLine FL_BOTTOM_SEP
 	{
-        Pos = MAP_APPFONT( 0, 160 );
-        Size = MAP_APPFONT( 234, 8 );
+		Pos = MAP_APPFONT ( 0, 160 ) ;
+		Size = MAP_APPFONT ( 234, 8 ) ;
 	};
 	OKButton BTN_OK
 	{
 		DefButton = TRUE;
-        Pos = MAP_APPFONT( 178, 171 );
-		Size = MAP_APPFONT( 50, 14 );
-		Text [ en-US ] = "Close";
+		Pos = MAP_APPFONT ( 178, 171 ) ;
+		Size = MAP_APPFONT ( 50, 14 ) ;
+		Text [ en-US ] = "Close" ;
 	};
 	HelpButton BTN_HELP
 	{
-        Pos = MAP_APPFONT( 6, 171 );
-		Size = MAP_APPFONT( 50, 14 );
+		Pos = MAP_APPFONT ( 6, 171 ) ;
+		Size = MAP_APPFONT ( 50, 14 ) ;
 	};
-    Image IMG_STATE_VALID_HC
-    {
-        ImageBitmap = Bitmap { File = "signet_11x16_h.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
-    Image IMG_STATE_BROKEN_HC
-    {
-        ImageBitmap = Bitmap { File = "caution_11x16_h.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
-    Image IMG_STATE_NOTVALIDATED_HC
-    {
-        ImageBitmap = Bitmap { File = "notcertificate_16_h.png"; };
-        MaskColor = STD_MASKCOLOR;
-    };
+	Image IMG_STATE_VALID_HC
+	{
+		ImageBitmap = Bitmap { File = "signet_11x16_h.png"; } ;
+	};
+	Image IMG_STATE_BROKEN_HC
+	{
+		ImageBitmap = Bitmap { File = "caution_11x16_h.png"; } ;
+	};
+	Image IMG_STATE_NOTVALIDATED_HC
+	{
+		ImageBitmap = Bitmap { File = "notcertificate_16_h.png"; } ;
+	};
 };
 
 
 ErrorBox RID_XMLSECDLG_OLD_ODF_FORMAT
 {
-    Buttons = WB_OK ;
-    DefButton = WB_DEF_OK ;
-    Message [ en-US ] = "This document contains signatures in ODF 1.1 format. "
-		"Signing documents in %PRODUCTNAME %PRODUCTVERSION requires ODF 1.2 format version. "
-		"Thus no signatures can be added or removed to this document.\n\n"
-		"Save document in ODF 1.2 format and add all desired signatures again.";
+	Buttons = WB_OK ;
+	DefButton = WB_DEF_OK ;
+	Message [ en-US ] = "This document contains signatures in ODF 1.1 format. Signing documents in %PRODUCTNAME %PRODUCTVERSION requires ODF 1.2 format version. "
+		"Thus no signatures can be added or removed to this document.\n\nSave document in ODF 1.2 format and add all desired signatures again." ;
 };
 
 
 QueryBox MSG_XMLSECDLG_QUERY_REMOVEDOCSIGNBEFORESIGN
 {
-    Buttons = WB_YES_NO ;
-    DefButton = WB_DEF_NO ;
-    Message [ en-US ] = "Adding or removing a macro signature will remove all document signatures.\n"
-        "Do you really want to continue?";
+	Buttons = WB_YES_NO ;
+	DefButton = WB_DEF_NO ;
+	Message [ en-US ] = "Adding or removing a macro signature will remove all document signatures.\nDo you really want to continue?" ;
 };
 
-
+// ********************************************************************** EOF
