Why is wolfSSL the #1 Choice For Game Developers?

You may have not realized it, but wolfSSL is very popular for game development, and is in use in millions of games.  

Here`s why:  

1. Experienced:  The yaSSL team has been supplying game developers with an efficient, portable SSL Stack for years.

2. Small:  Our code size is small.  We won`t bog down your game.

3. Portable:  We run on all the major gaming consoles/platforms and some of the minor ones.

4. Scalable:  Building a MMPORG and require security?  We have experience helping with that too.  wolfSSL won`t consume all of your server`s memory.

5. Streaming media:  wolfSSL was built with securing streaming media in mind.

Let us know if you have questions.  If you are a game developer and would like to speak with our references in the gaming industry, just email us at info@yassl.com.

wolfSSL Build Sizes

One predominant question we get asked frequently is what are the build size and runtime memory usage of the wolfSSL embedded SSL library.  Hopefully this post will help clear things up.

Firstly, wolfSSL was built from the ground up to be optimized for embedded and resource-constrained devices and environments.  As such, we have kept a close eye on keeping our SSL library small while still providing the features our users want and need.

Build sizes (compiled binary size) for wolfSSL range between 30-100kB depending on build options and the compiler being used.  Typically on an embedded system, build sizes will be around 60kB.  This size will include a full-featured TLS 1.2-compliant client and server.  For details on build options, please see Chapter 2 of the wolfSSL Manual.

Looking at runtime memory usage, wolfSSL will generally consume somewhere between 5-50kB (average is around 3kB).  The runtime RAM usage per connection will vary depending the size of the input/output buffers being used.  For example, with standard 16kB buffers, the total runtime memory usage of wolfSSL with a single connection would be 3kB + 16kB + 16kB = 35kB.

If you have any further questions about wolfSSL code sizes, please contact us at info@yassl.com.  For a full list of wolfSSL features, please visit the wolfSSL Product Page.

Running the yaSSL Embedded Web Server on the Apple TV

Do you want to install a HTTPS-capable web server on your Apple TV? If so, continue reading below to find out how the open source yaSSL Embedded Web Server can easily be installed on the second generation Apple TV.

Following our port of wolfSSL to the second generation Apple TV, our next step was to get the yaSSL Embedded Web Server running on the Apple TV. Having a web server running on the Apple TV brings with it many benefits including the ability to host a website from a very small, energy-efficient, discreet, and quiet device.

If you missed our post on porting wolfSSL to the Apple TV, you can read it here: Running wolfSSL on the Apple TV 2. If you would like to install the yaSSL Embedded Web Server on your Apple TV with HTTPS support, follow the instructions in our previous post prior to installing yasslEWS. Note that you will need to build wolfSSL with either the –enable-opensslExtra or –enable-webServer build option.

Requirements:

1. Jailbroken second generation Apple TV (we leave this step for you to do)
2. wolfSSL installed on Apple TV for HTTPS support (see link above)

1. Compiling the Web Server

In order to easily compile the yaSSL Embedded Web Server for iOS (specifically the Apple TV), we added a new target to the makefile. You can download our updated yasslEWS makefile, here: Updated yasslEWS iOS Makefile.

After placing the new Makefile in your yasslEWS directory, simply run the following command. This will build yasslEWS for iOS and the ARM architecture.

make ios

1. Web Server Installation

After compiling the web server, move the application and configuration file to the Apple TV using your favorite FTP client. We chose to place the yaSSL Embedded Web Server in the following location on the Apple TV.

/private/var/mobile/Applications/yasslews

1. Running the Web Server

If you followed our previous instructions on installing wolfSSL on the Apple TV, the wolfSSL libraries should be located at “/usr/local/cyassl_atv2”. To make sure the loader can find them, you’ll need to set the path:

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/cyassl_atv2/lib

Then, to start the web server with both insecure (HTTP) and secure (HTTPS) ports, issue the following command. Keep in mind that you can set runtime options either on the command line during startup or in the configuration file (yasslEWS.conf). The yaSSL Embedded Web Server will automatically load the configuration file name “yasslEWS.conf” if present in the same directory as the executable. For a list of config options, use the “./yasslEWS -h” command.

./yasslEWS -s server.pem -p 8080,8081s -e error.txt

1. Build Sizes

