HOW TO CONTRIBUTE PATCHES TO OpenSSL ------------------------------------ (Please visit https://www.openssl.org/community/getting-started.html for other ideas about how to contribute.) Development is coordinated on the openssl-dev mailing list (see the above link or https://mta.openssl.org for information on subscribing). If you are unsure as to whether a feature will be useful for the general OpenSSL community you might want to discuss it on the openssl-dev mailing list first. Someone may be already working on the same thing or there may be a good reason as to why that feature isn't implemented. To submit a patch, make a pull request on GitHub. If you think the patch could use feedback from the community, please start a thread on openssl-dev to discuss it. Having addressed the following items before the PR will help make the acceptance and review process faster: 1. Anything other than trivial contributions will require a contributor licensing agreement, giving us permission to use your code. See https://www.openssl.org/policies/cla.html for details. 2. All source files should start with the following text (with appropriate comment characters at the start of each line and the year(s) updated): Copyright 20xx-20yy The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html 3. Patches should be as current as possible; expect to have to rebase often. We do not accept merge commits; You will be asked to remove them before a patch is considered acceptable. 4. Patches should follow our coding style (see https://www.openssl.org/policies/codingstyle.html) and compile without warnings. Where gcc or clang is available you should use the --strict-warnings Configure option. OpenSSL compiles on many varied platforms: try to ensure you only use portable features. Clean builds via Travis and AppVeyor are expected, and done whenever a PR is created or updated. 5. When at all possible, patches should include tests. These can either be added to an existing test, or completely new. Please see test/README for information on the test framework. 6. New features or changed functionality must include documentation. Please look at the "pod" files in doc/apps, doc/crypto and doc/ssl for examples of our style.