2004-01-07  Not Zed  <NotZed@Ximian.com>

	* gui/e-cert-selector.c (ecs_find_current): check certlist !=
	NULL, CERT_LIST_EMPTY dereferences it.  Bug #52457.

2004-01-05  Chris Toshok  <toshok@ximian.com>

	* lib/e-cert-db.c (e_cert_db_login_to_slot): oops, remove
	hardcoded test passwd :)

	* gui/component.c (smime_pk11_passwd): new function, implement the
	password dialog for PK11 slot authentication.
	(smime_component_init): new function, initialize any gui related
	signals that the backend exposes.

	* gui/certificate-manager.c (import_your): use
	e_cert_db_import_pkcs12_file.
	(delete_your): new function, implement.
	(view_your): same.
	(backup_your): new function, stub out.
	(backup_all_your): same.
	(create_yourcerts_treemodel): new function.
	(initialize_yourcerts_ui): do all the sorting foo, and hook up all
	the signals.
	(ainitialize_contactcerts_ui): same.
	(initialize_authoritycerts_ui): same.
	(view_contact): treemodel -> streemodel.
	(view_ca): same.
	(delete_contact): same, and convert from the sort iter to the
	child iter before we remove.
	(delete_ca): same.
	(import_contact): call gtk_tree_view_expand_all.
	(import_ca): same.
	(add_user_cert): append to the child model, not the sort model.
	(add_contact_cert): same.
	(add_ca_cert): same.
	(unload_certs): implement the E_CERT_USER case, and fix the
	USER/CA stuff to use the sorted treemodels.
	(load_certs): remove spew.
	(populate_ui): expand all the tree views.

	* lib/.cvsignore: ignore the generated marshalling files.
	
	* lib/Makefile.am: add the marshalling foo.

	* lib/smime-marshal.list (BOOL): new file.

	* lib/e-cert-db.c (pk11_password): new function, emit the
	pk11_passwd signal.
	(initialize_nss): new function, split out all the nss init code
	here, and add all the PKCS12 cipers.
	(install_loadable_roots): new function, split this code out from
	the class_init.
	(e_cert_db_class_init): call initialize_nss() and
	install_loadable_roots().  also register our pk11_passwd signal.
	(e_cert_db_import_pkcs12_file): implement.
	(e_cert_db_login_to_slot): new function, implement.

	* lib/e-cert-db.h (struct _ECertDBClass): add pk11_passwd signal,
	and add prototype for e_cert_db_login_to_slot.

	* lib/e-pkcs12.c (input_to_decoder): remove spew.
	(prompt_for_password): fix this.
	(import_from_file_helper): fix fix fix, and remove spew.
	(write_export_file): nuke, we don't need this.
	
2004-01-04  Chris Toshok  <toshok@ximian.com>

	* gui/certificate-viewer.c (fill_in_general): use <tt> markup
	around the fingerprints, and italicize the Not part of certificate
	text.
	(fill_in_details): create a monospace text tag to be used in the
	field value textbuffer.
	(fields_selection_changed): use the text tag when inserting text.

2003-12-10  Not Zed  <NotZed@Ximian.com>

	* gui/e-cert-selector.c (e_cert_selector_new): if we get no
	matching certs, show empty menu rather than crashing.  #51922.

2003-12-05  JP Rosevear  <jpr@ximian.com>

	* lib/e-cert.c: fix for C89

2003-12-04  Chris Toshok  <toshok@ximian.com>

	* gui/certificate-viewer.c (certificate_viewer_show): set the
	window title based on e_cert_get_window_title.

	* lib/e-cert.c (e_cert_get_window_title): new function, for use
	with the certificate viewer.
	(create_asn1_struct): call e_cert_get_window_title.

2003-12-04  Chris Toshok  <toshok@ximian.com>

	* lib/e-cert.h: add prototype for e_cert_get_asn1_struct.
	
	* lib/e-cert.c (e_cert_dispose): unref the asn1 object.
	(get_int_value): copy and massage from mozilla source.
	(process_version): same.
	(process_serial_number_der): same.
	(get_default_oid_format): same.
	(get_oid_text): same.
	(process_raw_bytes): same.
	(process_sec_algorithm_id): same.
	(process_subject_public_key_info): same.
	(process_ns_cert_type_extensions): same.
	(process_key_usage_extensions): same.
	(process_extension_data): same.
	(process_single_extension): same.
	(process_extensions): same.
	(process_name): same.
	(create_tbs_certificate_asn1_struct): same.
	(create_asn1_struct): same.
	(e_cert_get_asn1_struct): new function.

	* lib/e-asn1-object.c (e_asn1_object_dispose): free the display
	name, value, and children.
	(e_asn1_object_init): assume it's a valid container unless we hear
	otherwise.
	(e_asn1_object_new_from_cert): nuke.
	(e_asn1_object_set_valid_container): implement.
	(e_asn1_object_append_child): same.
	(e_asn1_object_set_display_name): same.
	(e_asn1_object_set_display_value): same.

	* lib/e-asn1-object.h: add prototypes for
	e_asn1_object_set_valid_container, e_asn1_object_set_display_name,
	e_asn1_object_set_display_value, and e_asn1_object_append_child.

	* gui/certificate-viewer.c (populate_fields_tree): populate the
	tree from the asn structure.
	(hierarchy_selection_changed): blow away the old fields_tree
	content and populate it again.
	(fields_selection_changed): implement, set the text view's
	contents to the asn1 object's display_value.
	(fill_in_details): expand all nodes in the hierarchy tree.

