<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openssl.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jwalton-test</id>
	<title>OpenSSLWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openssl.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jwalton-test"/>
	<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php/Special:Contributions/Jwalton-test"/>
	<updated>2026-05-12T22:15:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.13</generator>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Libcrypto_API&amp;diff=230</id>
		<title>Libcrypto API</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Libcrypto_API&amp;diff=230"/>
		<updated>2013-03-11T10:17:45Z</updated>

		<summary type="html">&lt;p&gt;Jwalton-test: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSL provides two primary libraries: [[Libssl API|libssl]] and libcrypto. The libcrypto library provides the fundamental cryptographic routines used by [[Libssl API|libssl]]. You can however use libcrypto without using [[Libssl API|libssl]].&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
In order to use libcrypto it must first (typically) be initialised:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;openssl/conf.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;openssl/evp.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int main(int arc, char *argv[])&lt;br /&gt;
 { &lt;br /&gt;
   /* Load the human readable error strings for libcrypto */&lt;br /&gt;
   ERR_load_crypto_strings();&lt;br /&gt;
 &lt;br /&gt;
   /* Load all digest and cipher algorithms */&lt;br /&gt;
   OpenSSL_add_all_algorithms();&lt;br /&gt;
 &lt;br /&gt;
   /* Load config file, and other important initialisation */&lt;br /&gt;
   OPENSSL_config(NULL);&lt;br /&gt;
 &lt;br /&gt;
   /* ... Do some crypto stuff here ... */&lt;br /&gt;
 &lt;br /&gt;
   /* Clean up */&lt;br /&gt;
 &lt;br /&gt;
   /* Removes all digests and ciphers */&lt;br /&gt;
   EVP_cleanup();&lt;br /&gt;
 &lt;br /&gt;
   /* Remove error strings */&lt;br /&gt;
   ERR_free_strings();&lt;br /&gt;
 &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==High Level and Low Level Interfaces==&lt;br /&gt;
&lt;br /&gt;
For most uses, users should use the high level interface that is provided for performing cryptographic operations. This is known as the [[EVP]] interface (short for Envelope). This interface provides a suite of functions for performing encryption/decryption (both symmetric and asymmetric), signing/verifying, as well as generating hashes and MAC codes, across the full range of OpenSSL supported algorithms and modes. Working with the high level interface means that a lot of the complexity of performing cryptographic operations is hidden from view. A single consistent API is provided. In the event that you need to change your code to use a different algorithm (for example), then this is a simple change when using the high level interface. In addition low level issues such as padding and encryption modes are all handled for you.&lt;br /&gt;
&lt;br /&gt;
Refer to [[EVP]] for further information on the high level interface.&lt;br /&gt;
&lt;br /&gt;
In addition to the high level interface, OpenSSL also provides low level interfaces for working directly with the individual algorithms. These low level interfaces are not recommended for the novice user, but provide a degree of control that may not be possible when using only the high level interface. Note that many low-level interfaces are not available if you are running in [[FIPS 140-2|FIPS]] mode.&lt;br /&gt;
&lt;br /&gt;
==Error Handling==&lt;br /&gt;
&lt;br /&gt;
Most OpenSSL functions will return an integer to indicate success or failure. Typically a function will return 1 on success or 0 on error. All return codes should be checked and handled as appropriate.&lt;br /&gt;
&lt;br /&gt;
It is common to see errors handled in a way similar to the following:&lt;br /&gt;
&lt;br /&gt;
   if(1 != EVP_xxx()) goto err;&lt;br /&gt;
   if(1 != EVP_yyy()) goto err;&lt;br /&gt;
 &lt;br /&gt;
   /* ... do some stuff ... */&lt;br /&gt;
 &lt;br /&gt;
 err:&lt;br /&gt;
   ERR_print_errors_fp(stderr);&lt;br /&gt;
&lt;br /&gt;
Note that not all of the libcrypto functions return 0 for error and 1 for success. There '''are''' exceptions which can trip up the unwary. For example if you want to check a signature with some functions you get 1 if the signature is correct, 0 if it is not correct and -1 if something bad happened like a memory allocation failure. So if you do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 if (some_verify_function())&lt;br /&gt;
    /* signature successful */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and someone can induce the &amp;quot;something bad happened&amp;quot; condition you end up behaving as though a bad signature is good. This one cropped up in the library internals at one point and was fixed in a security release. Currently you should check the manual pages or the source to be sure.&lt;br /&gt;
&lt;br /&gt;
One way to avoid being bitten by this potential problem is to always use this idiom to check for errors when calling an OpenSSL function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 if (1 != some_openssl_function())&lt;br /&gt;
    /* handle error */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further libcrypto information ==&lt;br /&gt;
&lt;br /&gt;
There are a number of other pages that cover specific aspects of working with libcrypto:&lt;br /&gt;
* [[EVP|EVP High level interface for cryptographic operations]]&lt;br /&gt;
* [[Low Level Cryptographic APIs]]&lt;br /&gt;
* [[Random Numbers|Handling Random Numbers]]&lt;br /&gt;
* [[BIO|Working with BIOs]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Libssl API]]&lt;br /&gt;
* [[Buy_Vi@gr@|Buy Vi@gr@]]&lt;/div&gt;</summary>
		<author><name>Jwalton-test</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=48</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=48"/>
		<updated>2013-02-27T19:16:14Z</updated>

		<summary type="html">&lt;p&gt;Jwalton-test: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the OpenSSL Wiki'''&lt;br /&gt;
&lt;br /&gt;
This wiki is under construction as we figure out what works and what doesn't. Please see the [[basic rules]] which are summarized here:&lt;br /&gt;
&lt;br /&gt;
This wiki is intended for the OpenSSL community. There are a few minor restrictions so we don't have to fool with capchas and constantly monitor for spam, defacements, and vandalism. The essence of the restrictions are:&lt;br /&gt;
&lt;br /&gt;
* Everyone can read content&lt;br /&gt;
* Registered users can add or edit content&lt;br /&gt;
&lt;br /&gt;
We encourage your participation and hope you will add pages and improve existing pages. If you want to add or edit content you should register for an account by clicking ''Create Account'' in the upper right hand corner of the page.&lt;br /&gt;
&lt;br /&gt;
We hope to have multiple administrators. Those who have an interest may request admission to the Administrator or Bureaucrat groups.&lt;br /&gt;
&lt;br /&gt;
We would like the content to be as accessible and usable as possible. We ask that all original content be in the public domain. We understand existing OpenSSL subject matter from other sources will inevitably appear here. Please respect other's copyright, and only place material if you are the copyright holder. If you are the holder and do place existing material, please place the content in public domain ''or'' under the OpenSSL license.&lt;br /&gt;
&lt;br /&gt;
It remains to be seen how this will work out. If you think your contributions have been blocked or modified inappropriately it was probably done by accident; please contact Steve Marquess, marquess@opensslfoundation.com, +1 301-874-2571.&lt;br /&gt;
&lt;br /&gt;
{{CategoryTOC}}&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
Here's an attempt to deface this wiki page. The account, [[User:Jwalton-test]] was created and verified by email. Under [[Special:ListUsers|Users]], the account has no membership.&lt;/div&gt;</summary>
		<author><name>Jwalton-test</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=47</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=47"/>
		<updated>2013-02-27T19:15:36Z</updated>

		<summary type="html">&lt;p&gt;Jwalton-test: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the OpenSSL Wiki'''&lt;br /&gt;
