Пример #1
0
        public void LoadCertificate(string filename)
        {
            cf = new CertificateFormatter(filename);

            genericFont   = detailsTextBox.Font;
            monospaceFont = new Font(FontFamily.GenericMonospace, 10);

            issuedToTextBox.Text = cf.Subject(false);
            toolTip.SetToolTip(issuedToTextBox, issuedToTextBox.Text);

            subjectAltNameLinkLabel.Text    = cf.SubjectAltName(false);
            subjectAltNameLinkLabel.Visible = (subjectAltNameLinkLabel.Text != String.Empty);

            issuedByTextBox.Text = cf.Issuer(false);
            toolTip.SetToolTip(issuedByTextBox, issuedByTextBox.Text);

            notBeforeLabel.Text = cf.Certificate.ValidFrom.ToString("yyyy-MM-dd");
            notAfterLabel.Text  = cf.Certificate.ValidUntil.ToString("yyyy-MM-dd");

            if (cf.Certificate.Version == 1)
            {
                // not in certificate so it's a property
                itemVersion           = new ListViewItem(CertificateFormatter.FieldNames.Version, 0);
                itemVersion.ForeColor = Color.Blue;
            }
            else
            {
                itemVersion = new ListViewItem(CertificateFormatter.FieldNames.Version, 2);
            }
            itemVersion.SubItems.Add(cf.Version(false));
            itemVersion.SubItems.Add(cf.Version(true));

            itemSerial = new ListViewItem(CertificateFormatter.FieldNames.SerialNumber, 1);
            itemSerial.SubItems.Add(cf.SerialNumber(false));
            itemSerial.SubItems.Add(cf.SerialNumber(true));
            itemSerial.Tag = monospaceFont;

            itemSignatureAlgorithm = new ListViewItem(CertificateFormatter.FieldNames.SignatureAlgorithm, 1);
            itemSignatureAlgorithm.SubItems.Add(cf.SignatureAlgorithm(false));
            itemSignatureAlgorithm.SubItems.Add(cf.SignatureAlgorithm(true));

            itemIssuer = new ListViewItem(CertificateFormatter.FieldNames.Issuer, 1);
            itemIssuer.SubItems.Add(cf.Issuer(false));
            itemIssuer.SubItems.Add(cf.Issuer(true));

            itemValidFrom = new ListViewItem(CertificateFormatter.FieldNames.ValidFrom, 1);
            itemValidFrom.SubItems.Add(cf.ValidFrom(false));
            itemValidFrom.SubItems.Add(cf.ValidFrom(true));

            itemValidUntil = new ListViewItem(CertificateFormatter.FieldNames.ValidUntil, 1);
            itemValidUntil.SubItems.Add(cf.ValidUntil(false));
            itemValidUntil.SubItems.Add(cf.ValidUntil(true));

            itemSubject = new ListViewItem(CertificateFormatter.FieldNames.Subject, 1);
            itemSubject.SubItems.Add(cf.Subject(false));
            itemSubject.SubItems.Add(cf.Subject(true));

            itemPublicKey = new ListViewItem(CertificateFormatter.FieldNames.PublicKey, 1);
            itemPublicKey.SubItems.Add(cf.PublicKey(false));
            itemPublicKey.SubItems.Add(cf.PublicKey(true));
            itemPublicKey.Tag = monospaceFont;

            itemExtensions = new ListViewItem [cf.Certificate.Extensions.Count];
            for (int i = 0; i < cf.Certificate.Extensions.Count; i++)
            {
                X509Extension xe       = cf.GetExtension(i);
                int           critical = (xe.Critical ? 4 : 3);
                string        name     = xe.Name;
                object        tag      = null;
                if (name == xe.Oid)
                {
                    tag = monospaceFont;
                }
                ListViewItem lvi = new ListViewItem(name, critical);
                lvi.Tag = tag;
                if (critical == 4)
                {
                    lvi.ForeColor = Color.Red;
                }
                string exts = xe.ToString();
                if (xe.Name == xe.Oid)
                {
                    lvi.SubItems.Add(cf.Extension(i, false));
                }
                else
                {
                    lvi.SubItems.Add(CertificateFormatter.OneLine(exts));
                }
                lvi.SubItems.Add(exts);
                itemExtensions [i] = lvi;
            }

            // properties (calculated)
            itemThumbprintAlgorithm = new ListViewItem(CertificateFormatter.PropertyNames.ThumbprintAlgorithm, 0);
            itemThumbprintAlgorithm.SubItems.Add(cf.ThumbprintAlgorithm);
            itemThumbprintAlgorithm.SubItems.Add(cf.ThumbprintAlgorithm);
            itemThumbprintAlgorithm.ForeColor = Color.Blue;

            itemThumbprint = new ListViewItem(CertificateFormatter.PropertyNames.Thumbprint, 0);
            string tb = CertificateFormatter.Array2Word(cf.Thumbprint);

            itemThumbprint.SubItems.Add(tb);
            itemThumbprint.SubItems.Add(tb);
            itemThumbprint.Tag       = monospaceFont;
            itemThumbprint.ForeColor = Color.Blue;

            showComboBox.SelectedIndex = 0;

            if (cf.Status != null)
            {
                badPictureBox.Visible       = true;
                keyUsageRichTextBox.Visible = false;
                certificateLabel.Text       = cf.Status;
                certificateLabel.ForeColor  = Color.Red;
                certStatusTextBox.Text      = cf.Status;
                certStatusTextBox.ForeColor = Color.Red;
            }
            else
            {
                badPictureBox.Visible = false;
            }
            goodPictureBox.Visible = !badPictureBox.Visible;

            keyUsageRichTextBox.SelectionBullet = true;
            keyUsageRichTextBox.Text            = "No restrictions";
        }
