# openssl

We are in the middle of figuring out the best path forward for how to treat openssl. There are now
a number of projects that need it, including the following.

1. weave
2. Dropcam camera pairing
3. WebRTC

The challenge is that each use requires that libssl/libcrypto get built with different flags. 
Historically, the weave repo was in charge of building openssl. However, there is need for a stand
alone build script for doing the same thing.

We don't have that build script.

For now, here are the steps for deploying openssl.

1. In mobile-ios, go into Pods/NLWeaveKit/tools.
2. Remove any reference to OPENSSL_DIR. The goal is for the Make script to use it's copy of openssl.
3. Run make_weave.sh to build openssl
4. Grab the output and paste into the output folder in the OpenSSL dir.
5. Run stich-libs.sh to make a fat binary.
6. Run `lipo -info lib/libssl.a` to check and make sure it has all archs.

From there you can check in the static libs and deploy a new version of the OpenSSL pod.
