NetSurf
|
SSL Certificate verification UI implementation. More...
#include <assert.h>
#include <stdlib.h>
#include "content/fetch.h"
#include "content/urldb.h"
#include "content/hlcache.h"
#include "desktop/sslcert_viewer.h"
#include "desktop/treeview.h"
#include "utils/messages.h"
#include "utils/log.h"
#include "utils/utils.h"
Go to the source code of this file.
Data Structures | |
struct | ssl_cert_info |
ssl certificate information for certificate error message More... | |
struct | sslcert_session_data |
ssl certificate verification context. More... | |
struct | sslcert_entry |
ssl certificate tree entry More... | |
Typedefs | |
typedef nserror(* | response_cb) (bool proceed, void *pw) |
Enumerations | |
enum | sslcert_viewer_field { SSLCERT_V_SUBJECT, SSLCERT_V_SERIAL, SSLCERT_V_TYPE, SSLCERT_V_VALID_UNTIL, SSLCERT_V_VALID_FROM, SSLCERT_V_VERSION, SSLCERT_V_ISSUER, SSLCERT_V_CERTIFICATES, SSLCERT_V_N_FIELDS } |
ssl certificate viewer data fields More... | |
Functions | |
static void | sslcert_viewer_free_treeview_field_data (struct sslcert_entry *e) |
Free a ssl certificate viewer entry's treeview field data. More... | |
static nserror | sslcert_viewer_field_builder (enum sslcert_viewer_field field, struct treeview_field_data *data, const char *value, struct sslcert_session_data *ssl_d) |
Build a sslcert viewer treeview field from given text. More... | |
static nserror | sslcert_viewer_set_treeview_field_data (struct sslcert_entry *e, const struct ssl_cert_info *cert, struct sslcert_session_data *ssl_d) |
Set a sslcert viewer entry's data from the certificate. More... | |
static nserror | sslcert_viewer_create_node (struct sslcert_session_data *ssl_d, int n) |
Create a treeview node for a certificate. More... | |
static nserror | sslcert_init_entry_fields (struct sslcert_session_data *ssl_d) |
Initialise the treeview entry fields. More... | |
static void | sslcert_viewer_delete_entry (struct sslcert_entry *e) |
Delete ssl certificate viewer entries. More... | |
static nserror | sslcert_viewer_tree_node_folder_cb (struct treeview_node_msg msg, void *data) |
folder operation callback More... | |
static nserror | sslcert_viewer_tree_node_entry_cb (struct treeview_node_msg msg, void *data) |
node entry callback More... | |
nserror | sslcert_viewer_init (struct core_window_callback_table *cw_t, void *core_window_handle, struct sslcert_session_data *ssl_d) |
Initialise a ssl certificate viewer from session data. More... | |
static void | sslcert_cleanup_session (struct sslcert_session_data *ssl_d) |
Free SSL certificate session data. More... | |
nserror | sslcert_viewer_fini (struct sslcert_session_data *ssl_d) |
Finalise a ssl certificate viewer. More... | |
static nserror | der_to_certinfo (uint8_t *der, size_t der_length, struct ssl_cert_info *info) |
static nserror | convert_chain_to_cert_info (const struct cert_chain *chain, struct ssl_cert_info **cert_info_out) |
nserror | sslcert_viewer_create_session_data (struct nsurl *url, nserror(*cb)(bool proceed, void *pw), void *cbpw, const struct cert_chain *chain, struct sslcert_session_data **ssl_d) |
Create ssl certificate viewer session data. More... | |
nserror | sslcert_viewer_reject (struct sslcert_session_data *ssl_d) |
Reject a certificate chain. More... | |
nserror | sslcert_viewer_accept (struct sslcert_session_data *ssl_d) |
Accept a certificate chain. More... | |
void | sslcert_viewer_redraw (struct sslcert_session_data *ssl_d, int x, int y, struct rect *clip, const struct redraw_context *ctx) |
Redraw the ssl certificate viewer. More... | |
void | sslcert_viewer_mouse_action (struct sslcert_session_data *ssl_d, browser_mouse_state mouse, int x, int y) |
Handles all kinds of mouse action. More... | |
bool | sslcert_viewer_keypress (struct sslcert_session_data *ssl_d, uint32_t key) |
Key press handling. More... | |
Variables | |
struct treeview_callback_table | sslv_tree_cb_t |
ssl certificate treeview callbacks More... | |
SSL Certificate verification UI implementation.
Definition in file sslcert_viewer.c.
typedef nserror(* response_cb) (bool proceed, void *pw) |
Definition at line 52 of file sslcert_viewer.c.
enum sslcert_viewer_field |
ssl certificate viewer data fields
Enumerator | |
---|---|
SSLCERT_V_SUBJECT | |
SSLCERT_V_SERIAL | |
SSLCERT_V_TYPE | |
SSLCERT_V_VALID_UNTIL | |
SSLCERT_V_VALID_FROM | |
SSLCERT_V_VERSION | |
SSLCERT_V_ISSUER | |
SSLCERT_V_CERTIFICATES | |
SSLCERT_V_N_FIELDS |
Definition at line 40 of file sslcert_viewer.c.
|
static |
Definition at line 614 of file sslcert_viewer.c.
References cert_chain::certs, cert_chain::depth, cert_chain::der, cert_chain::der_length, der_to_certinfo(), ssl_cert_info::err, cert_chain::err, NSERROR_NOMEM, and NSERROR_OK.
Referenced by sslcert_viewer_create_session_data().
|
static |
Definition at line 606 of file sslcert_viewer.c.
References NSERROR_NOT_IMPLEMENTED.
Referenced by convert_chain_to_cert_info(), free_ns_cert_info(), and sslcert_viewer_fini().
|
static |
Free SSL certificate session data.
ssl_d | SSL certificate session data |
Definition at line 444 of file sslcert_viewer.c.
References sslcert_session_data::certs, nsurl_unref(), and sslcert_session_data::url.
Referenced by sslcert_viewer_fini().
|
static |
Initialise the treeview entry fields.
ssl_d | SSL certificate session data |
Definition at line 231 of file sslcert_viewer.c.
References treeview_field_desc::field, sslcert_session_data::fields, treeview_field_desc::flags, messages_get(), NSERROR_OK, NSERROR_UNKNOWN, SSLCERT_V_CERTIFICATES, SSLCERT_V_ISSUER, SSLCERT_V_N_FIELDS, SSLCERT_V_SERIAL, SSLCERT_V_SUBJECT, SSLCERT_V_TYPE, SSLCERT_V_VALID_FROM, SSLCERT_V_VALID_UNTIL, SSLCERT_V_VERSION, TREE_FLAG_DEFAULT, and TREE_FLAG_SHOW_NAME.
Referenced by sslcert_viewer_init().
nserror sslcert_viewer_accept | ( | struct sslcert_session_data * | ssl_d | ) |
Accept a certificate chain.
ssl_d | SSL certificate session data |
Definition at line 690 of file sslcert_viewer.c.
References sslcert_session_data::cb, sslcert_session_data::cbpw, NSERROR_OK, sslcert_session_data::url, and urldb_set_cert_permissions().
Referenced by ami_crtvrfy_accept(), handle_event(), nsw32_window_ssl_cert_command(), and ro_gui_cert_accept().
|
static |
Create a treeview node for a certificate.
ssl_d | SSL certificate session data |
n | Number of SSL certificate in chain, to make node for |
Definition at line 193 of file sslcert_viewer.c.
References sslcert_session_data::certs, sslcert_entry::data, sslcert_entry::entry, ssl_cert_info::err, NSERROR_NOMEM, NSERROR_OK, sslcert_viewer_free_treeview_field_data(), sslcert_viewer_set_treeview_field_data(), sslcert_session_data::tree, TREE_OPTION_NONE, TREE_REL_FIRST_CHILD, and treeview_create_node_entry().
Referenced by sslcert_viewer_init().
nserror sslcert_viewer_create_session_data | ( | struct nsurl * | url, |
nserror(*)(bool proceed, void *pw) | cb, | ||
void * | cbpw, | ||
const struct cert_chain * | chain, | ||
struct sslcert_session_data ** | ssl_d | ||
) |
Create ssl certificate viewer session data.
url | Address of the page we're inspecting certificates of |
cb | Low level cache callback |
cbpw | Low level cache private data |
chain | The SSL certificate chain |
ssl_d | Updated to SSL certificate session data |
Pass the session data to sslcert_viewer_init. sslcert_viewer_fini destroys the session data.
Definition at line 643 of file sslcert_viewer.c.
References sslcert_session_data::cb, sslcert_session_data::cbpw, sslcert_session_data::certs, convert_chain_to_cert_info(), cert_chain::depth, NSERROR_NOMEM, NSERROR_OK, nsurl_ref(), sslcert_session_data::num, sslcert_session_data::tree, and sslcert_session_data::url.
Referenced by ami_cert_verify(), gui_cert_verify(), and nsw32_cert_verify().
|
static |
Delete ssl certificate viewer entries.
e | Entry to delete. |
Definition at line 327 of file sslcert_viewer.c.
References sslcert_viewer_free_treeview_field_data().
Referenced by sslcert_viewer_tree_node_entry_cb().
|
inlinestatic |
Build a sslcert viewer treeview field from given text.
field | SSL certificate treeview field to build |
data | SSL certificate entry field data to set |
value | Text to set in field, ownership yielded |
ssl_d | SSL certificate session data |
Definition at line 115 of file sslcert_viewer.c.
References treeview_field_desc::field, treeview_field_data::field, sslcert_session_data::fields, NSERROR_OK, treeview_field_data::value, and treeview_field_data::value_len.
Referenced by sslcert_viewer_set_treeview_field_data().
nserror sslcert_viewer_fini | ( | struct sslcert_session_data * | ssl_d | ) |
Finalise a ssl certificate viewer.
This destroys the certificate treeview and the certificate viewer module's session data.
ssl_d | SSL certificate session data |
Definition at line 463 of file sslcert_viewer.c.
References ssl_cert_info::cert_type, der_to_certinfo(), ssl_cert_info::err, treeview_field_desc::field, sslcert_session_data::fields, info, ssl_cert_info::issuer, min, ssl_cert_info::not_after, ssl_cert_info::not_before, NSERROR_INVALID, NSERROR_OK, NSLOG, ssl_cert_info::serialnum, ssl_cert_info::sig_type, sslcert_cleanup_session(), SSLCERT_V_N_FIELDS, ssl_cert_info::subject, sslcert_session_data::tree, treeview_destroy(), treeview_fini(), and ssl_cert_info::version.
Referenced by ami_crtvrfy_destroy(), atari_sslcert_viewer_finish(), nsw32_crtvrfy_destroy(), and ro_gui_cert_release_window().
|
static |
Free a ssl certificate viewer entry's treeview field data.
e | Entry to free data from |
Definition at line 100 of file sslcert_viewer.c.
Referenced by sslcert_viewer_create_node(), and sslcert_viewer_delete_entry().
nserror sslcert_viewer_init | ( | struct core_window_callback_table * | cw_t, |
void * | core_window_handle, | ||
struct sslcert_session_data * | ssl_d | ||
) |
Initialise a ssl certificate viewer from session data.
This iterates through the certificates, building a treeview.
cw_t | Callback table for cert viewer's core_window |
core_window_handle | The core_window in which the cert viewer is shown |
ssl_d | SSL certificate session data |
Definition at line 393 of file sslcert_viewer.c.
References ssl_cert_info::err, sslcert_session_data::fields, NSERROR_OK, NSLOG, sslcert_session_data::num, sslcert_init_entry_fields(), SSLCERT_V_N_FIELDS, sslcert_viewer_create_node(), sslcert_session_data::tree, treeview_create(), treeview_init(), and TREEVIEW_READ_ONLY.
Referenced by ami_cert_verify(), atari_sslcert_viewer_init_phase2(), gui_cert_verify(), and nsw32_cert_verify().
bool sslcert_viewer_keypress | ( | struct sslcert_session_data * | ssl_d, |
uint32_t | key | ||
) |
Key press handling.
ssl_d | SSL certificate session data |
key | The ucs4 character codepoint |
Definition at line 727 of file sslcert_viewer.c.
References sslcert_session_data::tree, and treeview_keypress().
Referenced by ami_crtvrfy_key(), atari_sslcert_viewer_keypress(), cert_key(), and nsw32_sslcert_viewer_key().
void sslcert_viewer_mouse_action | ( | struct sslcert_session_data * | ssl_d, |
browser_mouse_state | mouse, | ||
int | x, | ||
int | y | ||
) |
Handles all kinds of mouse action.
ssl_d | SSL certificate session data |
mouse | The current mouse state |
x | X coordinate |
y | Y coordinate |
Definition at line 718 of file sslcert_viewer.c.
References sslcert_session_data::tree, and treeview_mouse_action().
Referenced by ami_crtvrfy_mouse(), atari_sslcert_viewer_mouse_action(), cert_mouse(), and nsw32_sslcert_viewer_mouse().
void sslcert_viewer_redraw | ( | struct sslcert_session_data * | ssl_d, |
int | x, | ||
int | y, | ||
struct rect * | clip, | ||
const struct redraw_context * | ctx | ||
) |
Redraw the ssl certificate viewer.
ssl_d | SSL certificate session data |
x | X coordinate to render treeview at |
y | Y coordinate to render treeview at |
clip | Current clip rectangle (wrt tree origin) |
ctx | Current redraw context |
Definition at line 704 of file sslcert_viewer.c.
References sslcert_session_data::tree, and treeview_redraw().
Referenced by ami_crtvrfy_draw(), atari_sslcert_viewer_draw(), cert_draw(), and nsw32_sslcert_viewer_draw().
nserror sslcert_viewer_reject | ( | struct sslcert_session_data * | ssl_d | ) |
Reject a certificate chain.
ssl_d | SSL certificate session data |
Definition at line 679 of file sslcert_viewer.c.
References sslcert_session_data::cb, sslcert_session_data::cbpw, and NSERROR_OK.
Referenced by ami_crtvrfy_reject(), handle_event(), nsw32_window_ssl_cert_command(), nsw32_window_ssl_cert_event_callback(), and ro_gui_cert_reject().
|
static |
Set a sslcert viewer entry's data from the certificate.
e | Entry to set up |
cert | Data associated with entry's certificate |
ssl_d | SSL certificate session data |
Definition at line 137 of file sslcert_viewer.c.
References ssl_cert_info::cert_type, sslcert_entry::data, ssl_cert_info::issuer, ssl_cert_info::not_after, ssl_cert_info::not_before, NSERROR_OK, ssl_cert_info::serialnum, SSLCERT_V_ISSUER, SSLCERT_V_SERIAL, SSLCERT_V_SUBJECT, SSLCERT_V_TYPE, SSLCERT_V_VALID_FROM, SSLCERT_V_VALID_UNTIL, SSLCERT_V_VERSION, sslcert_viewer_field_builder(), ssl_cert_info::subject, sslcert_entry::type, ssl_cert_info::version, and sslcert_entry::version.
Referenced by sslcert_viewer_create_node().
|
static |
node entry callback
msg | treeview message |
data | message context |
Definition at line 363 of file sslcert_viewer.c.
References sslcert_entry::data, sslcert_entry::entry, treeview_node_msg::msg, NSERROR_OK, sslcert_viewer_delete_entry(), TREE_MSG_NODE_DELETE, TREE_MSG_NODE_EDIT, and TREE_MSG_NODE_LAUNCH.
|
static |
folder operation callback
msg | treeview message |
data | message context |
Definition at line 342 of file sslcert_viewer.c.
References treeview_node_msg::msg, NSERROR_OK, TREE_MSG_NODE_DELETE, TREE_MSG_NODE_EDIT, and TREE_MSG_NODE_LAUNCH.
struct treeview_callback_table sslv_tree_cb_t |
ssl certificate treeview callbacks
Definition at line 385 of file sslcert_viewer.c.