Пример #2
0
		public GtkCertificateViewer (string filename) 
		{
			Application.Init();

			Glade.XML gxml = new Glade.XML (null, "certview.glade", "CertificateViewer", null);
			gxml.Autoconnect (this);

			cf = new CertificateFormatter (filename);

			// init UI
			brokenSealImage.Pixbuf = new Pixbuf (null, "wax-seal-broken.png");
			sealImage.Pixbuf = new Pixbuf (null, "wax-seal.png");

			Tooltips tt = new Tooltips ();
			issuedToEntry.Text = cf.Issuer (false);
			tt.SetTip (issuedToEntry, issuedToEntry.Text, issuedToEntry.Text);
			issuedByEntry.Text = cf.Subject (false);
			tt.SetTip (issuedByEntry, issuedByEntry.Text, issuedByEntry.Text);

			subjectAltNameLabel.Text = cf.SubjectAltName (false);
			subjectAltNameLabel.Visible = (subjectAltNameLabel.Text != null);

			notBeforeEntry.Text = cf.Certificate.ValidFrom.ToString ("yyyy-MM-dd");
			notAfterEntry.Text = cf.Certificate.ValidUntil.ToString ("yyyy-MM-dd");

			TextBuffer tb = new TextBuffer (null);
			if (cf.Status != null)
				tb.SetText (cf.Status);
			certStatusTextview.Buffer = tb;
			if (cf.Status != null) {
				certInfoTextview.Buffer = tb;
				certInfoTextview.ModifyText (StateType.Normal, new Gdk.Color (0xff, 0x00, 0x00));
			}

			sealImage.Visible = (cf.Status == null);
			brokenSealImage.Visible = !sealImage.Visible;

			Type[] storeType = new Type [4] { typeof (string), typeof (string), typeof (string), typeof (int) };
			allStore = new ListStore (storeType);
			v1Store = new ListStore (storeType);
			extensionsStore = new ListStore (storeType);
			criticalStore = new ListStore (storeType);
			propertiesStore = new ListStore (storeType);
			emptyStore = new ListStore (storeType);

			AddToStores (CertificateFormatter.FieldNames.Version, cf.Version (false), cf.Version (true), 1);
			AddToStores (CertificateFormatter.FieldNames.SerialNumber, cf.SerialNumber (false), cf.SerialNumber (true), 0);
			AddToStores (CertificateFormatter.FieldNames.SignatureAlgorithm, cf.SignatureAlgorithm (false), cf.SignatureAlgorithm (true), 0);
			AddToStores (CertificateFormatter.FieldNames.Issuer, cf.Issuer (false), cf.Issuer (true), 0);
			AddToStores (CertificateFormatter.FieldNames.ValidFrom, cf.ValidFrom (false), cf.ValidFrom (true), 0);
			AddToStores (CertificateFormatter.FieldNames.ValidUntil, cf.ValidUntil (false), cf.ValidUntil (true), 0);
			AddToStores (CertificateFormatter.FieldNames.Subject, cf.Subject (false), cf.Subject (true), 0);
			AddToStores (CertificateFormatter.FieldNames.PublicKey, cf.PublicKey (false), cf.PublicKey (true), 0);
			for (int i=0; i < cf.Certificate.Extensions.Count; i++) {
				X509Extension xe = cf.GetExtension (i);
				string name = xe.Name;
				int icon = 2;
				if (xe.Critical)
					icon = 3;
				string exts = xe.ToString ();
				string details;
				if (xe.Name == xe.Oid) {
					exts = cf.Extension (i, false);
					details = cf.Extension (i, true);
				}
				else {
					details = xe.ToString ();
					exts = CertificateFormatter.OneLine (details);
				}

				AddToStores (name, exts, details, icon);
			}
			AddToStores (CertificateFormatter.PropertyNames.ThumbprintAlgorithm, cf.ThumbprintAlgorithm, cf.ThumbprintAlgorithm, 4);
			string ftb = CertificateFormatter.Array2Word (cf.Thumbprint);
			AddToStores (CertificateFormatter.PropertyNames.Thumbprint, ftb, ftb, 4);

			// select appropriate store to show
			OnShowComboChanged (null, null);

			TreeViewColumn fieldColumn = new TreeViewColumn ();
			CellRendererPixbuf pr = new CellRendererPixbuf ();
			CellRenderer fieldRenderer = new CellRendererText ();
			fieldColumn.PackStart (pr, false);
			fieldColumn.SetCellDataFunc (pr, CellDataFunc, IntPtr.Zero, null);
			fieldColumn.Title = "Field";
			fieldColumn.PackStart (fieldRenderer, false);
			fieldColumn.AddAttribute (fieldRenderer, "text", 0);
			detailsTreeview.AppendColumn (fieldColumn);

			TreeViewColumn valueColumn = new TreeViewColumn ();
			CellRenderer valueRenderer = new CellRendererText ();
			valueColumn.Title = "Value";
			valueColumn.PackStart (valueRenderer, true);
			valueColumn.AddAttribute (valueRenderer, "text", 1);
			detailsTreeview.AppendColumn (valueColumn);

//			detailsTreeview.ModifyText (StateType.Selected, new Gdk.Color (0x33, 0xff, 0x33));

			Application.Run();
		}
