1/* 2 * Copyright (C) 2013 Samsung Electronics Inc. All rights reserved. 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public License 15 * along with this library; see the file COPYING.LIB. If not, write to 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20#include "config.h" 21#include "WebKitCertificateInfo.h" 22 23#include "WebKitCertificateInfoPrivate.h" 24#include <wtf/text/CString.h> 25 26using namespace WebKit; 27using namespace WebCore; 28 29/** 30 * SECTION: WebKitCertificateInfo 31 * @Short_description: Boxed type to encapsulate TLS certificate information 32 * @Title: WebKitCertificateInfo 33 * @See_also: #WebKitWebView, #WebKitWebContext 34 * 35 * When a client loads a page over HTTPS where there is an underlying TLS error 36 * WebKit will fire a #WebKitWebView::load-failed-with-tls-errors signal with a 37 * #WebKitCertificateInfo and the host of the failing URI. 38 * 39 * To handle this signal asynchronously you should make a copy of the 40 * #WebKitCertificateInfo with webkit_certificate_info_copy(). 41 */ 42 43G_DEFINE_BOXED_TYPE(WebKitCertificateInfo, webkit_certificate_info, webkit_certificate_info_copy, webkit_certificate_info_free) 44 45const CertificateInfo& webkitCertificateInfoGetCertificateInfo(WebKitCertificateInfo* info) 46{ 47 ASSERT(info); 48 return info->certificateInfo; 49} 50 51/** 52 * webkit_certificate_info_copy: 53 * @info: a #WebKitCertificateInfo 54 * 55 * Make a copy of the #WebKitCertificateInfo. 56 * 57 * Returns: (transfer full): A copy of passed in #WebKitCertificateInfo. 58 * 59 * Since: 2.4 60 */ 61WebKitCertificateInfo* webkit_certificate_info_copy(WebKitCertificateInfo* info) 62{ 63 g_return_val_if_fail(info, 0); 64 65 WebKitCertificateInfo* copy = g_slice_new0(WebKitCertificateInfo); 66 new (copy) WebKitCertificateInfo(info); 67 return copy; 68} 69 70/** 71 * webkit_certificate_info_free: 72 * @info: a #WebKitCertificateInfo 73 * 74 * Free the #WebKitCertificateInfo. 75 * 76 * Since: 2.4 77 */ 78void webkit_certificate_info_free(WebKitCertificateInfo* info) 79{ 80 g_return_if_fail(info); 81 82 info->~WebKitCertificateInfo(); 83 g_slice_free(WebKitCertificateInfo, info); 84} 85 86/** 87 * webkit_certificate_info_get_tls_certificate: 88 * @info: a #WebKitCertificateInfo 89 * 90 * Get the #GTlsCertificate associated with this 91 * #WebKitCertificateInfo. 92 * 93 * Returns: (transfer none): The certificate of @info. 94 * 95 * Since: 2.4 96 */ 97GTlsCertificate* webkit_certificate_info_get_tls_certificate(WebKitCertificateInfo *info) 98{ 99 g_return_val_if_fail(info, 0); 100 101 return info->certificateInfo.certificate(); 102} 103 104/** 105 * webkit_certificate_info_get_tls_errors: 106 * @info: a #WebKitCertificateInfo 107 * 108 * Get the #GTlsCertificateFlags verification status associated with this 109 * #WebKitCertificateInfo. 110 * 111 * Returns: The verification status of @info. 112 * 113 * Since: 2.4 114 */ 115GTlsCertificateFlags webkit_certificate_info_get_tls_errors(WebKitCertificateInfo *info) 116{ 117 g_return_val_if_fail(info, static_cast<GTlsCertificateFlags>(0)); 118 119 return info->certificateInfo.tlsErrors(); 120} 121