2003-12-03  Chris Toshok  <toshok@ximian.com>

	* lib/Makefile.am (libessmime_la_SOURCES): add e-asn1-object.[ch]

	* gui/smime-ui.glade: rename the ca trust dialog, and give it a
	proper id.

	* gui/certificate-manager.c (yourcerts_selection_changed): just
	use @selection.
	(contactcerts_selection_changed): same.
	(authoritycerts_selection_changed): same.

	* gui/certificate-viewer.c (free_data): free the cert chain.
	(fill_in_general): move all the general tab stuff here.
	(hierarchy_selection_changed): new function.  not finished.
	(fields_selection_changed): new function, unimplemented.
	(fill_in_details): new function, fill in the heirarchy and hook up
	signals and stuff.
	(certificate_viewer_show): call fill_in_general/fill_in_details.

	* lib/e-cert.c (e_cert_get_chain): new function.

	* lib/e-cert.h: add prototype for e_cert_get_chain.

2003-12-03  Chris Toshok  <toshok@ximian.com>

	* lib/e-cert-db.c (e_cert_db_class_init): grovel around at startup
	time for mozilla's pkcs11 module so we can get the same default
	set of root certs.

2003-11-30  Larry Ewing  <lewing@ximian.com>

	* lib/e-pkcs12.c (nickname_collision): make sure declarations
	precede logic for older compilers.

	* gui/Makefile.am (INCLUDES): don't define GTK_DISABLE_DEPRECATED
	it breakes on gtk-2.3 with gtk_option_menu_get_history.

2003-11-26  Chris Toshok  <toshok@ximian.com>

	* gui/certificate-viewer.[ch]: mostly implement a viewer for
	certificates.
	
	* gui/smime-ui.glade: fingerprints-sh1 -> fingerprints-sha1.

	* gui/certificate-manager.c (import_your): new function, use
	e-pkcs12 to implement it.
	(initialize_yourcerts_ui): hook up the import button.
	(view_contact): new function, bring up the certificate viewer.
	(initialize_contactcerts_ui): hook up the view button.
	(view_ca): new function, bring up the certificate viewer.
	(initialize_authoritycerts_ui): hook up the view button.

	* gui/Makefile.am (libevolution_smime_la_SOURCES): add
	certificate-viewer.[ch]

	* lib/e-cert.c (e_cert_dispose): free all the new cached foo.
	(e_cert_populate): populate all the new cached foo.
	(e_cert_get_issuer_cn): new function.
	(e_cert_get_issuer_org): same.
	(e_cert_get_issuer_org_unit): same.
	(e_cert_get_issued_on_time): same.
	(e_cert_get_issued_on): same.
	(e_cert_get_expires_on_time): same.
	(e_cert_get_expires_on): same.
	(e_cert_get_serial_number): same.
	(e_cert_get_sha1_fingerprint): same.
	(e_cert_get_md5_fingerprint): same.

	* lib/e-cert.h: add prototypes for lots more accessors.
	
	* lib/e-cert-db.c (e_cert_db_find_cert_by_key): fix typo.
	(e_cert_db_find_cert_by_email_address): call
	CERT_DestroyCertificate to free the cert.
	(default_nickname): new function.
	(e_cert_db_import_user_cert): implement.
	(e_cert_db_import_server_cert): add blurb.

	* lib/e-pkcs12.[ch]: new files.

	* lib/Makefile.am (libessmime_la_SOURCES): add e-pkcs12.[ch]

2003-11-12  Not Zed  <NotZed@Ximian.com>

	* gui/smime-ui.glade: added cert_selector widget to be placed
	inside a dialog.

	* gui/e-cert-selector.[ch]: new class to allow user to select a
	certificate for signing or encrypting.