Пример #3
0
		public void LoadCertificate (string filename) 
		{
			cf = new CertificateFormatter (filename);

			genericFont = detailsTextBox.Font;
			monospaceFont = new Font (FontFamily.GenericMonospace, 10);

			issuedToTextBox.Text = cf.Subject (false);
			toolTip.SetToolTip (issuedToTextBox, issuedToTextBox.Text);

			subjectAltNameLinkLabel.Text = cf.SubjectAltName (false);
			subjectAltNameLinkLabel.Visible = (subjectAltNameLinkLabel.Text != String.Empty);

			issuedByTextBox.Text = cf.Issuer (false);
			toolTip.SetToolTip (issuedByTextBox, issuedByTextBox.Text);

			notBeforeLabel.Text = cf.Certificate.ValidFrom.ToString ("yyyy-MM-dd");
			notAfterLabel.Text = cf.Certificate.ValidUntil.ToString ("yyyy-MM-dd");

			if (cf.Certificate.Version == 1) {
				// not in certificate so it's a property
				itemVersion = new ListViewItem (CertificateFormatter.FieldNames.Version, 0);
				itemVersion.ForeColor = Color.Blue;
			}
			else
				itemVersion = new ListViewItem (CertificateFormatter.FieldNames.Version, 2);
			itemVersion.SubItems.Add (cf.Version (false));
			itemVersion.SubItems.Add (cf.Version (true));

			itemSerial = new ListViewItem (CertificateFormatter.FieldNames.SerialNumber, 1);
			itemSerial.SubItems.Add (cf.SerialNumber (false));
			itemSerial.SubItems.Add (cf.SerialNumber (true));
			itemSerial.Tag = monospaceFont;

			itemSignatureAlgorithm = new ListViewItem (CertificateFormatter.FieldNames.SignatureAlgorithm, 1);
			itemSignatureAlgorithm.SubItems.Add (cf.SignatureAlgorithm (false));
			itemSignatureAlgorithm.SubItems.Add (cf.SignatureAlgorithm (true));

			itemIssuer = new ListViewItem (CertificateFormatter.FieldNames.Issuer, 1);
			itemIssuer.SubItems.Add (cf.Issuer (false));
			itemIssuer.SubItems.Add (cf.Issuer (true));

			itemValidFrom = new ListViewItem (CertificateFormatter.FieldNames.ValidFrom, 1);
			itemValidFrom.SubItems.Add (cf.ValidFrom (false));
			itemValidFrom.SubItems.Add (cf.ValidFrom (true));

			itemValidUntil = new ListViewItem (CertificateFormatter.FieldNames.ValidUntil,1);
			itemValidUntil.SubItems.Add (cf.ValidUntil (false));
			itemValidUntil.SubItems.Add (cf.ValidUntil (true));

			itemSubject = new ListViewItem (CertificateFormatter.FieldNames.Subject, 1);
			itemSubject.SubItems.Add (cf.Subject (false));
			itemSubject.SubItems.Add (cf.Subject (true));

			itemPublicKey = new ListViewItem (CertificateFormatter.FieldNames.PublicKey, 1);
			itemPublicKey.SubItems.Add (cf.PublicKey (false));
			itemPublicKey.SubItems.Add (cf.PublicKey (true));
			itemPublicKey.Tag = monospaceFont;

			itemExtensions = new ListViewItem [cf.Certificate.Extensions.Count];
			for (int i=0; i < cf.Certificate.Extensions.Count; i++) {
				X509Extension xe = cf.GetExtension (i);
				int critical = (xe.Critical ? 4 : 3);
				string name = xe.Name;
				object tag = null;
				if (name == xe.Oid)
					tag = monospaceFont;
				ListViewItem lvi = new ListViewItem (name, critical);
				lvi.Tag = tag;
				if (critical == 4)
					lvi.ForeColor = Color.Red;
				string exts = xe.ToString ();
				if (xe.Name == xe.Oid)
					lvi.SubItems.Add (cf.Extension (i, false));
				else 
					lvi.SubItems.Add (CertificateFormatter.OneLine (exts));
				lvi.SubItems.Add (exts);
				itemExtensions [i] = lvi;
			}

			// properties (calculated)
			itemThumbprintAlgorithm = new ListViewItem (CertificateFormatter.PropertyNames.ThumbprintAlgorithm, 0);
			itemThumbprintAlgorithm.SubItems.Add (cf.ThumbprintAlgorithm);
			itemThumbprintAlgorithm.SubItems.Add (cf.ThumbprintAlgorithm);
			itemThumbprintAlgorithm.ForeColor = Color.Blue;

			itemThumbprint = new ListViewItem (CertificateFormatter.PropertyNames.Thumbprint, 0);
			string tb = CertificateFormatter.Array2Word (cf.Thumbprint);
			itemThumbprint.SubItems.Add (tb);
			itemThumbprint.SubItems.Add (tb);
			itemThumbprint.Tag = monospaceFont;
			itemThumbprint.ForeColor = Color.Blue;

			showComboBox.SelectedIndex = 0;

			if (cf.Status != null) {
				badPictureBox.Visible = true;
				keyUsageRichTextBox.Visible = false;
				certificateLabel.Text = cf.Status;
				certificateLabel.ForeColor = Color.Red;
				certStatusTextBox.Text = cf.Status;
				certStatusTextBox.ForeColor = Color.Red;
			}
			else
				badPictureBox.Visible = false;
			goodPictureBox.Visible = !badPictureBox.Visible;

			keyUsageRichTextBox.SelectionBullet = true;
			keyUsageRichTextBox.Text = "No restrictions";
		}