&lt;br /&gt;
This wiki is under construction as we figure out what works and what doesn't. Please see the [[basic rules]] which are summarized here:&lt;br /&gt;
&lt;br /&gt;
This wiki is intended for the OpenSSL community. There are a few minor restrictions so we don't have to fool with capchas and constantly monitor for spam, defacements, and vandalism. The essence of the restrictions are:&lt;br /&gt;
&lt;br /&gt;
* Everyone can read content&lt;br /&gt;
* Registered users can add or edit content&lt;br /&gt;
&lt;br /&gt;
We encourage your participation and hope you will add pages and improve existing pages. If you want to add or edit content you should register for an account by clicking ''Create Account'' in the upper right hand corner of the page.&lt;br /&gt;
&lt;br /&gt;
We hope to have multiple administrators. Those who have an interest may request admission to the Administrator or Bureaucrat groups.&lt;br /&gt;
&lt;br /&gt;
We would like the content to be as accessible and usable as possible. We ask that all original content be in the public domain. We understand existing OpenSSL subject matter from other sources will inevitably appear here. Please respect other's copyright, and only place material if you are the copyright holder. If you are the holder and do place existing material, please place the content in public domain ''or'' under the OpenSSL license.&lt;br /&gt;
&lt;br /&gt;
It remains to be seen how this will work out. If you think your contributions have been blocked or modified inappropriately it was probably done by accident; please contact Steve Marquess, marquess@opensslfoundation.com, +1 301-874-2571.&lt;br /&gt;
&lt;br /&gt;
{{CategoryTOC}}&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
Here's an attempt to deface this wiki page. The account, [[User:Jwalton-test]] was created and verified by email. Under [[Special:ListUsers Users]], the account has no membership.&lt;/div&gt;</summary>
		<author><name>Jwalton-test</name></author>
	</entry>
</feed>