2003-11-12  Chris Toshok  <toshok@ximian.com>

	* lib/e-cert.c (e_cert_get_cert_type): implement using the
	e-cert-trust foo.
	(e_cert_get_email): implement.

	* lib/e-cert.h: add UNKNOWN cert type.

	* gui/smime-ui.glade: fix capitalization of "Import" on the
	contact certificate page.

	* gui/certificate-manager.c (import_contact): new function.
	implement email cert importing.
	(delete_contact): new function.
	(unload_certs): implement for E_CERT_CONTACT.
	(certificate_manager_config_control_new): get the contact cert
	action buttons from libglade.

	* lib/e-cert-db.c (handle_ca_cert_download): mostly implement the
	trust settings correctly.  this still needs work pending the CA
	trust dialog's completion.
	(e_cert_db_delete_cert): fix the ifdef'ed code.
	(e_cert_db_import_user_cert): remove the ifdef'ed body of this,
	since it was copied from the CA code.

	* lib/Makefile.am (libessmime_la_SOURCES): add e-cert-trust.[ch]

	* lib/e-cert-trust.[ch]: new files, basically c&p nsNSSCertTrust
	from mozilla's PSM.

2003-11-11  Chris Toshok  <toshok@ximian.com>

	* tests/import-cert.c (main): don't init NSS here.  it's done in
	e_cert_db_peek.

	* lib/Makefile.am (libessmime_la_SOURCES): add e-cert-db.[ch]

	* gui/smime-ui.glade: set the initial sensitivity of the buttons
	here, and add the beginnings of the CA import dialog (where you
	assign trust levels to it.)

	* gui/certificate-manager.c (handle_selection_changed):
	sensitize/desensitize all the various buttons correctly when the
	GtkTreeView's selection changes.
	(yourcerts_selection_changed): new, selection change handler for
	the Your Certs tab.
	(initialize_yourcerts_ui): hook up the tree selection, and add a
	model column for the ECert.
	(contactcerts_selection_changed): new, selection change handler
	for the Contact Certs tab.
	(initialize_contactcerts_ui): hook up the tree selection, and add
	a model column for the ECert.
	(import_ca): new function.
	(delete_ca): new function.
	(authoritycerts_selection_changed): new, selection change handler
	for the Authority Certs tab.
	(create_authoritycerts_treemodel): new function for creating the
	authority cert tree model.  the other tabs will eventually use a
	separate function for this too, as unload_certs gets fleshed out.
	(initialize_authoritycerts_ui): hook up the tree selection, and
	add import/delete buttons.
	(destroy_key): dtor for the keys in our hashes.
	(destroy_value): dtor for the values in our hashes.
	(unload_certs): new function.  basically destroy/recreate the
	model and hash for the particular cert type/tab.
	(load_certs): use e_cert_get_cert_type.
	(populate_ui): use unload_certs as well as load_certs.
	(certificate_manager_config_control_new): call e_cert_db_peek
	,which will initialize all of NSS.  hook up all the widgets from
	libglade.

	* lib/e-cert.h: add prototypes for all the new methods, and add
	the ECertType enum.

	* lib/e-cert.c (e_cert_dispose): handle deletion from the DB here.
	(e_cert_new_from_der): new function.
	(e_cert_get_internal_cert): new function.
	(e_cert_get_raw_der): new function.
	(e_cert_get_issuer_name): new
	(e_cert_get_subject_name): new
	(e_cert_mark_for_deletion): new
	(e_cert_get_cert_type): new.
	(e_cert_is_ca_cert): nuke.

	* lib/e-cert-db.[ch]: new, partly implemented, derived from
	mozilla's nsNSSCertificateDB code.

2003-10-30  Chris Toshok  <toshok@ximian.com>

	* gui/certificate-manager.h: add boilerplate.

	* gui/certificate-manager.c
	(certificate_manager_config_control_new): return NULL if the
	NSS_InitReadWrite fails - we should probably give better status
	though, or return a GtkLabel with an error message....

	* gui/Makefile.am (INCLUDES): use CERT_UI_CFLAGS.
	(TEST_LIBS): use CERT_UI_LIBS.

2003-10-30  Chris Toshok  <toshok@ximian.com>

	* tests/Makefile.am (INCLUDES): use CERT_UI_CFLAGS.
	(TEST_LIBS): use CERT_UI_LIBS.

2003-10-28  Chris Toshok  <toshok@ximian.com>

	* gui/Makefile.am (libevolution_smime_la_SOURCES): add
	certificate-manager.h

2003-10-23  Chris Toshok  <toshok@ximian.com>

	* lib/e-cert.[ch], lib/Makefile.am, gui/certificate-manager.[ch],
	gui/Makefile.am, gui/smime-ui.glade, Makefile.am: initial addition
	of s/mime foo.