One of the great things about using wolfSSL and the yaSSL Embedded Web Server is that they have been designed and optimized to run on embedded devices – thus giving them an extremely small footprint. Below you can see the sizes on disk of the compiled wolfSSL library and yaSSL Embedded Web Server using the above methods for the Apple TV – a total disk footprint of 181 kB for both SSL and a web server!

wolfSSL
122 kB Footprint
Full Feature Set
Standards up to the current TLS 1.2

yaSSL Embedded Web Server
59kB Footprint
Full Feature Set

For more information about the wolfSSL embedded SSL library or the yaSSL Embedded Web Server, please visit their respective product pages (wolfSSL, yaSSLEWS). yaSSL products are open source and dual licensed under both the GPLv2 as well as standard commercial licensing.

If you have any questions or comments, please let us know at info@yassl.com. We’re interested in hearing what you think!

Running wolfSSL on the Apple TV 2

The Apple TV brought with it a long list of desirable and useful features for the home – including high usability, a small form factor, easy setup, and low cost. We here at yaSSL are users and fans of the second generation Apple TV, and as such, recently ported the wolfSSL embedded SSL library to the Apple TV 2. We were quite surprised by how easy it was to get wolfSSL up and running.

The Apple TV 2 runs iOS with the Apple A4 (ARM Cortex-A8) processor and is equipped with 256 Mb of RAM and a 8GB flash drive, giving it more than enough space and speed to effectively run wolfSSL.

Installation

1. Jailbreak your Apple TV
Installation of wolfSSL onto the Apple TV requires that the TV be jailbroken first. There are any number of readily-accessible posts around the internet explaining this process, therefore, we will leave this step up to you.

1. Cross compile wolfSSL for iOS and ARM
For this step, we used a modified version of a script written by Michael Aaron Safyan to cross compile libraries for iOS. You can find our modified version of the script for iOS 4.3 and the armv7 architecture, here: Cross Compile Script. This script uses the ARM toolchain from the iOS Developer tools that come with the iPhone SDK. It sets environment variables, then runs wolfSSL’s normal ./configure script.

If you want to change the location where wolfSSL is installed, you can edit the script to adjust for your desired directory location. To build wolfSSL, place the cross compile script (iOS4.3-configure.sh) in the root directory of the wolfSSL download and run the following commands. This builds wolfSSL with the –enable-fastmath option.

./iOS4.3-configure.sh
make
sudo make install

If unaltered, this will install the cross-compiled wolfSSL library into /usr/local/cyassl_atv2.

1. Copy wolfSSL to the Apple TV
Use your favorite FTP client to upload the contents of the /usr/local/cyassl_atv2 directory to the same location on your second generation Apple TV. If desired, you can also copy additional wolfSSL elements to the Apple TV such as the CTaoCrypt benchmark utility, the wolfSSL testsuite, or examples. We chose to place these on the Apple TV under the /var/mobile/Applications/cyassl directory.

1. Benchmark Results
Our results of running the CTaoCrypt benchmark application are below:

AES 5 megs took 0.500 seconds, 9.99 MB/s
ARC4 5 megs took 0.174 seconds, 28.66 MB/s
RABBIT 5 megs took 0.126 seconds, 39.56 MB/s
3DES 5 megs took 2.196 seconds, 2.28 MB/s

MD5 5 megs took 0.163 seconds, 30.73 MB/s
SHA 5 megs took 0.137 seconds, 36.61 MB/s
SHA-256 5 megs took 0.309 seconds, 16.20 MB/s

RSA 1024 encryption took 1.12 milliseconds, avg over 100 iterations
RSA 1024 decryption took 17.81 milliseconds, avg over 100 iterations
DH 1024 key generation 11.90 milliseconds, avg over 100 iterations
DH 1024 key agreement 11.22 milliseconds, avg over 100 iterations

If you have any questions or comments about our port to the Apple TV, please let us know at info@yassl.com. We’d be happy to hear what you think!

wolfSSL can scale too!

Most of the focus of wolfSSL has been towards the embedded world, emphasizing small size, speed, and low memory use.  Ironically, these attributes also make wolfSSL ideal for scaling on a huge magnitude.   Other libraries often run into problems when trying to scale to hundreds of thousands of connections for applications like load balancing or cloud services.  We have users doing just that.  

If you`d like to try wolfSSL in a highly scaled environment, drop us a line, we`re eager to help and explore performance options with you.