summaryrefslogtreecommitdiff
path: root/manual/html_node/PKCS12-structure-generation-example.html
diff options
context:
space:
mode:
Diffstat (limited to 'manual/html_node/PKCS12-structure-generation-example.html')
-rw-r--r--manual/html_node/PKCS12-structure-generation-example.html313
1 files changed, 0 insertions, 313 deletions
diff --git a/manual/html_node/PKCS12-structure-generation-example.html b/manual/html_node/PKCS12-structure-generation-example.html
deleted file mode 100644
index 860c375405..0000000000
--- a/manual/html_node/PKCS12-structure-generation-example.html
+++ /dev/null
@@ -1,313 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- This manual is last updated 4 March 2015 for version
-3.5.4 of GnuTLS.
-
-Copyright (C) 2001-2015 Free Software Foundation, Inc.\\
-Copyright (C) 2001-2015 Nikos Mavrogiannopoulos
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
-copy of the license is included in the section entitled "GNU Free
-Documentation License". -->
-<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
-<head>
-<title>GnuTLS 3.5.4: PKCS12 structure generation example</title>
-
-<meta name="description" content="GnuTLS 3.5.4: PKCS12 structure generation example">
-<meta name="keywords" content="GnuTLS 3.5.4: PKCS12 structure generation example">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
-<meta name="Generator" content="makeinfo">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link href="index.html#Top" rel="start" title="Top">
-<link href="Function-and-Data-Index.html#Function-and-Data-Index" rel="index" title="Function and Data Index">
-<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
-<link href="Miscellaneous-examples.html#Miscellaneous-examples" rel="up" title="Miscellaneous examples">
-<link href="Using-GnuTLS-as-a-cryptographic-library.html#Using-GnuTLS-as-a-cryptographic-library" rel="next" title="Using GnuTLS as a cryptographic library">
-<link href="Listing-the-ciphersuites-in-a-priority-string.html#Listing-the-ciphersuites-in-a-priority-string" rel="prev" title="Listing the ciphersuites in a priority string">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
-div.display {margin-left: 3.2em}
-div.example {margin-left: 3.2em}
-div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-ul.no-bullet {list-style: none}
-body {
- margin: 2%;
- padding: 0 5%;
- background: #ffffff;
-}
-h1,h2,h3,h4,h5 {
- font-weight: bold;
- padding: 5px 5px 5px 5px;
- background-color: #c2e0ff;
- color: #336699;
-}
-h1 {
- padding: 2em 2em 2em 5%;
- color: white;
- background: #336699;
- text-align: center;
- letter-spacing: 3px;
-}
-h2 { text-decoration: underline; }
-pre {
- margin: 0 5%;
- padding: 0.5em;
-}
-pre.example,pre.verbatim {
- padding-bottom: 1em;
-
- border: solid #c2e0ff;
- background: #f0faff;
- border-width: 1px 1px 1px 5px;
- margin: 1em auto;
- width: 90%;
-}
-
-div.node {
- margin: 0 -5% 0 -2%;
- padding: 0.5em 0.5em;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- font-weight: bold;
-}
-dd, li {
- padding-top: 0.1em;
- padding-bottom: 0.1em;
-}
-div.float {
-
- margin-bottom: 0.5em;
- text-align: center;
-}
-
-table {
- text-align: left;
- margin-left:auto;
- margin-right:auto;
- border-spacing: 7px;
- width: 50%;
-}
-
-th {
- padding: 0;
- color: #336699;
- background-color: #c2e0ff;
- border: solid #000000;
- border-width: 0px;
- margin: 1em auto;
- text-align: center;
- margin-left:auto;
- margin-right:auto;
-}
-
-td {
- padding: 0;
- border: solid #000000;
- background-color: #f0faff;
- border-width: 0px;
- margin: 1em auto;
- text-align: left;
- margin-left:auto;
- margin-right:auto;
- padding-left: 1em;
-}
-
-dl {
- text-align: left;
- margin-left:auto;
- margin-right:auto;
- width: 50%;
-
- padding-left: 1em;
- border: solid #c2e0ff;
- background: #f0faff;
- border-width: 5px 1px 1px 1px;
- margin: 1em auto;
-}
-
--->
-</style>
-
-
-</head>
-
-<body lang="en">
-<a name="PKCS12-structure-generation-example"></a>
-<div class="header">
-<p>
-Previous: <a href="Listing-the-ciphersuites-in-a-priority-string.html#Listing-the-ciphersuites-in-a-priority-string" accesskey="p" rel="prev">Listing the ciphersuites in a priority string</a>, Up: <a href="Miscellaneous-examples.html#Miscellaneous-examples" accesskey="u" rel="up">Miscellaneous examples</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Function-and-Data-Index.html#Function-and-Data-Index" title="Index" rel="index">Index</a>]</p>
-</div>
-<hr>
-<a name="PKCS-_002312-structure-generation-example"></a>
-<h4 class="subsection">7.4.4 PKCS #12 structure generation example</h4>
-
-<p>This small program demonstrates the usage of the PKCS #12 API, by generating
-such a structure.
-</p>
-<pre class="verbatim">/* This example code is placed in the public domain. */
-
-#ifdef HAVE_CONFIG_H
-#include &lt;config.h&gt;
-#endif
-
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;gnutls/gnutls.h&gt;
-#include &lt;gnutls/pkcs12.h&gt;
-
-#include &quot;examples.h&quot;
-
-#define OUTFILE &quot;out.p12&quot;
-
-/* This function will write a pkcs12 structure into a file.
- * cert: is a DER encoded certificate
- * pkcs8_key: is a PKCS #8 encrypted key (note that this must be
- * encrypted using a PKCS #12 cipher, or some browsers will crash)
- * password: is the password used to encrypt the PKCS #12 packet.
- */
-int
-write_pkcs12(const gnutls_datum_t * cert,
- const gnutls_datum_t * pkcs8_key, const char *password)
-{
- gnutls_pkcs12_t pkcs12;
- int ret, bag_index;
- gnutls_pkcs12_bag_t bag, key_bag;
- char pkcs12_struct[10 * 1024];
- size_t pkcs12_struct_size;
- FILE *fd;
-
- /* A good idea might be to use gnutls_x509_privkey_get_key_id()
- * to obtain a unique ID.
- */
- gnutls_datum_t key_id = { (void *) &quot;\x00\x00\x07&quot;, 3 };
-
- gnutls_global_init();
-
- /* Firstly we create two helper bags, which hold the certificate,
- * and the (encrypted) key.
- */
-
- gnutls_pkcs12_bag_init(&amp;bag);
- gnutls_pkcs12_bag_init(&amp;key_bag);
-
- ret =
- gnutls_pkcs12_bag_set_data(bag, GNUTLS_BAG_CERTIFICATE, cert);
- if (ret &lt; 0) {
- fprintf(stderr, &quot;ret: %s\n&quot;, gnutls_strerror(ret));
- return 1;
- }
-
- /* ret now holds the bag's index.
- */
- bag_index = ret;
-
- /* Associate a friendly name with the given certificate. Used
- * by browsers.
- */
- gnutls_pkcs12_bag_set_friendly_name(bag, bag_index, &quot;My name&quot;);
-
- /* Associate the certificate with the key using a unique key
- * ID.
- */
- gnutls_pkcs12_bag_set_key_id(bag, bag_index, &amp;key_id);
-
- /* use weak encryption for the certificate.
- */
- gnutls_pkcs12_bag_encrypt(bag, password,
- GNUTLS_PKCS_USE_PKCS12_RC2_40);
-
- /* Now the key.
- */
-
- ret = gnutls_pkcs12_bag_set_data(key_bag,
- GNUTLS_BAG_PKCS8_ENCRYPTED_KEY,
- pkcs8_key);
- if (ret &lt; 0) {
- fprintf(stderr, &quot;ret: %s\n&quot;, gnutls_strerror(ret));
- return 1;
- }
-
- /* Note that since the PKCS #8 key is already encrypted we don't
- * bother encrypting that bag.
- */
- bag_index = ret;
-
- gnutls_pkcs12_bag_set_friendly_name(key_bag, bag_index, &quot;My name&quot;);
-
- gnutls_pkcs12_bag_set_key_id(key_bag, bag_index, &amp;key_id);
-
-
- /* The bags were filled. Now create the PKCS #12 structure.
- */
- gnutls_pkcs12_init(&amp;pkcs12);
-
- /* Insert the two bags in the PKCS #12 structure.
- */
-
- gnutls_pkcs12_set_bag(pkcs12, bag);
- gnutls_pkcs12_set_bag(pkcs12, key_bag);
-
-
- /* Generate a message authentication code for the PKCS #12
- * structure.
- */
- gnutls_pkcs12_generate_mac(pkcs12, password);
-
- pkcs12_struct_size = sizeof(pkcs12_struct);
- ret =
- gnutls_pkcs12_export(pkcs12, GNUTLS_X509_FMT_DER,
- pkcs12_struct, &amp;pkcs12_struct_size);
- if (ret &lt; 0) {
- fprintf(stderr, &quot;ret: %s\n&quot;, gnutls_strerror(ret));
- return 1;
- }
-
- fd = fopen(OUTFILE, &quot;w&quot;);
- if (fd == NULL) {
- fprintf(stderr, &quot;cannot open file\n&quot;);
- return 1;
- }
- fwrite(pkcs12_struct, 1, pkcs12_struct_size, fd);
- fclose(fd);
-
- gnutls_pkcs12_bag_deinit(bag);
- gnutls_pkcs12_bag_deinit(key_bag);
- gnutls_pkcs12_deinit(pkcs12);
-
- return 0;
-}
-</pre>
-
-<hr>
-<div class="header">
-<p>
-Previous: <a href="Listing-the-ciphersuites-in-a-priority-string.html#Listing-the-ciphersuites-in-a-priority-string" accesskey="p" rel="prev">Listing the ciphersuites in a priority string</a>, Up: <a href="Miscellaneous-examples.html#Miscellaneous-examples" accesskey="u" rel="up">Miscellaneous examples</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Function-and-Data-Index.html#Function-and-Data-Index" title="Index" rel="index">Index</a>]</p>
-</div>
-
-
-
-</body>
-</html>