public string SerialNumber(bool detailed) { byte[] sn = (byte[])x509.SerialNumber.Clone(); Array.Reverse(sn); return(CertificateFormatter.Array2Word(sn)); }
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"; }
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(); }
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"; }
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(); }