Пример #4
0
        public GtkCertificateViewer(string filename)
        {
            Application.Init();

            Glade.XML gxml = new Glade.XML(null, "certview.glade", "CertificateViewer", null);
            gxml.Autoconnect(this);

            cf = new CertificateFormatter(filename);

            // init UI
            brokenSealImage.Pixbuf = new Pixbuf(null, "wax-seal-broken.png");
            sealImage.Pixbuf       = new Pixbuf(null, "wax-seal.png");

            Tooltips tt = new Tooltips();

            issuedToEntry.Text = cf.Issuer(false);
            tt.SetTip(issuedToEntry, issuedToEntry.Text, issuedToEntry.Text);
            issuedByEntry.Text = cf.Subject(false);
            tt.SetTip(issuedByEntry, issuedByEntry.Text, issuedByEntry.Text);

            subjectAltNameLabel.Text    = cf.SubjectAltName(false);
            subjectAltNameLabel.Visible = (subjectAltNameLabel.Text != null);

            notBeforeEntry.Text = cf.Certificate.ValidFrom.ToString("yyyy-MM-dd");
            notAfterEntry.Text  = cf.Certificate.ValidUntil.ToString("yyyy-MM-dd");

            TextBuffer tb = new TextBuffer(null);

            if (cf.Status != null)
            {
                tb.SetText(cf.Status);
            }
            certStatusTextview.Buffer = tb;
            if (cf.Status != null)
            {
                certInfoTextview.Buffer = tb;
                certInfoTextview.ModifyText(StateType.Normal, new Gdk.Color(0xff, 0x00, 0x00));
            }

            sealImage.Visible       = (cf.Status == null);
            brokenSealImage.Visible = !sealImage.Visible;

            Type[] storeType = new Type [4] {
                typeof(string), typeof(string), typeof(string), typeof(int)
            };
            allStore        = new ListStore(storeType);
            v1Store         = new ListStore(storeType);
            extensionsStore = new ListStore(storeType);
            criticalStore   = new ListStore(storeType);
            propertiesStore = new ListStore(storeType);
            emptyStore      = new ListStore(storeType);

            AddToStores(CertificateFormatter.FieldNames.Version, cf.Version(false), cf.Version(true), 1);
            AddToStores(CertificateFormatter.FieldNames.SerialNumber, cf.SerialNumber(false), cf.SerialNumber(true), 0);
            AddToStores(CertificateFormatter.FieldNames.SignatureAlgorithm, cf.SignatureAlgorithm(false), cf.SignatureAlgorithm(true), 0);
            AddToStores(CertificateFormatter.FieldNames.Issuer, cf.Issuer(false), cf.Issuer(true), 0);
            AddToStores(CertificateFormatter.FieldNames.ValidFrom, cf.ValidFrom(false), cf.ValidFrom(true), 0);
            AddToStores(CertificateFormatter.FieldNames.ValidUntil, cf.ValidUntil(false), cf.ValidUntil(true), 0);
            AddToStores(CertificateFormatter.FieldNames.Subject, cf.Subject(false), cf.Subject(true), 0);
            AddToStores(CertificateFormatter.FieldNames.PublicKey, cf.PublicKey(false), cf.PublicKey(true), 0);
            for (int i = 0; i < cf.Certificate.Extensions.Count; i++)
            {
                X509Extension xe   = cf.GetExtension(i);
                string        name = xe.Name;
                int           icon = 2;
                if (xe.Critical)
                {
                    icon = 3;
                }
                string exts = xe.ToString();
                string details;
                if (xe.Name == xe.Oid)
                {
                    exts    = cf.Extension(i, false);
                    details = cf.Extension(i, true);
                }
                else
                {
                    details = xe.ToString();
                    exts    = CertificateFormatter.OneLine(details);
                }

                AddToStores(name, exts, details, icon);
            }
            AddToStores(CertificateFormatter.PropertyNames.ThumbprintAlgorithm, cf.ThumbprintAlgorithm, cf.ThumbprintAlgorithm, 4);
            string ftb = CertificateFormatter.Array2Word(cf.Thumbprint);

            AddToStores(CertificateFormatter.PropertyNames.Thumbprint, ftb, ftb, 4);

            // select appropriate store to show
            OnShowComboChanged(null, null);

            TreeViewColumn     fieldColumn   = new TreeViewColumn();
            CellRendererPixbuf pr            = new CellRendererPixbuf();
            CellRenderer       fieldRenderer = new CellRendererText();

            fieldColumn.PackStart(pr, false);
            fieldColumn.SetCellDataFunc(pr, CellDataFunc, IntPtr.Zero, null);
            fieldColumn.Title = "Field";
            fieldColumn.PackStart(fieldRenderer, false);
            fieldColumn.AddAttribute(fieldRenderer, "text", 0);
            detailsTreeview.AppendColumn(fieldColumn);

            TreeViewColumn valueColumn   = new TreeViewColumn();
            CellRenderer   valueRenderer = new CellRendererText();

            valueColumn.Title = "Value";
            valueColumn.PackStart(valueRenderer, true);
            valueColumn.AddAttribute(valueRenderer, "text", 1);
            detailsTreeview.AppendColumn(valueColumn);

//			detailsTreeview.ModifyText (StateType.Selected, new Gdk.Color (0x33, 0xff, 0x33));

            Application.Run();
        }