<<

Institute of Technology

University of Stuttgart Universitätsstraße 38 D–70569 Stuttgart

Fachstudie

Classification of cryptographic libraries

Andreas Poppele, Rebecca Eichler, Roland Jäger

Course of Study: Softwaretechnik

Examiner: Prof. Dr. rer. nat. Stefan Wagner

Supervisor: Kai Mindermann, M.Sc.

Commenced: 2017/03/07

Completed: 2017/09/07

CR-Classification: A.1, A.2 Declaration

2/186 Zusammenfassung

Bei der Umsetzung von Sicherheitskonzepten stehen Softwareentwickler vor der Heraus- forderung eine passende kryptografische Bibliothek zu finden. Es gibt eine Vielzahl von kryptographischen Bibliotheken für verschiedene Programmiersprachen, ohne dass es eine standardisierte Auffassung von verschiedenen Eigenschaften dieser kryptographischen Bibliotheken gibt. Dieser Bericht liefert eine Klassifizierung von über 700 kryptograph- ischen Bibliotheken. Die Bibliotheken wurden in Bezug auf Aktualität und Beliebtheit ausgewählt. Um einen standardisierten Überblick zu liefern, wurden die wichtigsten Merkmale dieser Bibliotheken gesammelt und definiert. Die Datenerhebung zu diesen Merkmalen wurde sowohl manuell als auch automatisiert durchgeführt. Die Klassifizier- ung enthält Informationen, die erfahrenen und unerfahrenen Entwicklern im kryptografis- chen Bereich helfen, eine Bibliothek zu finden, die ihren Fähigkeiten und Anforderungen entspricht. Darüber hinaus kann sie als Grundlage für Studien über jede Form der Verbesserung dieser Bibliotheken und vieles mehr verwendet werden.

Abstract

Software developers today are faced with choosing cryptographic libraries in order to implement security concepts. There is a large variety of cryptographic libraries for diverse programming languages, without there being a standardized conception of different properties of these cryptographic libraries. This report provides a classification of over 700 cryptographic libraries. The libraries were chosen pertaining to currentness and popularity. In order to provide a standardized overview the most important traits and characteristics of these libraries were gathered and defined. Data collection on these characteristics was performed in a manual as well as automated fashion. The classification contains information that will help experienced and inexperienced developers in the cryptographic field to choose a that fits their abilities. Furthermore, it may be used as a basis for studies concerning any form of improvement of these libraries and many more.

3/186 Contents

Contents

1. Introduction6 1.1. Context...... 6 1.2. Purpose...... 6 1.3. Overview...... 6

2. Literature Review7

3. Method9 3.1. Research Design...... 9 3.2. Languages Selection...... 9 3.3. Search Methodology...... 13 3.3.1. Code hosting sites...... 14 3.3.2. Criteria for exclusion...... 15 3.3.3. Search constraints...... 16 3.4. Data Collection...... 21 3.4.1. Manual data Collection...... 21 3.4.2. Automated Data Collection...... 23

4. Classification 26 4.1. Library Types...... 26 4.2. Interface-Level...... 27 4.3. Dependencies...... 28 4.4. Related Libraries...... 28 4.5. Licenses...... 29 4.6. Cryptographic Features...... 29 4.7. Authors and Contributors...... 31 4.8. Project size...... 32 4.9. Impact...... 32 4.10. Standard Library...... 36 4.11. Documentation...... 37 4.12. Ease of Use...... 37

5. Results 37 5.1. Libraries...... 38 5.2. C++ Libraries...... 42 5.3. JavaScript Libraries...... 45 5.4. Ruby Libraries...... 49 5.5. Rust Libraries...... 51 5.6. C# Libraries...... 54 5.7. Swift Libraries...... 56 5.8. Java Libraries...... 58 5.9. Objective-C Libraries...... 61 5.10. Go Libraries...... 63 5.11. PHP Libraries...... 66 5.12. Python Libraries...... 68

4/186 Contents

6. Conclusion 70 6.1. Future work...... 70 6.2. Remarks...... 71

7. Acknowledgements 71

References 72

Appendices 74

Appendix A. Detailed Library Table 74

5/186 1. Introduction

1. Introduction

1.1. Context

Today’s software developers heavily rely on existent cryptographic libraries to provide features needed to implement security concepts. There is a large variety of cryptographic libraries for diverse programming languages. The libraries differ in terms of size, the range and type of features, the amount of authors and developers still maintaining it. There are libraries which are maintained by companies and some which are developed by individuals as a leisure activity. Some aren’t maintained any more and are deprecated, others still offer great potential. A lot of libraries merely re-implement or use another, offering a different interface through which the functionality can be accessed. Developers are faced with choosing a library which fits their needs in terms of offered functionality and application programmable interface, accessible with their level of ex- perience and knowledge in the cryptographic field. This can be very daunting as there is no standardized conception of different properties of cryptographic libraries. There is no general overview which contrasts these libraries with which developers can choose libraries with properties that fit their needs.

1.2. Purpose

This report aims to provide a classification of a large number of cryptographic libraries. A number of selected libraries are examined in respect to defined criteria. The libraries are then systematically grouped according to the result of the examination [8]. This report does not introduce or use a taxonomy as the defined criteria and groupings aren’t ordered in an hierarchical context [13]. To begin with, it is necessary to establish, which library features are relevant, for the purpose of contrasting cryptographic libraries. Additionally, we aim to ascertain, which libraries are relevant in the cryptographic field, pertaining to currentness and popularity and which ones out of the compiled collection have the highest impact. Furthermore, we wish to identify which of the previously selected libraries offer high potential for experienced developers in the cryptographic field and which ones are interesting for inexperienced developers.

1.3. Overview

The first section following the introduction is on the conducted literature review, the background and related work. The section 3, Method, contains the Research design, the approach on selecting programming languages and their corresponding cryptographic libraries. Furthermore, it has a section on how the data on the libraries was collected. The investigated properties of the libraries are explicated in section 4, Classification. The data on the collected libraries is contrasted in section 5, Results, and briefly summarised and evaluated in section 6, Conclusion.

6/186 2. Literature Review

2. Literature Review

In the field of classification of software related entities several approaches have been developed. Medvidovic and Taylor came up with an approach for classifying architecture descrip- tion languages [10]. The aim of this work was to provide a definition of architecture description languages to make them distinguishable from other types of specifications. In order to classify the architecture description languages, different characteristics were defined. Those include e.g. architecture modeling features like components, connectors or architectural configurations and tool support like multiple views or code generation. Shaw and Clements also concentrated on architecture in their paper [16]. They developed a framework for the classification of architectural styles that should support initial design decisions in software development. Their framework mainly distinguishes between the components and connectors that are used in the different architectural styles and the control issues between those components. As a result, their classification scheme arranges the libraries in a two-dimensional grid. In this report, the use of a two-dimensional grid for the classification would not be feasible, as the cryptographic libraries have more than two main characteristics. Also, the number of libraries is too high to arrange them in a grid. Another classification scheme that concentrates on software security patterns was de- veloped by Alvi and Zulkernine [2]. Their classification makes use of the different phases of the software engineering process. Software security patterns are classified according to their relation to the requirement, design or implementation phase. On the level of individual software security patterns they also developed a template that defines the characteristics of each pattern that have to be collected. Besides their name, these also include, for example, the pattern’s context, its problem as well as its solution and the consequences of using the pattern. Seacord and Householder developed a classification scheme for software vulnerabilities [15]. In contrast to existing classification schemes that concentrate on vulnerability reports, an engineering analysis was used. Another aim was the automation of the classification process. The classification itself was done using attribute value pairs. These could for example be source code related, like ‘illicit control transfer flow’ or based on integer operations like ‘integer signedness’. A comparative analysis of software libraries that were developed for public crypto- graphy was done by Abusharekh and Gaj [1]. Aim of the analysis was to compare the libraries according to their performance on large integer and field operations. Abusharekh and Gaj realised the comparison by testing the performance of each of the libraries on their own platform. Testing the performance of the cryptographic libraries examined in this report is not possible, because of the high number of libraries. In addition, the authors of this paper are no experts in the field of , which makes the development of a meaningful performance test within this work impossible. Delgado, Gates and Roach came up with a taxonomy of runtime software-fault monitoring tools [5]. Basis for the categorisation of the tools were attributes like the specification language, the monitoring mechanism and the event handler. The description of the

7/186 2. Literature Review

Figure 1: Classification scheme for security APIs[9] taxonomy was given in textual form, supported by tables defining the absence or presence of attributes in binary form. During the creation of this report, Lo Iacono and Gorski puplished their research in the field of security APIs[9]. Their goal was to find the most appropriate abstraction level of security APIs for common developers. One result of their work, was a classification scheme, that can be seen in Figure1. From left to right the abstraction level of the security APIs increases. Their scheme divides security APIs in two categories. The first category, called Security Primitives APIs contains basic functions. Security APIs in this category are very flexible in their use, but require the developer to have thorough knowledge in the field of software security. Otherwise the developer may fail in implementing robust and effective protection. The second category is called Security Controls APIs. It contains security APIs of higher abstraction but lower flexibility. Inside the security APIs a lot of know-how and security expertise is encapsulated if implemented correctly. This makes them easy to use even by novice developers which can rely on secure defaults. The methods and approaches, for the classification of cryptographic libraries, used in this report, are very similar to most of what was mentioned previously. Just like Medvidovic and Taylor, Seacord and Householder as well as Delgado, Gates and Roach, the classi- fication is done by determining important characteristics of the object to classify. In addition, details of the implementation like the supported algorithms are used as done by Shaw and Clements. Especially our classification of the interface level of cryptographic libraries conforms to the classification for the abstraction level proposed by Lo Iacono and Gorski. The result of the classification will also be given in textual form, as Delgado, Gates and Roach did. However, the supporting tables will not be in a binary form, as the characteristics of the libraries can not be expressed, describing only their presence and absence.

8/186 3. Method

3. Method

3.1. Research Design

As already stated in the introduction, there are many different cryptographic software libraries. However, it still remains unclear what the dominant characteristics of those libraries are and how they influence the use of those libraries. For this reason we want to provide a uniform overview over different characteristics of cryptographic libraries. In order to guide our research we developed five research questions.

RQ1 Which library features are relevant for the purpose of contrasting cryptographic libraries? RQ2 Which are relevant libraries in the cryptographic field pertaining to currentness and popularity? RQ3 Which libraries in the context of RQ2 have the highest impact? RQ4 Which libraries in the context of RQ2 offer high potential for experienced developers in the cryptographic field? RQ5 Which libraries in the context of RQ2 offer high potential for inexperienced de- velopers in the cryptographic field?

Answering these question will be done as follows. First, we will look at exemplary cryptographic libraries in order to collect interesting characteristics they have. In addition, we will collect cryptographic functions which are provided by cryptographic libraries. In the next step we will choose the programming languages for which we want to find all relevant cryptographic libraries. Afterwards we will compile a collection of libraries for each of the chosen languages. The filtering of the libraries we consider relevant will be done mostly by the factors currentness and popularity. In the meantime we will also add more characteristics that come to our mind. Once the list of cryptographic libraries is completed we will collect data on these corresponding to our collected characteristics. By analysing the libraries we collected and their characteristics we eventually will answer the last three research questions.

3.2. Languages Selection

We want to analyse the ten most popular programming languages. For this we review the TIOBE and PopularitY of (PYPL) index. They are popular, frequently updated indexes that use search engines for their ranking. To circumvent the basis introduced by the search engine data, we also include the StackOverflow developer survey results.

9/186 3. Method

TIOBE The TIOBE index is one of the most popular indexes for programming languages. Table 1 shows the March 2017 ranking. Since the index uses search engine results, it is somewhat lagging behind. Even though the index is popular, it does have its faults. The ranking is heavily influenced by the amount of search results that turn up from a search. One incident happened in April 2004. In an attempt to get rid of unfair practices to improve search result rankings, changed their algorithm. As a result, languages like Java and C++ took a significant drop in the TIOBE ranking.[25] Since then, they have started to use multiple search engines eg. Youtube.com, Baidu.com (Chinese "Google") or Wikipedia.org to prevent such an event to reoccur in the future.[21]

March ranking 2017 2016 Programming Language Share Trend 1 1 Java 16.384% −4.14% 2 2 C 7.742% −6.86% 3 3 C++ 5.184% −1.54% 4 4 C# 4.409% +0.14% 5 5 Python 3.919% −0.34% 6 7 .NET 3.174% +0.61% 7 6 PHP 3.009% +0.24% 8 8 JavaScript 2.667% +0.33% 9 11 /Object Pascal 2.544% +0.54% 10 14 Swift 2.268% +0.68% 11 9 2.261% +0.01% 12 10 Ruby 2.254% +0.02% 13 12 Assembly language 2.232% +0.39% 14 16 2.016% +0.73% 15 13 Visual Basic 2.008% +0.33% 16 15 Objective-C 1.997% +0.54% 17 48 Go 1.982% +1.78% 18 18 MATLAB 1.854% +0.66% 19 19 PL/SQL 1.672% +0.48% 20 26 Scratch 1.472% +0.70%

Table 1: TIOBE Index for March 2017 Source: www.tiobe.com

PYPL The PYPL index tries to be more up-to-date by using Google Trends instead of search engine results. It also uses tutorial as qualifier in its queries – contrary to programming which is used by TIOBE. This is done to prevent languages from obtaining a worse score, because they do not need the programming qualifier. For example PHP is qualifier enough, so people seldom search for PHP programming. Since everybody needs

10/186 3. Method to start somewhere and most developers, search for tutorials, tutorial was chosen. However, this is also far from perfect. In the case of Apple’s Objective-C, the same problem they tried to fix appeared again. Objective-C developers seem to search for iPhone tutorial or iPhone programming tutorial.[6] A reason for that might be that Obective-C is exclusively used for that platform. The results for March are shown in Table 2.

March ranking 2017 2016 Programming Language Share Trend 1 1 Java 22.7% −1.4% 2 2 Python 15.0% +3.0% 3 3 PHP 9.3% −1.2% 4 4 C# 8.3% −0.4% 5 7 Javascript 7.7% +0.4% 6 5 C++ 6.9% −0.5% 7 6 C 6.9% −0.1% 8 8 Objective-C 4.1% −0.6% 9 9 R 3.5% +0.4% 10 10 Swift 2.9% +0.0% 11 11 Matlab 2.7% −0.2% 12 12 Ruby 1.9% −0.2% 13 13 Visual Basic 1.5% −0.2% 14 14 VBA 1.4% +0.0% 15 - TypeScript 1.2% +0.9% 16 16 Scala 1.1% +0.3% 17 15 Perl 0.9% −0.2% 18 - Go 0.5% +0.2% 19 17 lua 0.5% −0.1% 20 - Haskell 0.3% +0.0% 21 - Delphi 0.3% −0.1% 22 - Rust 0.3% +0.0%

Table 2: PYPL Index for March 2017 License: Creative Commons Attribution 3.0 Unported License

StackOverflow developer survey The third ranking is provided by the StackOverflow developer survey. The survey is done on a yearly basis and should provide a different view on the use of programming languages. In contrast to the previous rankings, it doesn’t rely on search-engines but answers from human beings. Interviewees were allowed to select all programming languages that applied to them. The results show a slightly different market share distribution that is not caped at 100%.

11/186 3. Method

A drawback is the smaller amount of subjects. In 2016 roughly 50, 000[17] and in 2017 35, 000[18] developers were surveyed for the “Most popular Programming Language”.

Ranking 2017 2016 Programming Language Share Trend 1 1 JavaScript 61.9% +6.5% 2 2 SQL 50.8% +1.7% 3 3 Java 39.3% +3.0% 4 4 C# 33.8% +2.9% 5 6 Python 31.7% +6.8% 6 5 PHP 27.9% +2.0% 7 7 C++ 22.1% +2.7% 8 8 C 18.9% +3.4% 9 − TypeScript 9.4% − 10 11 Ruby 9.0% +0.1% 11 − Swift 6.4% − 12 12 Objective-C 6.4% −0.1% 13 − VB.NET 6.2% − 14 − Assembly 4.9% − 15 − R 4.4% − 16 − Perl 4.3% − 17 − VBA 4.3% − 18 − Matlab 4.2% − 19 − Go 4.2% − 20 − Scala 3.5% − 21 − Groovy 3.2% − 22 − CoffeeScript 3.2% − 23 − Visual Basic 6 2.9% − 24 − Lua 2.8% − 25 − Haskell 1.8% −

Table 3: StackOverflow Developer Survey 2017 License: Open Database License

Chosen languages Table 5 shows the chosen languages and their average position in the indexes and the survey. If a language didn’t make it into a ranking, it received a penalty rank of 30. Haskell for example wasn’t included in the TIOBE index. That means that the rank of 25 is the result of (30 + 25 + 20)/3. The penalty value of 30 is the ‘last’ place of all languages (VBA/VB treated as separate entities).

12/186 3. Method

Language Chosen ø Rank Java  1.667 Visual Basic 17 C#  4 SQL 17 Python  4 Go  18 JavaScript  4.667 TypeScript 18 C++  5.333 Assembly 19 PHP  5.333 Delphi 20 C  5.667 VBA 20.300 Swift  10.333 Scala 22 Ruby  11.333 Lua 24.333 Objective-C  12 Haskell 25 R 12.667 Scratch 26.667 Perl 14.667 Groovy 27 MATLAB 15.667 CoffeeScript 27.333 Visual Basic .NET 16.333 Rust  27.333

Table 5: Chosen Languages

In addition to the top ten of the average rankings, we choose Rust and Go pre-emptively as they show promise in our opinion. Go in particular was chosen beforehand as it has the highest rise in the 2016 TIOBE index.[20] These two languages are quite young (as is Swift) and it is interesting how they fare in comparison to older, more established languages. The chosen languages are the following 12: C, C++, C#, Go, Java, JavaScript, Objective- C, PHP, Python, Ruby, Rust and Swift – as shown in Table 5. The purpose of the ranking was solely for the selection of the languages. That means that the ranking is not further considered in the study.

3.3. Search Methodology

Before we started to search for libraries for this report, we tried to get an overview of the available information about cryptographic libraries. This information covered basic information such as the language of the interfaces, cryptographic features like protocols and meta information like the last version or number of contributors. With this basic information we came up with the categories which are most important for the report. We were forced to constrain our searches, as languages that have existed for an extended period of time have many libraries that compete in the cryptographic field. The goal of this report is to provide an overview of available cryptographic libraries. The overview would be useless if most of the libraries were outdated, covered exactly the same small feature set or reimplemented over and over again. Ultimately, this report should provide an overview of all useful cryptographic libraries by categorizing them in appropriate classes.

13/186 3. Method

Important traits The following traits of the libraries were of particular interest to us: • Interface level The interface level is especially important for people that are not affine with the cryptographic field or simply want a solution that works “out of the box”. • Type The type of the library is important in regard to the performance and the amount of dependencies pulled in for the functionality. • Cryptographic level The cryptographic level (primitive to high) is closely coupled with the interface level. More experienced users usually prefer more primitives and a low-level interface in contrast to beginners. • Impact The impact represents the state of the library in regard to the ongoing development, its usefulness and to a certain degree security (by auditing). Section4 defines these traits in more detail than this abstract description. Most of the data used for this classification is derived from the libraries source code. No budget to purchase commercial libraries was provided in order to analyse the source code if accessible. Therefore, the collection of considered libraries was limited to ones which are either of non-commercial or open-source distribution. The objective of the search was to come up with a collection of libraries for each selected programming language. The collections contain the libraries which are analysed and contrasted in the context of this classification as can be seen in section 5 Results. In order to conduct a structured search, specific search constraints were constructed for each of the programming languages, producing one collection of libraries for each language. As libraries can be written in languages different to that for which it is made, this report differentiates between the terms main language and interface language. In this context “main language” represents the language in which most of the source code is written. “Interface language” on the other hand signifies the language the library was written for. The collections of libraries are sorted by the interface language. Libraries found by the main language were manually added to the collection of the according interface language. Illustrating this setting with an example: the library ://github.com/ /php-src was found while looking for libraries with the interface-language C, as more than half of its source code is written in C. It is, however, written for php so this library was added to the php library collection.

3.3.1. Code hosting sites

Prior to compiling a collection of libraries it was necessary to consider which code hosting platforms an interesting list of cryptographic libraries for this classification. Look- ing at the variety of projects on the platforms GitHub, GitLab, BitBucket and SourceForge yielded that GitLab and BitBucket hardly had any significant libraries that couldn’t also

14/186 3. Method be found on GitHub. Another problem with GitLab is that projects can’t be filtered by programming language, which would make a selection tedious. Consequently, GitLab and BitBucket were excluded from the sites used to search for libraries. In addition to searching on specific platforms, other sources for libraries such as Stack Overflow, the Federal Information Processing Standard (FIPS) and Google search were considered. As significant Stack Overflow entries are also listed in the Google search results, this site was not used directly. Most of the libraries listed under FIPS are commercial and not open-source. Thus, these can’t be considered in the scope of this report and FIPS was not consulted any further. Ultimately, the code hosting sites GitHub and SorceForge and Google search were used to assemble the collection of libraries. Search constraints used for the search are listed in the following subsubsection 3.3.3.

3.3.2. Criteria for exclusion

A lot of libraries that can be found on the previously mentioned sites with the search constraints used aren’t of interest for this classification. Consequently, a list of exclusion criteria was necessary to enable a consistent selection. Libraries matching any of the following criteria were excluded from the collection. Note that some of these criteria can only be checked on sites such as GitHub, as the required information is not available on every site. GitHub was handled as the preferred site and additional sites hosting the same Library were ignored. • Missing Documentation This only includes libraries that have neither a description nor any form of doc- umentation. If, however, the library had a lot of contributors and commits, the files were checked to see whether it has a lot of features. In such cases the library was not excluded. “A lot” of contributors and commits for a library with missing documentation might be >5 contributors and >50 commits. • Tiny Libraries These are libraries which hardly offer any functionality and hardly have any commits and contributors. A library with two commits and one contributor might match this criterion depending on the offered scope of functionality. • Exclusively Educational Libraries Projects for school or university were excluded. If explicitly stated in the document- ation, that a library was constructed to “learn or play with cryptography,” these were also rejected. • Documentation Language Documentation was used to select relevant libraries. According to our language skills, documentation in either German, English or Spanish was accepted.

15/186 3. Method

• Insufficient Security “Rejection” if explicitly stated in the documentation that the functionality should not be considered secure. • Deprecated “Rejection” if explicitly stated in the documentation that the functionality is deprec- ated. • Fork with no additional functionality “Rejection” if the Fork in question doesn’t contain additional functionality to the original library.

3.3.3. Search constraints

This section lists the constraints used to filter libraries to be classified for specific languages. As previously stated, constraints were necessary as older languages gained an almost uncountable amount of cryptographic libraries and we were first and foremost interested in the useful libraries.

Prioritisation As two code hosting sites and the Google search were used, it occurred that a library excluded by a search constraint for one code hosting site was, nevertheless, listed in the results of another. It is the main purpose of the GitHub constraints to confine the results to the more important libraries. However, one or more important libraries were also excluded during this process. In order to find these libraries none the less, the Google search constraint was constructed very leniently, merely containing “programming language + crypto.” As far as we could tell, the most important libraries were repeatedly listed under the first three pages of the Google search results. Hence, all search results listed on each site were considered even if these were excluded on another. With this approach, even if an important library was missed on GitHub, it would be found through Google or on SourceForge and vice versa. The following paragraphs list the specific constraints used for each programming language. In the case of GitHub # without constraint states how many repositories were listed for the term “crypto + language:programming language.” # with constraint states how many Repositories were listed with the given constraint.

16/186 3. Method

C Specific Constraints GitHub Constraint: crypto language:C stars:>0 pushed:>2015-01-01 fork:true NOT NOT currency NOT bit- coin # without constraint: 1058 # with constraint: 230

Constraint: tls language:C stars:>9 # without constraint: 288 # with constraint: 55

Google Constraint: crypto C Google pages: 1 - 3

SourceForge Constraint: crypto written in C

C++ Specific Constraints GitHub Constraint: crypto language:C++ stars:>0 pushed:>2015-01-01 fork:true NOT cryptocurrency NOT currency NOT bit- coin # without constraint: 1283 # with constraint: 201

Google Constraint: crypto C++ Google pages: 1 - 3

SourceForge Constraint: crypto written in C++

17/186 3. Method

Python Specific Constraints GitHub Constraint: crypto language:Python pushed:> 2015- 01-01 NOT currency NOT bitcoin NOT ctf stars:>0 NOT cryptopals NOT Mata- sano # without constraint: 2851 # with constraint: 316

Constraint: tls language:Python stars:>9 pushed:>2015-01-01 # without constraint: 340 # with constraint: 40

Google Constraint: crypto python Google pages: 1 - 3

SourceForge Constraint: crypto written in Python

Java Specific Constraints GitHub Constraint: crypto language:Java stars:>0 pushed:>2015-01-01 fork:true NOT cryptocurrency NOT currency NOT bit- coin # without constraint: 2259 # with constraint: 222

Google Constraint: crypto Java Google pages: 1 - 3

SourceForge Constraint: crypto written in Java

JavaScript Specific Constraints GitHub Constraint: crypto language:Javascript stars:>0 pushed:>2015-01-01 fork:true NOT cryptocurrency NOT currency NOT bit- coin NOT matasano NOT cryptopals # without constraint: 2780 # with constraint: 470

Google Constraint: crypto JavaScript Google pages: 1 - 3

SourceForge Constraint: crypto written in JavaScript

18/186 3. Method

PHP Specific Constraints GitHub Constraint: crypto language:Javascript stars:>0 pushed:>2015-01-01 fork:true NOT cryptocurrency NOT currency NOT bit- coin NOT matasano NOT cryptopals # without constraint: 421 # with constraint: 84

Google Constraint: crypto PHP Google pages: 1 - 3

SourceForge Constraint: crypto written in PHP

C# Specific Constraints GitHub Constraint: crypto language:C# stars:>0 pushed:>2015-01-01 NOT currency # without constraint: 811 # with constraint: 131

Google Constraint: crypto C# Google pages: 1 - 3

SourceForge Constraint: crypto written in C#

Swift Specific Constraints GitHub Constraint: crypto language:Swift # without constraint: 159 # with constraint: 159

Constraint: tls language:Swift stars:>9 pushed:>2015-01-01 # without constraint: 11 # with constraint: 3

Google Constraint: crypto Swift Google pages: 1 - 3

SourceForge Constraint: crypto Swift

19/186 3. Method

Objective-C Specific Constraints GitHub Constraint: crypto language:Objective-C created:>2015-01-01 # without constraint: 132 # with constraint: 74

Constraint: crypto language:Objective-C stars:>0 # without constraint: 132 # with constraint: 56

Google Constraint: crypto Objective C Google pages: 1 - 3

SourceForge Constraint: crypto written in Objective C

Rust Specific Constraints GitHub Constraint: crypto language:Rust pushed:>2015-01- 01 NOT currency NOT cryptocurrency NOT Matasano NOT cryptopals # without constraint: 241 # with constraint: 83

Google Constraint: crypto Rust Google pages: 1 - 3

SourceForge Constraint: crypto Rust In the case of Rust an additional list of cryptographic libraries derived from Philipp Keck’s master thesis ‘Analysing and improving the crypto ecosystem of Rust’ [7] was given to us. As the constraints used to make the list aren’t known to us, they aren’t stated in this paragraph.

Ruby Specific Constraints GitHub Constraint: crypto language:Ruby stars:>0 pushed:>2015-01-01 NOT currency NOT cryptocurrency NOT cryptopals NOT Matasano # without constraint: 432 # with constraint: 32

Google Constraint: crypto Ruby Google pages: 1 - 3

SourceForge Constraint: crypto Ruby

20/186 3. Method

Go Specific Constraints GitHub Constraint: crypto language:Go stars:>0 pushed:>2015-01-01 fork:true NOT cryptocurrency NOT currency NOT bit- coin NOT matasano NOT cryptopals # without constraint: 626 # with constraint: 171

Google Constraint: crypto Go Google pages: 1 - 3

SourceForge Constraint: crypto Go

3.4. Data Collection

The previous subsection 3.3 describes how libraries were selected. This section explains how the data on the selected libraries was assembled. In between realising these two steps it was determined what information on the libraries is relevant for this classification. In order to start collecting the information it was necessary to compile detailed explan- ations and definitions on what these involve and are. These can be found in section 4. Some data such as the number of authors and contributors of a library can be collected in an automated fashion. Other types such as the interface-level must be extracted manually. Within the framework of this report a tool called GitScrabber described in subsubsection 3.4.2 was developed for the automated data collection and data present- ation. The approach for the not automatic data collection is specified in the following subsubsection 3.4.1.

3.4.1. Manual data Collection

Collecting data manually generally involved looking into each repository’s documentation and source code. Depending on how easily the sought information was found, the data assembly could be very time consuming. As the list of collected libraries was too long for all of them to be inspected, it was necessary to reduce the number of those for manual data gathering. This was done by looking at each libraries impact. The impact is a classification criterion which was derived automatically, as is described in the following subsubsection 3.4.2. The collected libraries can have an impact of one through forty. For the purpose of reducing the amount of manual work, only libraries with an impact greater than or equal to 20 were inspected manually. The only exception was JavaScript, as there still were to many libraries with an impact greater or equal to 20 an impact of 25 was chosen as a limit. It is important to mention, that there is not always a definite value for some of the criterion. Assignment of some values is a subjective business. To counteract an ulti- mately subjective assignment, the definition for each classification criterion was prepared thoroughly beforehand. These are listed in section 4. Following data was gathered in a manual fashion:

21/186 3. Method

• Type To begin with, the documentation was consulted to assign one of the four types Standalone, Fork, Reimplementation or Wrapper. In some cases the type was stated outright, in others it was possible to detect it out of the context and in the worst case there was no information on the topic at all. If no information is given, it is almost impossible to find out if the repository is of the type, Reimplementation or Fork. Thus these weren’t considered in these situations and it was assumed that the library is of the type, Standalone. A few files of the source code were scanned and checked to see whether the offered functionality is mostly implemented or that of another cryptographic library is used. In the latter case, the type Wrapper was assigned. • Related If the library is of the type Wrapper, Reimplementation or Fork, the wrapped, reimplemented or forked libraries are listed in this section respectively. • Dependencies This was only filled out if the documentation explicitly stated other repositories as dependencies. Furthermore, it was mainly used for libraries of the type Standalone, as these most often listed other repositories their functionality depends upon. • Licenses In order to find out under which license a library is published, the readme was scanned and a file containing the word license was looked for. If these files did not exist or did not state any, or the full license information, the whole repository was searched for appearances of the word license. If this still did not lead to any result it was assumed that the library was not published under any license. • Documentation Documentation makes an essential difference in the ease of use if it contains required information, sufficient explanations and examples. Therefore the presence and completeness of the documentation was examined. We checked whether a readme, an additional website and a downloadable version exists. Completeness is described by the presence of an API, examples and explanations. The criterion readme was not necessarily set to true if such a file existed as a lot of these files were empty. It had to contain some form of helpful information. This is also true for the website and downloadable version. For API to be set to true, all the libraries methods and their required parameter had to be listed. Example was set to true if the documentation contained a few examples. It was not necessary for there to be one for each listed method. The explanation criterion was handled the same way as the example criterion. • Interface-level We checked if the libraries had a low and/or a high level interface. If it was explicitly stated in the documentation what kind of interface is provided, then this type was adopted after a quick check in the source code. Otherwise, this was mainly done by looking at the API or the source code if an API wasn’t provided. The interface-level

22/186 3. Method

was then determined by looking at the amount and type of parameters the methods require. The parameters are an indicator for the influence a user can take. If a method requires hardly any parameters and hardly any knowledge on the topic, it belongs in the high-level category. If in contrast it takes a lot of parameters, which require an advanced skill set in the cryptographic area, then it is of the type low-level. In some cases the methods had optional parameters, giving the user a choice of using the default values or configuring his own. These libraries were categorized as having both types of interface. Some libraries however had some methods that fit the high-level category and other methods that fit the low-level category. These libraries were also assigned both types of interface. • Interface-language We generally assumed that the interface-language is the same as the programming language the library was written in. It was part of the manual data collection process nonetheless as a library can have several interface languages and occasion- ally the interface language doesn’t match the main programming language. The documentation was scanned briefly to check if it contained further information on the interface language or languages. If this was not the case, then it was assumed that it only has one interface language and that it matches the main programming language.

3.4.2. Automated Data Collection

The GitScrabber was written to automate and thus speed up the accumulation of inform- ation about the different libraries. The name is a pun on data mining and big data, as this tool is rather primitive in comparison to big frameworks like Hadoop. This tool is nevertheless more than able to satisfy the requirements that come with this study. For a ’cold’ analysis of all projects (about 738 accounting to ≈ 19GB of data) roughly two hours are needed. If a report of a previous analysis is provided the time shrinks to two minutes – depending on how big the new project is or how demanding the tasks are that where changed. While some effort went into the performance of the tool it was not the goal of the study – there are still quite a few optimisation options left.

Structure In Figure 2 the rough architecture of the GitScrabber is shown. The abstract process of the GitScrabber is the following: 1. Read tasks The projects to analyse, their manually gathered data and the tasks that analyse the projects are given in a yaml configuration file.

2. Queue project tasks The tasks that analyse and gather data from the projects are queued to execute them in parallel.

3. Execute project tasks In this step the projects are analysed by the specified project tasks. This also means, cloning or downloading the projects via version control system (VCS) or in archive

23/186 3. Method

form to initialize the sources or updating them. If anything changed (sources, tasks or task parameter) the task has to analyse the project, otherwise a provided report can be used to reuse it’s results.

4. Collect job results The main thread collects the results from the projects and joins them to a ’report’.

5. Execute report tasks Once all projects are analysed the report is analysed sequentially by the report tasks that can access all project data and change it if necessary. These tasks are able to execute statistical calculation or generate LATEX output.

6. Output report At the end the report can be written to a file or printed to the console.

Figure 2: Architecture of the GitScrabber

24/186 3. Method

Data In the following list the tasks and their produced outputs are listed: 1. Project tasks

(a) AuthorContributorCounter This task estimates how many authors and contributors are involved in a project. This is only possible if a commit history exists from either a svn or git repository.

(b) MetaDataCollector This task obtains meta data from the api1 – for example, the used programming languages.

(c) LanguageDetector In case the project is not hosted on github the used languages are estimated by this task. The estimation basically counts the filename extensions and divides the header files (.h) between C, C++ and Objective-C as the three languages use the same extension. Because of that very rough estimation the report tasks prefer the data from github’s api.

(d) ProjectDates This task obtains the date of the first commit and the last from projects that where provided via VCS as indication of how old the projects are and when they were last updated.

(e) ProjectMetrics To calculate the size of the projects this task counts the lines of code that they contain.

(f) LicenceDetector The LicenceDetector tries to match licence texts against the project files using the cosine similarity. This is one of the most intensive tasks that benefits greatly from reusing a previous report as licences seldom change. The licence texts are obtained from the spdx.org2 repository.

(g) FeatureDetector Another computational intensive task is the FeatureDetector task. This task searches the project files for specific keywords that indicate that a certain feature is provided by the project. An example, for such a keyword is Block Chaining and CBC that indicate that CBC is supported. Since the later keyword is quite short the short keywords are searched as regex that expects a word boundary (\b) at the start and end of the keyword. The list of keywords was manually collected by looking at libraries and what they implement as well as lists about a category as found on wikipedia.

1 https://developer.github.com/v3/ 2 https://github.com/spdx/license-list-data

25/186 4. Classification

2. Report tasks

(a) ImpactCalculator The ImpactCalculator calculates the impact which needs the output of multiple project tasks, which is why this task has to be a report task.

(b) ProjectSizeCalculator This task compares the ProjectMetrics results of the different projects and their interface languages and classifies them to be either big (> 3. quartile), normal (between 3. and 1. quartile) or small (< 1. quartile) in regards to all projects and other projects of the same interface language.

(c) EaseOfUseEstimation The ease-of-use estimation is the result of the availability of the documentation, documentation completeness and the interface level that the library provides.

(d) NumericID This task assigns all projects a numeric id. While the id is unique it is not fixed to one project – if a new project is added to the list the id might change – but the id is intended to only be a guide for the reader.

(e) GenerateLaTeXOverviewTable The purpose of this task is to generate the tables that provide an overview of the projects of the different interface languages – as seen in section 5.

(f) GenerateLaTeXDetailTable For the curious readers that are interested in the details of the libraries this task generates a table that contains all information about the analysed projects in this report.

4. Classification

This section contains explanations and definitions for the collected characteristics of libraries with which these are later contrasted in the Results section 5.

4.1. Library Types

All cryptographic libraries which are examined in the scope of this study are allotted a type. Each library can be of one or more of the following six types: standalone, reimplementation, port, binding, wrapper and fork.

Standalone In this report libraries are called standalone if their main function is im- plemented within itself and not provided by only wrapping or reimplementing this main function from another library. So a standalone library may still depend on other libraries if it only uses their provided functions to provide a new function.

26/186 4. Classification

Reimplementation A library is a reimplementation if the entire functional scope of a known cryptographic library is newly implemented. At this point it is important to differentiate between a reimplementation and a port, the difference lying therein that the functionality is not necessarily reimplemented in another programming language. Furthermore a reimplementation aims at providing an improved functional scope to users which is derived from the origial library. While keeping in mind that the new interface should be very similar to that of the original library enabling an easy migration between the two.

Port In comparison to a reimplementation, a library is a port if it is a reimplementation in another programming language. The main objective of a port is to keep the provided interface as close as possible to the original interface. The essential difference to a reimplementation being that no further functionality and behaviour is added. Furthermore a port aims to achieve that the functional behaviour is essentially the same.

Binding A library is a binding if it uses functionality of another cryptographic library. It merely offers an altered interface to access the functional features of the original. Hence the functions are not improved and no additional features are implemented. A binding is usually implemented in a different programming language to provide equal access to functionality of an existing cryptographic library.

Wrapper The definition of a wrapper in this report is very similar to that of a binding. The main difference is that a wrapper extends the functional scope, offering extra features in addition to those of the other library. This can be done in the same- as well as a different programming language from that of the wrapped library. Moreover, a wrapper often implements additional features improving convenience such as memory management. The objective is often to simplify the usability of the wrapped library.

Fork Libraries that use existing source code and advance independent of the original are a fork. In terms of source code control it can be thought of as a branch of the original. They are, however, treated as autonomous libraries with possibly different names and usually different developer teams. E.g. a fork may emerge from a difference of opinions between developers which then separately continue the projects, creating two. We see that the wrapper and binding are very similar, so it might be tough to decide on the assignment of one of those types. This applies also to reimplementation and port. For this reason we will assign the type wrapper to both wrappers and bindings and the type reimplementation to both reimplementations and ports. So eventually each library will be assigned one of the types standalone, reimplementation, wrapper and fork.

4.2. Interface-Level

The examined libraries are assigned an interface-level. This is done similarly to the paper ‘I Do and I Understand. Not Yet True for Security APIs. So Sad’ in which a broader scope of APIs referred to as Security APIs are classified according to the APIs abstraction

27/186 4. Classification level. Lo Iacono and Gorski distinguish between security primitives and security controls [9]. Security primitives API can be considered synonymous to what is called a low-level API in this report. Similarly the term high-level API is used as synonym for security controls API. It is important to know that libraries can offer either one or both of the interface levels.

High-level A high-level interface has a high abstraction level, thus making it easier to use as well as more goal-oriented. Generally, security controls are a composite of security primitives. Security controls’ functionality and complexity is encapsulated, hidden from the developer. Therefore, the developer hardly needs any knowledge about the used cryptographic primitives, as the security expertise is handled for him by the library. The less information required by the library the easier it is to use for less knowledgeable developers. To accomplish this, libraries with an high abstraction level work with security defaults and encapsulating containers (e.g. objects and types). A high-level interface is less prone to errors because it offers less options for configuration. On the down side this also makes it a lot less flexible.

Low-level Security primitives usually implement basic security services like authenti- city, integrity, confidentiality and non-repudiation. As previously mentioned a security primitives API or low level interface has a low abstraction level and therefore requires a higher level of understanding of the cryptographic primitives. The individual security primitives can be combined to form security controls. This enables taking influence on a granular level. High flexibility however requires thorough knowledge and skill from the developer. Furthermore it increases risk of errors at many levels (e.g. configuration of a low-level primitives or combining primitives in an insecure way).

4.3. Dependencies

Many of the examined libraries don’t implement all cryptographic features by themselves but rely on external libraries. These provide certain cryptographic primitives or other features. As long as the examined library uses the imported libraries to offer new func- tionality – which exceeds that of the used libraries – they will be listed as dependencies. The crucial point is that the used libraries are indeed used to offer new functionality and are not extended themselves.

4.4. Related Libraries

As defined above there are cryptographic libraries that wrap, bind, fork, reimplement or port another library. If this is the case, the other library will be listed as related.

28/186 4. Classification

4.5. Licenses

The license, a library is published under describes the rights and commitments a person has, when using this library. Even though a person is free in formulating his own license agreement most of the developers use a pre-formulated license. Popular licenses are, for example, the MIT license, the GNU General Public License as well as its lesser form, the and the Internet Systems Consortium (ISC) license. Some are also published in the which means that the developer grants everyone the unlimited right to do anything they wish with the software. If the licenses field only contains a dash this means that there is no license assigned to the library or that there is insufficient data.

4.6. Cryptographic Features

This report differentiates between two levels of features. They can either be a primitive or high-level feature. This distinction is closely related to the interface-level explained in subsection 4.2.

Primitive A primitive is a low-level feature that is designed to do one specific task. In general, it is a publicly known algorithm that is well-established, highly reliable and can’t be divided into further aspects which are still specifically related to security. Primitives are used as generic building blocks for cryptographic systems and protocols. The examined libraries were checked for primitives of the following eight types. • Block

A divides the given M into consecutive blocks M1,M2,...,Mn with |M1| = |M2| = ... = |Mn| which usually consist of several characters or bits. All of these blocks are then enciphered with the same key K.[24]

EK (M) = EK (M1)EK (M2) ...EK (Mn)

An example of a block cipher are DES and AES. • As opposed to block ciphers, a stream cipher is a method that enciphers a message M by applying a different key kr to each consecutive character or bit instead of blocks of bits.[12]

EK (M) = EK1(M1)EK2(M2) ...EKn(Mn)

An example of a stream cipher are and ChaCha20. • Modes

29/186 4. Classification

– Symmetric Modes A mode of operation is a method for encryption using block ciphers. A message encrypted by a block cipher is only secure if it consists of one block. If a message consists of more than one block, a mode of operation has to be used to securely encrypt the message. It describes how to apply a block cipher operation several times to obtain a suitably encrypted message.[11,3] ECB and CBC are examples of modes of operation. – Encryption and Authentication Modes These modes provide authenticity as well as encryption of .[3] GCM is such an encryption and authentication mode.

• Hash Hash is short for , which is a function h that maps an input x of variable bit length onto an output h(x) with fixed bit length. The output is also called a fingerprint of the input. If x and h are known, h(x) can be determined in polynomial time. A hash function is required to be designed such that the fingerprint can’t be forged and that it is practically impossible to determine x with a known output z = h(x).[24] Hash functions can also be used outside of a security context in which case aspects like speed might be of more interest than security. MD5 and SHA are examples of such an hash function. MD5 is deemed to be insecure but is used as a quick way to check file integrity. The SHA family of hash functions has both insecure and (still) secure functions. SHA-1 is considered to be insecure[23]. SHA-2 is still deemed to be fit for security related applications.[14] • Code (MAC) A MAC value is a checksum, generated by hashing an input text with a secret key. The checksum is used to ensure authenticity of a message. The generated checksum is sent along with the message so that the recipient can calculate the checksum if he knows the secret key and can compare the new checksum with the received checksum.[24] HMAC is an an example MAC. • Public Key Cryptography (PKC) In PKC each participant has a private and a public key. As the names imply, the private key is kept secret as opposed to the other key that is publicly accessible. The idea is that a message encrypted with either one of the keys can only be decrypted with the other key. PKC can be used to ensure integrity as well as authenticity of messages. Integrity is established when encrypting a message with the recipients public key. The encrypted message can only be decrypted with the recipients private key, thus ensuring integrity as that key should be exclusively known to him.

30/186 4. Classification

Authenticity on the other hand is met by encrypting the sent message with the senders private key. The recipient can then only decrypt the message with the senders public key, thus authenticating the sender.[24] The RSA method is one of the best known public key .

High-level High-level features are built with primitive features. A high-level feature is not limited to one specific task, but has a broader functional scope.

• Public Key Infrastructure (PKI) PKC is is the basis for PKI.A PKI provides security for protocols like SSL and HTTPS in a public network. It consists of a registration and authority that provides, verifies, manages and when necessary, revokes digital certificates.[22] • Protocols A is an algorithm that determines what interactions between two communicating bodies must take place to achieve certain security aspects.[19] SSL is an example for a cryptographic protocol.

4.7. Authors and Contributors

The amount of authors and contributors gives a good clue about the impact of the library. Where a high number of authors and contributors depict a higher impact as people have to know and use a project before they can contribute to it. Obviously authors are more ‘valuable’ to the impact of the project as they very much define the success of it. Since the number of authors and contributors are mostly taken from VCSs, we need to specify a way to distinguish between them. Possible approaches are the following four algorithms, where the fourth is the one that provides the most accurate numbers in our opinion. 1. Cut-off at the highest difference in commits. This algorithm works well for distributions that can be projected on a logistic growth curve. It fails however, for linear and exponential distributions where all or only one are considered authors. 2. Cut-off at x% of the highest number of commits. This works well in most cases – but not well enough. From a pure mathematical point of view the results are fine. However seen from a human point of view, it is puzzling that some contributors are considered as an author if there is a huge gap between them and a previous author. 3. Cut-off at highest difference in commits with an additional limit at x% of the highest number of commits. This combination of item 1 and item 2 solves the problems from item 1 quite well. In case that the distribution is exponential however it is still possible that there

31/186 4. Classification

will be only one author even though other contributors put a lot of effort into the project. Thus this algorithm didn’t seem fair to us. 4. Cut-off at x% of commits the previous author has in combination with the require- ment to have at least y% of the author with the most commits. This algorithm counts everyone that has at least x% of commits of the previous author as an author too. To prevent the problem with linear distributions as in item 1, there is also a limit that each author has to have at least y% commits of the author with the most commits. While coming up with the algorithm and testing it we found that x = 40% and y = 5% yields results that seem to fit with our human-guessed estimate of who should be considered an author and who not. As the algorithms only consider the number of commits and not the lines added, changed or deleted, the results can only be considered an approximation. However the approximation is good enough as there have to be made trade-offs. For example, if someone does a lot of reformation of code, it should not have the same impact as someone that has the same amount of changed lines but adds features with them. On the other hand is someone who adds a lot legal documentation code – like licence texts – and even though many new lines are added, it is implausible to consider it counting towards author rank. By restricting the algorithms to the number of commits these special cases have neglectable impact on the categorisation of authors and contributors.

4.8. Project size

This characteristic tries to give an idea of the size of a project. The basis of our calculation is the number of LOC. As, however, the absolute number is not that meaningful in itself, we did a comparison between the libraries. A comparison in between all libraries of the same interface language was conducted, as well as in between all collected libraries. The final result of each comparison is the assignment of one of the project sizes, “small”, “medium”, or “large”. A small project thereby has a number of LOC that is below the 25% percentile of the libraries, while “large” means that the number of LOC is greater than the 75% percentile. Each library was assigned a project size in refference to all libraries of the same interface language and the entire library collection.

4.9. Impact

The impact of a library describes its relevance for cryptographic applications. As data about the usage of each library is hard to obtain, it will be modeled using the following factors: • Contributors: Contributors are all persons who have contributed to the library in terms of source code at least once. We assume a high number of contributors also reflects a high number of users.

32/186 4. Classification

• Authors: Authors of a library are those contributors with a significant higher amount of source code, contributed to the library. A large number of authors leads to the possibility to quickly react to security issues. It also enables them to put more effort into the library. Additionally, a large number of authors is necessary if some of them want to specialise in a specific part of the library and therefore, develop a much higher knowledge for these but are lacking in other parts. The number of authors, depending on their knowledge and importance to the library, influences another important factor, the bus factor3 which is also an important influence on the impact of the library. It states that the library is less likely to be abandoned if it has several authors as all of these would have to quit their participation. We have not calculated the bus factor separately from the pure number of authors. • Last modified: Last modified means the date, when the source code or documentation of the library got updated the last time. This factor represents the current development effort put into the library to keep it maintained and up-to-date. Cryptographic libraries that are not kept up-to-date are a possible security risk and should not be used (anymore). In the following we honor a library that has been updated within the last 90 days with the highest impact. If it has been updated longer than 90 days ago, we have reduced the impact of this factor drastically. • Age: The age of a library is the amount of days the library exists. This factor is included for two reasons: On the one hand cryptographic libraries need to mature to become used or be proposed by security experts. Young libraries cannot be evaluated as much as older libraries. However, the age alone is not a guarantee that the library is secure or has already matured. A combination of a high impact (high relevance for the field) and an old age may indicate that there are not many known security issues left and all intended features have already been implemented. When trying to calculate the impact of a library based on the factors above, one might expect the following challenge to arise. Libraries written in languages that are newer than others, have not had the time to grow a large number of authors or contributors. Naturally one would expect the impact of those libraries to be lower, as fewer people use the newer languages than more established ones. However, the evaluation of our selected libraries showed that there is no big difference in the highest impact ratings of libraries in newer languages than in older languages. The library with the highest impact rating in the Go language, for example, has been assigned a value of about 39.48 which is really close to the maximum rating of 40. For the Rust language the library with the highest impact rating was assigned a value of 36.37 which is still quite high. Considering the age of those languages – seven years in both cases – which is quite young compared to the other languages, there is no evidence for assuming that the age of the interface language might have a negative influence on the libraries impact rating. The only two exceptions

3Also known as truck factor: ‘The number of people on your team who have to be hit with a truck before the project is in serious trouble’Bowler, 2005

33/186 4. Classification

Figure 3: Distribution of the last modified factor over some exemplary amount of days are the languages Objective-C and Swift, which are nine and seven years old. Their libraries have received lower maximum ratings than in the other languages. In this case, however, one has to consider that the standard library of these languages, Security (ID: 621), had to be analysed manually and, therefore, was not assigned an impact rating. Eventually, all the factors have to be combined, in order to calculate the impact of the library. The number of authors and contributors and the age will be considered inverse exponentially (see Figure 5, Figure 6, and Figure 4) to achieve a saturation at 10. Therefore, the number of authors is ten times more important than the number of contributors (see the weights in the formula.) For the calculation of the influence of the last modified date, we take the logarithm of the days since the last modification and multiply it by two. This value will then be subtracted from ten. In Figure 3 the result of this calculation is shown with some exemplary values. The logarithm is used to account for the decreasing impact of the last modification date the further this date lies in the past. If for example two libraries got last modified some years ago but with some days difference, this is negligible. If they both got modified just some weeks ago, a difference of some days is more important. This leads to the following formula that we use to calculate the impact I of a cryptographic library:

(log2(10)−w1∗c) (log2(10)−w2∗a) (d1/90−1) I = 10 − 2 + 10 − 2 + w3 ∗ (10/2 )

(log2(10)−w4∗d2/365) + 10 − 2 , d1 ∈ [90, ∞) (1) wn: weighting factors c: number of contributors a: number of authors d1: days since last modified date d2: age of the library in days

34/186 4. Classification

Figure 4: Distribution of the age impact

Figure 5: Distribution of the authors impact

35/186 4. Classification

Figure 6: Distribution of the contributors impact

Based on the resulting values we chose the following weights: w1 = 0.1 and w2 = 1. This means authors are 10 times more important for the impact than contributors. w3 = 1 as the weight for the last modification time w4 = 1 as the weight for the age of the library.

With this the final formula is:

I = 10 − 2(log2(10)−0.1∗c) + 10 − 2(l0g2(10)−1∗a) + 1 ∗ (10/2(d1/90−1))

(log2(10)−1∗d2/365) + 10 − 2 , d1 ∈ [90, ∞) (2)

4.10. Standard Library

Some of the twelve chosen programming languages offer a cryptographic library as part of their standard library. These libraries can be identified by an (S) for standard added to their name. The name in this case is either the name of the programming language itself or something more general like “security”, which is what we called Apples Objective-C and Swift cryptographic standard library. We couldn’t give it the specific modules name, as there are several modules within the standard library which offer cryptographic services, which we nevertheless, treat as one library. As the standard library is often included in the distribution of the language itself, the GitScrabber couldn’t be used to analyse these libraries as analysing the entire language would have falsified results, such as the project size. It was possible to use the feature detector for some of the standard libraries, but apart from that hardly any data was collected on them. The impact of the standard libraries could not be determined either, as the necessary data for the calculation wasn’t available. However by way of importance these belong at the top of the list amongst the libraries with the highest impact.

36/186 5. Results

4.11. Documentation

Documentation is one of the key features of a library in matters of usability. The documentation was checked in terms of existence and completeness. Existence in this case involves whether the documentation consists of a readme, an external website and a downloadable version. A documentation was considered to be complete if it contained the libraries API as well as examples and explanations on the usage and functionality.

4.12. Ease of Use

This characteristic is supposed to help developers judge whether they have the necessary skill set to use a library. Ease-of-use can take the three values, easy, normal and difficult. It is derived from each libraries’ interface level and documentation by assigning weights to these, which are then added up. The weights for the existence of the documentation were awarded as follows. Three points for a website, two for a downloadable version and one for a readme. A documentation with an API was awarded another three points, another two for examples and one for extra explanations. If an high level interface existed, five points were given as opposed to one point for a low level interface. In the case that a library had both, it was awarded an extra six points. For a sum of over 16 points a library was assigned “easy”, a sum between 16 and 9 lead to an assignment of “normal” and less than 9 to “difficult”. We recommend inexperienced developers to choose libraries with an ease-of-use of either easy or normal. Experienced users may choose libraries of any of these three categories as they will be able to understand the given functionality better, even if it is not documented well.

5. Results

The Result section is dedicated to answering the research questions as well as showing excerpts of the data collected for the classification and the interpretation of it to a certain extent. Data listed in the tables in the following subsections belong to those characteristics of the libraries which we considered most important referring to our research questions. The entire range of data is presented in one large table listed in the appendix of this report. If this is a printed copy then the table can be found on the enclosed CD.

RQ1 Which library features are relevant for the purpose of contrasting cryptographic libraries? The features we perceived to be of most importance for choosing and contrasting cryp- tographic libraries are the library types, interface level, dependencies, related libraries, cryptographic features, the number of authors and contributors, as well as the impact, state of the documentation, project size and ease-of-use. All of these features or characteristics are explained in detail in section 4, Classification. Some features like the version, were neglected, as they are not standardised and therefore can’t be used to compare libraries. Other features, such as, if they are security-audited or what kind of attacks they might be resilient against, would be subject to future work because they exceed the scope of

37/186 5. Results this report. The collection of features is comprehensive but could be expanded by way of future work.

RQ2 Which are relevant libraries in the cryptographic field pertaining to currentness and popularity? All the libraries collected matching these criteria, filtered through the search constraints listed in subsubsection 3.3.3, are listed for each language in the following subsections.

RQ3 Which libraries in the context of RQ2 have the highest impact? The impact of each library is also listed in the following subsections. The libraries with the highest impacts are also mentioned in the respective sections, please see the corresponding sections for more detailed information.

RQ4 Which libraries in the context of RQ2 offer high potential for experienced developers in the cryptographic field? The characteristics interface level, documentation and features were used to judge whether a library is written for more experienced users. Generally a low level interface requires more knowledge on the offered functionality and offers more configuration options. The feature set was inspected as to whether the library offers primitive features which can be used as building blocks for high level features. Documentation is interesting as it may help an experienced developer to judge how many options the library effectively offers. Libraries which offer a low level interface, some primitive features and extensive documentation are therefore considered to be interesting and have high potential for experienced developers.

RQ5 Which libraries in the context of RQ2 offer high potential for inexperienced de- velopers in the cryptographic field? Similarly to research question four, interface level, documentation, features and ease- of-use were consulted to see if the libraries are written for inexperienced developers. Ease-of-use is derived from the existence and completeness of the documentation as well as the interface level. See subsection 4.12 for a more detailed explanation. It takes the three values easy, normal and difficult. If the libraries ease-of-use is either easy or normal, it was considered fit to be used by less experienced developers.

5.1. C Libraries

The collection of libraries for the interface language C resulted in a list of 82 libraries which are reasonably current and popular. On average, these libraries have an impact of 19.81, whereas the lowest impact is 11.29 and the highest 39.37 on a scale of 0 through 40. No dedicated standard library for cryptographic purposes exists for the programming language C. There are, however, some very popular libraries that provide a C interface. For this reason libraries with a C interface can be considered as a base for many of the

38/186 5. Results cryptographic libraries. The five libraries with the highest impact are OpenSSL, wolfSSL, Libsodium, and BoringSSL. Even though OpenSSL can be considered one of the most popular cryptographic libraries, it does not provide a detailed documentation of its API. It does, however, provide examples and explanations regarding its use. OpenSSL has a high level interface as well as a low level interface and offers both high and low level cryptographic functions. For this reason it is both appropriate for experienced and inexperienced developers. wolfSSL is advertised to be ’lightweight [and] portable’ and having a ’simple API’[26]. If offers both high and low level features but only provides a high level interface. In addition, it provides a detailed documentation. For this reason, it is appropriate for inexperienced developers. However, one has to consider that this library is not freely available as it is published under a commercial license. Libsodium also is an easy-to-use library which offers both a high level and a low level interface. Given its detailed documentation it is appropriate for inexperienced developers as well as experienced developers. Libgcrypt is a cryptographic library based on GnuPG. It offers only a high-level interface but both high and low level cryptographic functions. This makes it rather interesting for inexperienced developers. Lastly, BoringSSL is a fork of OpenSSL maintained by Google. As it is not meant to be used for general use, Google does not recommend for third parties to rely on it, because its API or ABI might change unexpectedly.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

137 39.37 L L 72 46 - OpenSSL, SSLeay

136 38.94 L L 35 36 - GPL-2.0, commercial

140 38.4 G L 29 21 M - 139 mbedtls 37.24 L L 35 26 M - 132 libsodium 34.53 L L 26 9 - ISC 085 libgcrypt 34.23 L L 45 28 - GPL-2.0, LGPL-2.1

134 boringssl 33.87 L L 52 38 G OpenSSL, SSLeay, ISC

004 cryptominisat 33.71 L L 14 11 L MIT

135 libtomcrypt 33.17 L L 49 19 - Public Domain, WTFPL

133 trezor-crypto 31.32 G L 32 10 M MIT

070 themis 31.05 G L 32 25 - Apache-2.0

109 vita-openssl 30.39 L L 54 40 M OpenSSL, SSLeay

113 Crypto-Engine- 29.93 L L 54 45 M BSD-3-Clause

074 milagro-crypto-c 29.28 G L 20 16 L Apache-2.0

067 --supercop 27.91 L L 79 29 M -

076 engine 27.61 L L 16 15 M OpenSSL, SSLeay

143 25.59 L L 35 35 M - 111 libsodium 24.39 G L 21 7 M ISC

39/186 5. Results

103 libsodium-CMake 23.98 G L 21 6 - ISC 141 picotls 23.63 G L 25 19 M -

128 ckm 23.62 L L 34 35 M Apache-2.0, BoostSoftwa reLicense 116 nsec5-crypto 23.45 M G 3 8 M -

079 tlse 23.37 L L 43 24 G Public Domain, MIT, BS D 061 aes_128 22.81 G G 5 1 - MIT

068 ArduinoSpritzCipher 22.38 M G 6 3 G MIT, CC-BY-SA-4.0, Pu blicDomain 100 sha2-le 22.09 M G 7 6 M - 101 Monocypher 21.31 G L 11 7 - BSD-2-Clause, OwnLicen se 138 org.eclipse.tinydtls.git 20.74 G L 11 11 M EPL-1.0, EclipseDistribu tionLicense1.0(BSD)

142 cifra 19.68 G L 20 9 M - 089 cryptobox-c 19.47 M G 4 3 M GPL-3.0, MIT, BSD-3-C lause, Apache-2.0, ISC

065 libhydrogen 19.06 G G 6 7 M ISC

081 cardano-crypto 18.93 G G 11 4 M MIT

062 -crypto-c 18.88 G L 20 10 M Wickr Public Review Li- cense 093 CycloneCrypto 18.59 G L 23 12 M GPL-2.0

071 lua-chacha 18.51 M G 5 2 M MIT 130 TinyECC 18.49 G L 6 10 M RSAREF2.0 License

126 php-lcrypto 18.45 G G 2 5 M PHP-3.01

124 luanacha 18.17 G G 7 4 M MIT, OwnLicense

077 libvmod-crypto 17.96 M M 4 3 M BSD-2-Clause

075 SHA-Intrinsics 17.92 M G 2 1 M - 121 NACrypto 17.75 G G 12 5 M MIT

107 nim-crypto 17.53 G L 44 13 M Public Domain, WTFPL, GPL, BSD-3-Clause

069 cryptoauth-openssl-engin 17.13 G L 16 22 M Own License e 112 itsp-crypto-practice 17.13 G G 4 5 M MIT

119 cryptoauth-openssl-engin 17.13 G L 16 22 M Own License e 117 cipher-aes128 17.06 G G 12 3 M BSD-3-Clause

131 AESLib 17.06 M G 11 2 M GPL-3.0 090 mbedtls_ecp_compressi 16.81 M M 4 6 M - on 122 CryptoAuth-exploration 16.44 L L 19 16 M Apache-2.0, BSD-3-Claus s e 072 kr-crypto 16.38 M G 2 2 M -

40/186 5. Results

094 65816-crypto 16.26 G G 9 4 M -

080 openzkp 15.69 M G 7 8 M Apache-2.0

120 php-ext-sqrl 15.63 G G 27 22 M LGPL-3.0

087 CryptoLab 15.58 G L 42 33 M MIT

073 cryptoauth-arduino 15.5 G L 8 5 M Own License

127 cryptoauth-arduino 15.5 G L 8 5 M Own License

078 crypto_ext 15.47 G G 6 2 M BSD-3-Clause

084 4d-plugin-common- 14.98 L L 40 30 M OpenSSL, SSLeay o 066 incubator-milagro-crypto 14.97 L L 15 9 M Apache-2.0

098 cryptoapi 14.89 G G 25 24 M BSD-2-Clause

125 Quadratic-Sieve 14.42 M G 3 3 M -

095 yacl 14.25 G L 22 14 M -

108 proest-arm11 14.04 M G 3 3 M -

104 crypto-collection 13.73 G G 33 18 M -

110 vane 13.65 G L 18 8 M - 105 crypto_wrapper 13.63 M G 5 4 M -

064 crypto 13.31 G G 11 4 M -

091 AtCryptoAuthLib 13.17 G L 8 14 M -

118 php- 13.15 M G 2 4 M -

115 cse539_crypto_prj 13.0 M G 4 9 M -

086 CryptoMalloc 12.97 G G 17 15 M -

096 libpaillier 12.9 M G 5 7 M -

083 cryptoauthlib 12.72 G G 7 8 M -

102 node-weixin-crypto 12.68 L L 35 28 M -

114 CryptoWrapperForCCo 12.68 L L 40 31 M - de 123 crypto1_bs 12.29 M G 8 3 M -

106 pebble-crypto 12.19 M M 3 2 M -

088 scrypto 11.99 G L 22 18 M -

129 11.9 L L 54 48 M -

082 cryptonight 11.45 G L 12 4 M -

092 LatticeCrypto 11.44 G G 6 4 M -

097 Cryptology 11.44 M G 2 0 M -

099 cryptomiser 11.31 M G 4 1 M -

063 cryptospecs 11.3 G L 82 42 M -

144 lightcrypto - - - 1 1 M -

145 pyaes - - - 1 1 M - Table 6: C-interface library overview

In the table above the following symbols and short forms were used.

41/186 5. Results

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 7 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the projects.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.30 13.96 17.33 19.80 23.49 39.37 Age in days 64.00 361.00 641.00 1069.00 1102.50 7231.00 Days since updated 0.00 53.00 177.50 272.51 480.00 968.00 Authors 1.00 1.00 1.00 1.30 1.00 6.00 Contributors 0.00 0.00 1.00 15.61 4.00 372.00 LOC 0.16k 1.59k 11k 102k 47k 3978k Table 7: C statistics

5.2. C++ Libraries

The collection of libraries for the interface language C++ resulted in a list of 60 libraries which are reasonably current and popular. On average, these libraries have an impact of 18.40 , whereas the lowest impact is 11.8 and the highest 37.28 on a scale of 0 through 40. There is no dedicated standard library for cryptographic libraries on C++. The five libraries with the highest impact are qca, botan, cryptopp, cryptominisat, libkleo. qca only provides a high level interface. Its documentation is quite detailed. The cryp- tographic functions it provides are high as well as low level so it might not only be appropriate for inexperienced developers but also for experienced developers. botan, cryptopp and cryptominisat all provide both a high and a low level interface. They all provide high and low level functions with cryptominisat being the one with the lowest number of features. cryptopp has less high level functions than botan. For this reason cryptopp might be the best library to choose. The last one, libkleo, mainly does mail cryptography. As there is no documentation available we do not suggest using it.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

021 qca 37.28 L L 28 31 L LGPL-2.1

003 botan 34.89 L L 57 38 - BSD-2-Clause 001 cryptopp 34.69 L L 57 18 - Public Domain, BoostSof twareLicense1.0 004 cryptominisat 33.71 L L 14 11 L MIT

046 libkleo 31.71 G L 8 14 M GPL-2.0, GPL-2.1

070 themis 31.05 L L 32 25 - Apache-2.0

42/186 5. Results

031 virgil-foundation-x 26.32 G L 28 20 L BSD-3-Clause

019 ruby-cryptopp 24.94 G G 33 7 M MIT

023 virgil-sdk-cpp 24.87 G L 15 7 - BSD-3-Clause

005 crypto 24.83 G L 16 23 L Apache-2.0

049 ofxCrypto 24.71 M M 6 3 M -

010 arduino-crypto 22.42 M G 4 2 M BSD-2-Clause

056 cc7 22.18 G L 16 17 M Apache-2.0

018 cryptoTools 22.17 G L 12 6 M Public Domain

008 Cryptosuite 21.54 M G 6 3 - -

030 CryptoCaesar 21.33 M G 8 4 M -

006 Whitebox-crypto-AES 21.26 G L 5 3 M -

014 mbedcrypto 21.14 G L 27 15 M MIT

057 NSSWrapper 20.26 G L 33 26 M MPL-2.0, GPL-3.0, Apac he-2.0 017 cryptoBoost 20.08 G G 21 8 M -

051 ChaoticImageCrypto 18.89 G G 19 10 M -

024 CryptoGateway 18.81 G L 10 9 M -

045 esp8266-cryptosign 18.25 M G 4 4 M -

016 CryptoStreamPP 17.6 M G 19 3 M -

029 react-native-fast-crypto 17.44 G L 42 31 M -

009 ofxCrypto 17.25 M M 5 3 M -

044 ZeroKit-Client-Native-C 17.04 G G 28 18 M - rypto

026 Cryptography 16.93 G G 9 9 M -

041 RnCAtmelCrypto 16.85 G L 20 9 M -

043 CryptoGL 16.47 G L 32 6 M -

034 cc7 16.09 G L 16 17 M - 013 Crypto 15.37 M G 6 3 M -

040 FBICRY 15.32 L L 31 33 M - 038 cryptopp-ane 15.06 L L 56 21 M -

042 botan-crypto-ane 15.06 L L 57 31 M -

037 cryptopp 15.01 L L 49 15 M -

054 AES128 14.79 G L 9 4 M - 039 cryptology 14.18 M G 6 3 M -

027 CryptoJPM 14.13 L L 52 19 M -

053 Data_Encryption_using 14.13 M M 4 0 M - _RSA_cryptography

035 Cryptography 14.04 M G 2 1 M -

052 php-cryptopp 13.69 G L 18 4 M -

059 CryptoEngine 13.68 G L 43 16 M -

036 cryptowrapper 13.4 M G 6 6 M -

43/186 5. Results

050 QtCryptoHash 13.24 G G 6 3 M -

025 cryptox 13.13 G G 9 7 M -

028 cryptosha 13.09 G L 10 5 M -

020 Cryptographic-Algorith 13.04 G G 12 1 M - ms 022 urweb-crypto-random-op 12.89 M M 4 1 M - enssl 012 crypto 12.86 M M 6 5 M -

007 CryptoppECC 12.79 L L 50 16 M -

058 tinycrypto 12.63 G G 7 5 M -

011 CryptoLib 12.54 G G 5 3 M -

048 RRGCodingAndCrypto 12.54 L L 65 54 M -

055 Curve25519_ESP8266 12.47 G G 6 5 M -

033 newton-des-crypto 12.44 L L 47 45 M -

015 ESP8266-Arduino-crypt 12.31 M G 4 3 M - olibs 032 react-native-rncrypto 12.23 L L 56 35 M -

047 ope-from-cryptodb 12.14 M M 8 4 M -

002 libchaos 11.78 G L 19 13 M - 060 poco - L L 33 24 M - 659 DotNet(S) - - - 1 1 - MS-RSL Table 8: C++-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 9 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the projects.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.78 13.21 16.28 18.38 21.38 37.28 Age in days 64.00 438.75 684.50 1104.17 1069.25 5450.00 Days since updated 20.00 85.00 225.50 364.52 605.75 1059.00 Authors 1.00 1.00 1.00 1.18 1.00 3.00 Contributors 0.00 0.00 1.00 5.05 2.00 66.00 LOC 0.12k 1.46k 9.81k 61k 45k 1113k Table 9: C++ statistics

44/186 5. Results

5.3. JavaScript Libraries

For the language JavaScript we found the largest number of libraries which we consider relevant. Eventually our list contained 146 libraries with the interface language JavaScript. On average, these libraries have an impact of 18.25, whereas the lowest impact is 11.31 and the highest 39.33 on a scale of 0 through 40. JavaScript does not have a dedicated standard library for cryptography. Therefore developers might be most interested in the following five libraries. Google’s Closure Library, the Stanford Javascript Crypto Library, xml-crypto, react-native-crypto and crypto-browserify are the five libraries with the highest impact. Google’s closure-library is not a specific cryptographic library but it still offers crypto- graphic functions. Therefore, its impact reflects the frequent use of the library in a whole rather than its cryptographic parts. However it has a high ease-of-use as it offers detailed documentation. As it offers only a high-level interface it is less attractive for experienced developers. The name of the xml-crypto library already suggests that its purpose is to do cryptography on xml. Currently it supports only digitally signing xml but other cryptographic functions are planned. The Stanford JavaScript Crypto Library is a general purpose cryptographic library that has a high level interface. It offers high and low level features. Due to its detailed documentation it is appropriate for experienced developers. react-native-crypto and crypto-browserify are both partial implementations of node’s crypto module for react-native and the browser. react-native-crypto offers both a high level interface and a low level interface while crypto-browserify only provides a high level interface. Both, however, provide only poor documentation.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

580 closure-library 39.33 L L 49 23 - Apache-2.0

440 sjcl 38.53 L L 35 28 - BSD-2-Clause, GPL-2.0

445 xml-crypto 35.81 G G 6 9 G MIT

458 react-native-crypto 35.23 G G 10 7 M MIT

443 crypto-browserify 35.08 G G 10 7 M MIT

449 forge 34.69 L L 32 22 G GPL-2.0

577 openpgpjs 34.64 L L 29 18 - GPL-3.0+

576 jsencrypt 34.0 L L 35 34 L ISC, MIT

558 sjcl 32.4 L L 34 32 M BSD-2-Clause, GPL-2.0

465 end-to-end 32.0 L L 25 24 M Apache-2.0

070 themis 31.05 L L 32 25 - Apache-2.0

439 sha.js 30.44 G G 4 4 M MIT

438 crypto-js 29.08 L L 18 5 - MIT

467 js-libp2p-crypto 28.77 G G 10 7 - MIT

45/186 5. Results

447 browserify-aes 28.65 G G 15 3 M MIT

452 tweetnacl-js 28.06 L L 43 42 G Public Domain

442 node- 27.61 G G 5 3 M MIT, CC0-1.0, Apache-2. 0 450 crypto-pouch 27.39 L L 21 16 G MIT

453 -async-js 27.04 G G 3 4 M MIT, BSD-2-Clause

480 virgil-crypto- 26.9 L L 6 7 - BSD-3-Clause

459 cryptiles 26.79 G M 2 2 G BSD-3-Clause

437 node-rsa 25.99 G G 6 5 G Own Licenses 436 crypto 25.51 G M 5 5 M BSD-3-Clause

441 js-jose 25.19 L G 6 8 M Apache-2.0

573 forge-universal 24.87 L L 32 23 M -

575 ursa 24.78 G G 13 12 M - 483 get-random-values 24.49 M M 4 2 M -

446 browserid-crypto 24.26 L G 10 11 M -

526 crypto-lite 24.04 G G 5 3 M -

464 react-native-rsa 23.83 G G 5 4 M MIT 540 webcrypto 23.77 G G 9 8 M -

485 WebCrypto.js 23.65 G G 7 5 M -

501 crypto-api 22.71 G G 6 4 M -

543 node-npmdoc-angular-cr 22.56 G M 3 4 M - ypto

542 crypto-js 22.11 L L 18 5 M -

574 js- 21.98 G G 17 8 M -

516 cryptobject 21.57 M M 2 1 M -

454 CryptoStego 21.53 G G 9 6 M -

466 native-crypto 21.52 G G 8 9 M -

520 meteor-aes-crypto 21.4 M M 3 2 M -

546 crypto--helper 20.84 G M 3 2 M -

474 crypto2 20.4 G G 7 4 M -

489 mpw-js 20.13 G G 5 3 M -

471 sas-crypto 19.8 M M 7 2 M -

456 crypto-async 19.64 G G 6 3 M -

538 angular-sha1 19.59 M M 3 2 M -

536 gencryption 19.51 L L 19 4 M -

549 meteor-sjcl 19.42 M M 6 3 M -

451 javascript-crypto-library 19.41 L L 13 9 M -

562 digest-stream 19.41 G M 4 2 M -

494 asymmetric-crypto 19.31 M M 6 1 M -

497 js-crypto 19.29 G G 6 3 M -

510 nxt-crypto 19.2 G G 3 3 M -

46/186 5. Results

476 n-crypto 18.81 G G 8 5 M -

541 xml-crypto-browser 18.61 G G 4 8 M -

479 crypto 18.6 L L 15 21 M -

468 crypto-pro 18.56 L G 3 2 M -

477 crypto-hashing 18.35 M M 3 1 M -

507 es-crypto 18.33 G G 8 6 M -

462 crypto 18.13 G G 6 3 M -

530 crypto-promise 18.11 M M 6 1 M -

552 node-cryptopia-api 17.71 M M 3 1 M -

457 merkle 17.68 G G 4 2 M - 473 web-eid.js 17.62 G M 3 5 M -

455 js-crypto 17.44 G M 4 2 M -

514 node-cryptopia 17.41 G M 4 3 M -

448 angularjs-crypto 17.06 G G 8 8 M -

461 angular-cryptography 16.9 M M 4 2 M -

502 Cryptor 16.84 G M 11 1 M -

522 runtime-node-crypto 16.72 M M 5 3 M -

515 cryptozoa 16.71 G G 3 2 M -

555 webcrypto-crypt 16.7 G G 12 9 M -

475 node-cryptojs-aes 16.59 L L 13 5 M -

435 crypto 16.02 L L 15 22 M -

567 wechat-dingding-cryptor 15.97 G M 5 2 M -

579 obsolete.cifre 15.88 L L 21 14 M - 517 cryptonic 15.72 G G 18 17 M -

482 WhiteBoxCrypto 15.6 L L 7 4 M -

500 OpenCrypto 15.6 G G 3 3 M -

553 Cryptor-Eof 15.6 G G 3 3 M -

463 crypto-lib 15.19 L L 22 14 M -

539 streembitlib 15.16 G G 6 3 M - 527 CryptoCookie 15.15 G M 7 2 M -

560 hashifier 15.15 M M 3 1 M - 490 node-nxt-api 15.08 L G 7 7 M -

488 createECDH 15.05 G M 2 5 M - 484 node-hashit 14.92 G G 2 3 M - 486 meteor-crypto-sha256 14.92 M M 3 2 M -

544 crypto-pouch 14.88 M M 3 3 M -

444 crypto 14.74 L G 13 5 M -

578 cryptico 14.71 L G 17 12 M -

472 djcl 14.64 L L 21 12 M -

470 crypto 14.63 M M 4 2 M -

513 forward-secrecy 14.62 G G 4 5 M -

47/186 5. Results

508 crypto-js 14.6 L L 27 13 M -

550 easy-encryption 14.44 G M 4 1 M -

499 crypto-token 14.4 M M 3 1 M -

557 WebCrypto.js 14.34 G M 8 3 M -

561 subtle-digest 14.18 M M 3 2 M -

506 crypto-random 14.17 M M 3 1 M -

565 machinepack-aes256 14.11 G M 6 3 M -

564 libnatrium.js 14.08 M M 4 1 M -

566 jscrypt 14.03 M M 22 2 M -

547 cryptoJsPasswordEncod 13.99 M M 3 1 M - er 568 node-aes256 13.97 G G 7 1 M - 512 node-crypto-gcm 13.9 G M 9 2 M -

525 crypto-json 13.89 M M 7 1 M -

521 neoatlantis-crypto-js 13.87 L L 9 5 M -

570 crypt-maker 13.84 G M 12 2 M -

504 webcrypto-jwt 13.78 G M 4 3 M -

532 storj-crypto 13.76 G M 4 2 M -

492 cryptopeer-crypto 13.71 G G 5 6 M -

559 secret-utils 13.71 M M 3 1 M - 495 borschik-hash 13.58 M M 3 1 M - 519 crypto- 13.58 M M 4 3 M -

535 microstar-crypto 13.53 G M 3 1 M -

496 cryptojs-extension 13.51 L L 23 11 M -

563 crc-hash 13.5 G G 3 3 M - 545 crypto-classic-otp 13.43 M M 2 2 M -

518 cryptoanalysis 13.41 L G 17 8 M -

534 node-crypto 13.36 G M 8 2 M -

498 libaxolotl-crypto-node 13.35 G M 7 3 M -

487 crypto.js 13.25 M M 8 1 M -

505 node-crypto-extra 13.15 G M 7 2 M -

460 crypto 13.12 G G 2 2 M -

469 cryptohat 12.99 G G 6 2 M -

569 node-acrypto 12.87 M M 4 1 M -

528 crypto-stream 12.86 G M 8 2 M -

554 awesome-cryptography 12.85 G G 5 0 M -

493 node-password-encrypter 12.68 G G 3 3 M -

523 minimalistic-crypto-utils 12.55 M M 3 2 M -

478 cryptoidentity 12.43 G M 9 18 M -

551 meteor-server-encryption 12.42 G M 3 3 M -

529 random-crypto 12.4 M M 2 1 M -

48/186 5. Results

531 node-crypto 12.25 G M 5 2 M -

548 node-easy-crypto 12.13 G M 6 2 M -

491 react-native-webview-cry 12.05 M M 3 3 M - pto

533 crypto-xor 12.03 M M 3 1 M -

556 des 12.02 G G 3 1 M - 511 SM2 11.99 L L 8 24 M - 524 zymkey 11.76 G M 3 3 M -

571 crypt 11.55 G M 6 2 M -

537 crypt 11.48 M M 3 2 M -

503 cryptojs 11.47 L G 11 5 M -

572 -file-stream 11.44 M M 4 1 M - 481 crypto-random-string 11.35 M M 3 1 M -

509 crypto-aes 11.31 L G 7 5 M -

581 jscryptolib - M M 4 2 M -

582 crypto-js - L L 36 23 M -

583 msrCrypto1.4 - L L 14 9 M - Table 10: JavaScript-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 11 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the JavaScript libraries.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.31 13.77 16.02 18.58 21.55 39.33 Age in days 58.00 480.50 864.00 948.82 1246.50 2863.00 Days since updated 4.00 101.50 258.00 376.96 575.50 1655.00 Authors 1.00 1.00 1.00 1.24 1.00 5.00 Contributors 0.00 0.00 1.00 8.71 2.50 606.00 LOC 0.00k 0.21k 0.69k 12k 5.52k 698k Table 11: JavaScript statistics

5.4. Ruby Libraries

The collection of libraries for the interface language Ruby resulted in a list of 19 libraries which are reasonably current and popular. On average, these libraries have an impact of

49/186 5. Results

20.26, whereas the lowest impact is 11.46 and the highest 32.45 on a scale of 0 through 40. Ruby offers a Wrapper for the OpenSSL library as part of its standard library. Within the scope of this Wrapper it provides SSL, TLS and general purpose cryptography. It has both a high and low level interface and good documentation which makes it suitable for both inexperienced and experienced developers. Apart from the standard library, rbnacl and themis have a high impact. themis has a larger feature set than rbnacl. However, it only has a high level interface as opposed to rbnacl which has both. Either one is documented sufficiently and is therefore also of interest to both experienced and inexperienced developers.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

243 rbnacl 32.46 L G 14 8 - MIT 070 themis 31.05 L L 32 25 - Apache-2.0

251 scrypt 30.52 L G 7 6 G MIT

236 reversible_cryptography 27.49 M M 6 2 G -

250 -ruby 26.2 G G 7 6 M MIT

245 gibberish 24.59 G G 9 9 - MIT

235 21.64 M M 5 3 G MIT

237 sirp 19.61 G G 4 10 - BSD-3-Clause

239 virgil-crypto-ruby 18.69 G G 2 4 M -

246 krypt 18.66 L L 11 19 M -

247 ruby- 16.26 L G 21 4 M -

248 ezcrypto 15.67 G G 20 11 M -

238 lupine_crypto 14.93 M M 3 2 M -

244 cryptor 14.66 G G 12 5 M -

249 crypt 14.42 G G 9 2 M -

242 ossl_cryptor 13.58 G G 8 4 M -

241 session-keys-rb 12.36 M M 5 7 M -

240 Ruby-Cryptography 11.46 M M 2 0 M - 234 OpenSSL(S) - - - 1 1 - Ruby, GPL-2.0, BSD-2-C lause Table 12: Ruby-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 13 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the Ruby libraries.

50/186 5. Results

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.46 14.73 18.68 20.24 25.80 32.46 Age in days 287.00 597.50 1621.50 1739.72 2430.75 4430.00 Days since updated 20.00 143.75 305.00 753.50 1155.50 3101.00 Authors 1.00 1.00 1.00 1.22 1.00 3.00 Contributors 0.00 0.25 1.50 6.28 9.25 26.00 LOC 0.14k 0.49k 1.10k 4.87k 3.48k 47k Table 13: Ruby statistics

5.5. Rust Libraries

The collection of libraries for the interface language Rust resulted in a list of 88 lib- raries which are reasonably current and popular. On average, these libraries have an impact of 18.35, whereas the lowest impact is 11.22 and the highest 34.81 on a scale of 0 through 40. Rust doesn’t have a cryptographic standard library like other programming languages. Thus, other libraries with the highest impacts should be considered such as Rust-OpenSSL, sodiumoxide and rustls. Out of these libraries Rust-OpenSSL offers the most cryptographic features, both a high and low level interface and reasonably good documentation and is therefore suited for both experienced and inexperienced developers. sodiumoxide and rustls have a reasonably interesting amount of features and good docu- mentation. However, sodiumoxide only has a high level-, and rustls a low level interface. rustls mainly contains high-level features. Although it is not under the top five libraries with the highest impact, the Ring library might be of interest to Rust developers. It has several cryptographic features, is documented sufficiently and offers a high level interface. The Ring library seems to be the best alternative to Rust-OpenSSL.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

216 rust-openssl 34.81 L L 32 32 - Apache-2.0, MIT, OpenS SL, SSLeay

215 sodiumoxide 32.07 L G 13 7 - Apache-2.0, MIT

175 RustySecrets 28.28 L G 9 6 - BSD-3-Clause

222 rustls 27.99 L L 22 22 L Apache-2.0, MIT, ISC

225 rust-security-framework 27.58 L G 8 8 - Apache-2.0, MIT

226 schannel-rs 27.35 L G 6 13 - MIT 153 noise-rust 27.21 G G 11 5 M 212 rust_sodium 27.0 L G 15 7 - -

207 tiny-keccak 25.93 G G 3 2 - CC0-1.0

146 rust-crypto 25.29 L L 23 8 M MIT, Apache-2.0

192 25.27 M M 6 1 M Apache-2.0, MIT

224 rust-native-tls 25.03 G G 5 9 - MIT, Apache-2.0, BSD-li ke 184 -dalek 24.94 L L 4 7 - BSD-3-Clause

51/186 5. Results

203 rust-gpgme 24.29 L L 9 16 - LGPL-2.1

179 argon2rs 24.05 G G 4 2 - MIT

227 webpki 23.84 G G 6 16 - ISC

208 twox-hash 23.45 G G 4 1 - MIT 197 ring-pwhash 23.39 G G 6 3 - MIT, Apache-2.0

206 rust-sha1 23.16 M M 4 3 - BSD-3-Clause 148 rust-gcrypt 22.79 L G 8 9 L LGPL-2.1

219 rust-djangohashers 22.58 G G 5 3 - BSD-3-Clause

210 hashes 22.54 L L 10 7 - Apache-2.0, MIT

176 scram 22.05 G G 6 4 - MIT 218 nobsign 21.55 M M 3 1 L BSD-3-Clause

163 ruma-signatures 21.27 G G 5 3 - MIT

189 hc256 20.8 M M 3 1 G MIT 188 hc128 20.79 M M 3 1 G MIT 232 webpki-roots 20.75 G G 10 12 M MPL-2.0

157 crypto-hash 20.66 M M 4 3 - MIT

194 newhope 20.48 G G 5 3 M MIT

166 rust-fcp-cryptoauth 20.38 G G 7 3 M MIT

209 block-ciphers 20.24 L G 15 3 - Apache-2.0, MIT

169 blissb 20.08 G G 3 3 M - 229 seckey 20.07 G G 3 4 M -

213 rust-commoncrypto 19.9 G G 4 1 M -

168 heimdal 19.89 G G 5 3 M - 228 clear_on_drop 19.88 G G 5 4 M -

185 ed25519-dalek 19.77 G G 4 4 M - 155 milagro-crypto-rust 19.6 G G 3 3 M -

182 chacha 19.35 G G 6 3 M MIT, Apache-2.0

196 pwhash 18.9 G G 5 6 M -

231 untrusted 18.76 M M 2 2 M - 147 octavo 18.74 L L 10 11 M - 180 blake2b 18.49 G G 5 4 M - 193 murmurhash64-rs 17.4 M M 4 1 M - 230 secrets 17.24 G G 4 2 M - 173 rust-paillier 17.02 L G 5 5 M -

214 sodalite 16.83 L G 6 4 M - 150 minimal-tls 16.8 L G 7 8 M - 151 rust- 16.59 G G 2 4 M -

199 rust-bcrypt 16.19 M M 4 1 M -

191 lioness-rs 16.06 M M 5 2 M - 201 rust-farmhash 16.01 G G 62 19 M - 165 cryptohash 15.82 M M 2 1 M -

52/186 5. Results

159 rust-crypto-working 14.87 L G 9 4 M -

171 message_verifier 14.87 G G 10 2 M -

174 rust-threshold-secret-sha 14.83 G G 4 1 M - ring

181 blake2-rfc 14.52 G G 7 4 M - 200 rust-blake2 14.48 L G 2 3 M - 195 pumpkin 14.33 M G 4 4 M -

204 rust- 14.28 M M 4 4 M - 156 steam-crypto-rs 13.99 M M 5 2 M -

217 edcert 13.96 G G 4 4 M - 160 rust-cryptopp 13.85 G G 4 3 M -

158 rust-crypto 13.84 M M 5 0 M -

177 susurrus 13.64 G G 8 4 M - 149 crypto 13.52 M M 3 1 M -

170 dono-crate 13.51 G G 4 4 M - 221 libtls.rs 13.44 G G 2 4 M - 154 rust-crypto-nacl 13.34 G G 4 3 M -

202 rust-fastpbkdf2 13.12 M M 5 1 M -

187 hashsign 12.97 G G 2 4 M -

186 hash-rs 12.89 M M 4 1 M - 164 crypto_vault 12.85 M M 4 2 M -

172 noises 12.66 G G 9 2 M - 162 rust-tweetnacl 12.52 G G 5 4 M - 152 rust-sparx 12.49 M G 5 1 M -

233 zerodrop-rs 12.45 M M 4 2 M -

161 rust-paillier 12.4 G G 4 5 M -

205 rust- 12.27 G G 3 1 M - 167 rs-encryptfile 12.11 G G 7 2 M -

190 jhash-rs 12.07 M M 5 2 M -

183 chacha20--aead 11.93 G G 7 1 M -

198 rlwekex 11.76 G G 2 1 M - 178 aes 11.67 G G 7 1 M - 223 rust-mbedtls 11.37 L L 38 25 M - 220 alt-tls 11.23 L G 7 10 M - 211 ring - L L 31 17 - ISC, OpenSSL, SSLeay, IntelLicense, Apache-2.0 , EricYoungOpenSourceL icense Table 14: Rust-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

53/186 5. Results

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 15 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the Rust libraries.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.23 13.74 18.49 18.52 22.30 34.81 Age in days 45.00 373.50 579.00 616.95 791.50 2091.00 Days since updated 20.00 54.75 149.50 256.48 430.00 975.00 Authors 1.00 1.00 1.00 1.05 1.00 2.00 Contributors 0.00 0.00 1.00 5.89 3.00 143.00 LOC 0.10k 0.55k 1.23k 4.30k 2.94k 110k Table 15: Rust statistics

5.6. C# Libraries

The collection of libraries for the interface language C# resulted in a list of 41 libraries which are reasonably current and popular. On average, these libraries have an impact of 18.11, whereas the lowest impact is 11.21 and the highest 38.94 on a scale of 0 through 40. There is a cryptographic standard library for C# which is called DotNet in the list below. The .Net Framework offers a wide range of cryptographic features through the System.Security.Cryptography namespace. The functionality is accessible through a high level interface and is well documented and therefore suited for both experienced and inexperienced developers. Apart from the standard library, wolfSSL, bc-csharp, bcrypt.net and PCLCrypto are the libraries with the highest impact. Although the wolfSSL library has the highest impact and seems to offer both primitive and high level features this library seems to specialise in high level features and only offers a high level interface. Therefore, we recommend the standard library or bc-csharp as an alternative. bc-csharp offers a large range of both primitive and high level features through a high and low level interface. It is however insufficiently documented and as listed in the table below is “difficult” to use. bcrypt.net and PCLCrypto both have a limited set of features although both have a high and low level interface. Opposed to bcrypt.net which seems to be more difficult to use, PCLCrypto is easy to use.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

136 wolfssl 38.94 L L 35 36 - GPL-2.0, commercial

692 bc-csharp 30.1 L L 60 50 M MIT, Apache-2.0

693 bc-csharp 29.45 L L 60 50 M -

695 bcrypt.net 28.31 G G 21 12 M MIT

661 PCLCrypto 27.54 L L 21 11 L MS-PL

694 Cauldron 27.28 L L 17 14 - MIT

54/186 5. Results

681 Science.Cryptography.Ci 25.27 G G 6 3 L MIT phers

662 SecurityDriven.Inferno 23.43 G G 7 4 - MIT

665 GostCryptography 21.9 L L 10 8 M mit

687 Isopoh.Cryptography.Ar 21.0 G L 5 4 M Public Domain gon2

673 Cryptography.ECDSA 20.6 G L 10 8 M MIT

688 CryptoHelper 20.4 M M 4 2 M MIT

660 StreamCryptor 20.07 G G 14 9 M MIT

680 cs-libp2p-crypto 19.38 M G 7 4 M MIT

666 nsec 18.74 G L 13 5 - MIT 674 Kalix.ApiCrypto 17.8 G G 4 5 M -

668 Konscious.Security.Cryp 16.32 G G 6 3 M - tography

670 Delta.Cryptography 16.08 L L 26 35 M -

689 PWDTK.NET 15.81 M G 3 2 M - 678 Lightweight_IoT_Crypt 14.66 L L 26 19 M - o_Library

664 crypto 14.59 M G 4 2 M -

676 BouncyCastleCrypto 14.57 L L 49 38 M -

671 CryptoService 14.56 M G 10 9 M -

667 EasyCrypto 14.11 G G 7 3 M -

663 Cryptography 14.1 G G 8 3 M -

683 cryptography.Net 13.54 G G 26 20 M -

686 Free.Crypto 12.81 G L 7 2 M -

669 CryptoN 12.57 M G 4 3 M -

691 CryptoProgram 12.56 G G 6 5 M -

679 virgil-crypto-net 12.41 G L 13 4 M -

685 SSMonoCryptographyLi 12.15 G L 11 9 M - brary

684 NoEdgeSoftware.Crypto 11.81 G G 9 5 M - graphy

690 CryptoLibrary 11.65 M G 7 6 M -

682 Xamarin.Droid.AesCryp 11.37 G L 9 3 M - to 677 next-generation-crypto-. 11.31 G G 6 5 M - NET.git

672 CryptoNet 11.21 M G 4 1 M -

675 cryptography 11.21 M M 5 2 M - 659 DotNet(S) - - - 1 1 - MS-RSL

696 netcologne - - - 1 1 M -

55/186 5. Results

Table 16: C#-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 17 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the C# libraries.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.21 12.57 15.81 18.10 21.00 38.94 Age in days 105.00 429.00 578.00 857.95 1291.00 2457.00 Days since updated 11.00 73.00 255.00 311.22 467.00 1128.00 Authors 1.00 1.00 1.00 1.16 1.00 4.00 Contributors 0.00 0.00 1.00 3.11 2.00 49.00 LOC 0.24k 2.42k 5.32k 43k 21k 330k Table 17: C# statistics

5.7. Swift Libraries

The collection of libraries for the interface language Swift resulted in a list of 40 libraries which are reasonably current and popular. On average, these libraries have an impact of 17.56, whereas the lowest impact is 11.22 and the highest 33.65 on a scale of 0 through 40. There is a cryptographic standard library for Swift which is called Security in the list below. Apple provides several APIs for security related features amongst others the SecKey API for asymmetric keys and the Common Crypto Library. In the scope of this report all of these are treated as one standard library which offers a large range of features. It has detailed documentation and is accessible through a high and low level interface and thus suitable for both experienced and inexperienced developers. Apart from the standard library CryptoSwift, IDZSwiftCommonCrypto, themis and crypto (ID 624) have the highest impacts. Out of these four libraries CryptoSwift, IDZSwiftCommonCrypto and themis represent a respectable alternative to the standard library. They offer a few features with reasonable documentation and while themis only offers a high level interface, the other two have both a high and low level interface. crypto also has a few features and only a high level interface, it is, however, not documented sufficiently. A lot of the libraries listed in Table 18 are Wrappers of Apples Common Crypto library.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

625 CryptoSwift 33.65 L G 18 5 G Zlib

627 IDZSwiftCommonCrypt 31.55 L G 16 8 G MIT o

56/186 5. Results

070 themis 31.05 L L 32 25 - Apache-2.0

624 crypto 24.54 G G 20 4 M MIT

642 CryptoKitten 24.08 G G 6 3 M -

623 Crypto 23.94 M M 4 2 G MIT

629 BlueCryptor 23.57 L G 17 5 M Apache-2.0

632 CryptoJS.swift 23.38 G G 11 2 G MIT

657 BlueSSLService 23.31 G G 4 6 G Apache-2.0

614 cryptokit 22.39 L G 5 3 M BSD-3-Clause

621 swift-sodium 20.28 L G 16 5 G ISC 640 CryptoKit 20.08 G G 7 3 M MIT

638 Perfect-Crypto 19.58 G G 20 6 G Apache-2.0

647 CommonCrypto 18.08 G G 5 3 M MIT

644 WebCrypto.swift 17.41 G G 5 1 G MIT

626 crypto 17.27 M M 2 1 M -

653 CryptoWithSwift 16.58 M M 3 2 M -

658 SwiftCommonCrypto 16.56 M M 4 1 M -

628 AsymmetricCrypto 16.31 G G 11 8 M -

639 CommonCrypto 15.71 M M 2 2 M -

633 CryptoEssentials 15.36 G G 5 3 M -

636 Crypto 15.08 G M 5 4 M -

630 SwiftSSL 14.53 G M 4 2 M - 648 CryptoSwift 14.36 L G 12 4 M -

643 SwiftCrypt 14.35 G G 9 6 M -

645 RDHCommonCrypto 13.72 G G 3 2 M -

649 SwiftCrypto 13.12 G M 4 5 M -

637 Crypto 12.93 M M 2 3 M -

641 Crypto 12.79 G M 3 3 M -

646 CryptoSwift 12.48 L G 10 3 M -

650 TomatoCrypto 12.36 L G 12 5 M -

655 UTSwiftCrypto 12.28 G M 4 1 M -

656 TextCrypto 12.25 M M 5 2 M -

654 SwiftCrypto 12.19 M M 4 3 M -

634 Crypto 11.9 M M 3 5 M -

651 CryptoKitten 11.64 L G 8 3 M -

631 Cryptography 11.51 G G 7 4 M -

652 CommonCryptoSwift 11.3 M M 4 1 M -

635 Crypto 11.22 G G 3 1 M - 622 Security(S) - - - 1 1 - Own License Table 18: Swift-interface library overview

57/186 5. Results

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 19 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the Swift libraries.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.22 12.63 15.71 17.56 21.34 33.65 Age in days 50.00 290.50 490.00 597.87 735.50 3294.00 Days since updated 20.00 70.50 211.00 263.92 380.50 1080.00 Authors 1.00 1.00 1.00 1.08 1.00 2.00 Contributors 0.00 0.00 1.00 3.72 2.00 54.00 LOC 0.01k 0.39k 1.16k 2.76k 2.65k 47k Table 19: Swift statistics

5.8. Java Libraries

The collection of libraries for the interface language Java resulted in a list of 65 libraries which are reasonably current and popular. On average, these libraries have an impact of 18.35, whereas the lowest impact is 11.26 and the highest 38.94 on a scale of 0 through 40. In the Java Standard Libraries which are part of, for example, OpenJDK, there is a cryptographic framework called Java Cryptography Extension (JCE). This can be con- sidered to be the cryptographic standard library with a Java interface. However, the JCE does not implement the cryptographic algorithms itself. It only provides the API so a provider for the cryptographic functions is still needed. JCE provides a high and a low level interface and it is well documented. Apart from the standard library, commons-crypto, org.globaltester.cryptoprovider, java- aes-crypto, tweetnacl-java and jnacl have the highest impacts. For general purpose, commons-crypto might be the best alternative to the JCE. It offers both a high and a low level interface and is well documented. However, the number of features is quite low for both the high and low level cryptographic functions. The library org.globaltester.cryptoprovider provides high and low level functions as well as a high level interface. Due to its minimal documentation it is only appropriate for experienced developers. java-aes-crypto is a rather small library which only provides an Android class to encrypt and decrypt strings. The high number of 465 GitHub stars, however, shows the high demand for such a library. It is most appropriate for inexperienced developers which want to do this specific kind of cryptography in this specific environment.

58/186 5. Results

The last two are also small libraries, providing curve cryptography. As tweetnacl-java offers both a low and a high level interface and has a more detailed documentation it might be preferred over jnacl.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

136 wolfssl 38.94 L L 35 36 - GPL-2.0, commercial

264 commons-crypto 34.21 L L 14 6 - Apache-2.0

070 themis 31.05 L L 32 25 - Apache-2.0

299 org.globaltester.cryptopr 28.6 M M 22 29 M GPL-2.0, GPL-2.0+ ovider 254 java-aes-crypto 28.5 M G 9 5 L MIT

261 tweetnacl-java 28.02 L L 6 3 - MIT

257 jnacl 27.23 G G 4 3 G BSD-2-Clause

319 jasypt 27.19 L L 27 28 M -

255 spring-crypto-utils 26.83 G L 7 5 L Apache-2.0

270 java-crypto-conditions 25.79 G G 5 6 M Apache-2.0

263 cryptacular 25.58 L L 21 24 M Apache-2.0, LGPL-3.0

267 hadoop-crypto 25.25 G G 6 8 M Apache-2.0

262 tink 23.93 L L 22 13 L Apache-2.0

281 virgil-sdk-java-android 22.81 L L 23 27 - BSD-3-Clause

277 Java-PBKDF2 22.62 G G 4 3 M BSD-2-Clause 260 Cryptolite 21.82 G G 10 7 M MIT

266 cryptolib 21.39 G G 11 4 M AGPL-3.0, commerciallic ence 273 java-aes-crypto 20.69 G G 9 4 M MIT

274 cryptobox-jni 20.45 G G 4 4 M GPL-3.0

268 oversec_crypto 20.09 L L 50 25 M GPL-3.0

288 java-crypto-utils 19.42 G G 4 4 M -

256 Whitebox-crypto-AES-ja 19.39 G G 5 3 M GPL-3.0, LGPL-2.1+ va 315 chloride 19.17 M G 4 3 M - 280 org.globaltester.cryptopr 19.07 M M 22 29 M - ovider 258 aerogear-crypto-java 18.71 G G 6 7 M -

306 amv-highmobility-crypto 18.63 G G 10 6 M - tool-wrapper

265 CloudCrypto 18.36 L L 9 7 M -

303 -crypto 18.33 L L 14 19 M -

271 android_crypto 18.31 G G 6 6 M -

304 crypto-exist-java-lib 17.75 G G 4 5 M -

312 tweetPepper 17.59 L L 13 7 M -

283 Cryptography 17.46 G G 6 2 M -

59/186 5. Results

317 jnacl 17.41 G G 4 3 M -

305 drill-crypto-functions 16.98 M M 5 3 M -

307 sec-crypto-utils-2017-ist 16.95 M M 4 2 M -

294 crypto-function 16.8 G G 2 3 M -

286 crypto-service 16.44 M M 2 2 M -

298 EllipticCurveCryptograp 16.35 G G 3 2 M - hy

300 cryptonit-applet 16.3 G G 5 9 M -

316 Java-Crypt 16.28 L L 8 11 M -

276 crypto-utils 15.9 M M 4 0 M -

278 crypto-signatures 15.75 M G 4 2 M -

293 AbarrowCrypto 15.26 L L 14 4 M -

259 jackson-crypto 15.25 G G 7 3 M -

310 Whitebox-crypto-AES-ja 15.15 G G 5 3 M - va 253 Cryptosuite 14.94 M M 4 1 M -

285 ahome-crypto 14.36 M G 5 1 M -

313 idcrypt 13.66 G G 9 9 M -

301 CryptoMarketsAPI 13.63 G G 3 3 M -

311 djanpto 13.58 M M 4 4 M -

284 crypto-util 13.37 G G 9 3 M -

309 java-cryptobox 13.25 M M 3 2 M -

287 aws-crypto-tools-java 13.23 M M 5 6 M -

269 Crypto 13.21 G G 2 5 M -

314 memlo 13.2 M M 5 5 M - 302 CloudCrypto 13.16 G G 12 29 M -

295 pdfbox-crypto 13.13 G G 3 7 M -

289 cryptoutils 12.95 G G 19 5 M -

290 gwt-crypto 12.81 L L 49 41 M -

275 trestor-crypto-java 12.58 G L 4 4 M -

292 CryptoLibrary 12.5 M G 3 4 M -

279 CryptoManager 12.36 M G 3 3 M -

296 commons-crypto 12.24 G G 4 9 M -

282 smcrypto 11.94 G G 12 19 M -

272 CryptokCodeCracker 11.39 G G 49 16 M -

308 cryptography-samples 11.33 G G 9 11 M -

297 cryptoGriffin 11.27 L L 32 40 M - 252 JDK(S) - - - 1 1 - GPL-2.0 + linking excep- tion 291 dna-crypto - G G 4 2 M -

318 bouncycastlecrypto157 - L L 76 65 M -

60/186 5. Results

Table 20: Java-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 21 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the projects.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.27 13.47 16.98 18.48 21.04 38.94 Age in days 63.00 402.75 703.50 858.49 1008.00 3934.00 Days since updated 20.00 73.50 217.00 334.65 488.25 2659.00 Authors 1.00 1.00 1.00 1.24 1.00 4.00 Contributors 0.00 0.00 1.00 3.25 3.00 49.00 LOC 0.26k 0.95k 2.06k 28k 9.01k 795k Table 21: Java statistics

5.9. Objective-C Libraries

The collection of libraries for the interface language Objective-C resulted in a list of 40 libraries which are reasonably current and popular. On average, these libraries have an impact of 16.74 , whereas the lowest impact is 11.21 and the highest 31.05 on a scale of 0 through 40. There is a cryptographic standard library for Objective-C which is called Security in the list below. As mentioned in subsection 5.7 Apple provides several APIs for security related features amongst others the SecKey API for asymmetric keys and the Common Crypto Library. In the scope of this report all of these are treated as one standard library which offers a large range of features. It has detailed documentation and is accessible through a high and low level interface and thus suitable for both experienced and inexperienced developers. themis, Objective-C-RSA, tweetnacl-objc and aerogear- cordova-crypto are the libraries with the highest impact. Apart from themis none of these represent a real alternative to the standard library. They only have very few features and a high level interface with however passable documentation. themis has more features, good documentation, although like the others only offers a high level interface.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

070 themis 31.05 L L 32 25 - Apache-2.0

616 Objective-C-RSA 24.64 M G 2 3 - BSD-3-Clause

584 tweetnacl-objc 23.53 G G 5 3 M -

612 aerogear-cordova-crypto 23.48 G G 12 21 L Apache-2.0

61/186 5. Results

600 INBSecurityCrypto 22.98 G G 7 8 M MIT

614 cryptokit 22.39 L G 5 3 M BSD-3-Clause

621 swift-sodium 20.28 L G 16 5 G ISC 603 aerogear-crypto-ios 18.83 G G 6 2 - Apache-2.0

586 react-native-aes 18.69 M M 6 2 G GPL-3.0 598 react-native-des 18.04 G G 6 4 G MIT 597 react-native-ecc 17.42 G G 4 5 M MIT 591 LaraCryptObjC 16.36 G G 6 3 M -

617 MIHCrypto 16.25 L G 14 10 - MIT

588 RSA_crypto 16.14 M G 5 4 M -

609 nv-ios-digest 16.0 G G 3 3 M -

596 Encryption-Key 15.93 M M 3 1 M MIT

606 iOS-Crypto-API 15.8 G G 3 4 M -

611 ObjC-PyCrypto 15.27 L G 8 2 M -

607 cocoa-crypto 14.98 G G 2 1 M -

604 NuCrypto 14.91 M G 6 4 M -

592 CommonCrypto-module- 14.88 M M 3 2 M - clang

589 nu-crypto 14.86 L G 11 14 M -

601 CryptoCoding 14.68 G G 4 3 M -

610 CommonCrypto 14.5 M G 2 2 M -

608 RadCrypto 14.49 L G 11 14 M -

605 NSData-Crypto 14.18 M M 3 1 M -

585 crypto 14.16 G G 4 3 M -

602 GMEllipticCurveCrypto 14.07 G G 2 7 M -

594 cryptobox-ios 14.03 G G 8 4 M -

599 LFCommonCrypto 13.71 G G 3 3 M -

613 crypto 13.63 M M 2 2 M -

615 ReactiveCryptor 13.61 G G 3 4 M -

590 EasyCrypto 13.21 L G 4 3 M -

595 IRCrypto 12.42 L G 6 4 M -

587 Cryptos 11.49 M M 2 3 M -

593 iOS-and-Java-AES-Cryp 11.21 G G 3 2 M - 618 chilkat - L L 42 35 M - 619 objc-crypto-lib - G G 6 4 M -

620 bdangerous-crypto - G G 11 7 M - 622 Security(S) - - - 1 1 - Own License Table 22: Objective-C-interface library overview

In the table above the following symbols and short forms were used.

62/186 5. Results

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 23 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the Objective-C libraries.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.21 14.14 15.12 16.73 18.20 31.05 Age in days 64.00 636.00 1029.50 1129.33 1533.75 3294.00 Days since updated 20.00 145.50 486.50 660.64 809.75 3209.00 Authors 1.00 1.00 1.00 1.06 1.00 2.00 Contributors 0.00 0.00 0.00 1.69 1.25 19.00 LOC 0.08k 0.78k 1.65k 6.85k 2.78k 149k Table 23: Objective-C statistics

5.10. Go Libraries

The collection of libraries for the interface language Go resulted in a list of 69 libraries which are reasonably current and popular. On average, these libraries have an impact of 19.72, whereas the lowest impact is 11.22 and the highest 39.48 on a scale of 0 through 40. There is a crypto package in the Go standard library which provides cryptographic functions. It has a low as well as a high level interface and is well documented. Therefore it is suited for both experienced and inexperienced developers. Apart from the standard library, go-crypto, crypto (ID 321), sftp (ID 391) and sftp (ID 392) are the libraries with the highest impact. Out of these, sftp (ID 391) might be the most interesting one. It is rather small and offers a high level interface for both high and low level cryptographic functions. As it provides a rather specific function, which is ‘support for file system operations on remote ssh servers using the SFTP subsystem’ it is more appropriate for experienced developers. The other two libraries are forks of either Go’s crypto package or the sftp library.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

321 crypto 39.48 L L 40 31 - BSD-3-Clause

332 go-crypto 39.45 L L 43 36 - BSD-3-Clause

325 crypto 39.17 L L 40 31 - BSD-3-Clause

324 crypto 38.01 L L 39 30 M -

391 sftp 37.33 L L 9 7 - BSD-2-Clause

392 sftp 37.17 L L 9 7 M -

63/186 5. Results

330 kyber 36.88 L L 20 12 - MPL-2.0

390 sftp 36.29 L L 9 11 - BSD-2-Clause

070 themis 31.05 L L 32 25 - Apache-2.0

351 pkcs11key 30.43 G G 4 9 M BSD-2-Clause

329 libsodium-go 30.01 G G 10 3 L ISC

326 go-jose 29.69 L L 13 16 - Apache-2.0

074 milagro-crypto-c 29.28 L L 20 16 L Apache-2.0

356 golang-crypto 28.72 L L 35 28 L -

345 go-libp2p-crypto 27.72 G G 6 6 M MIT

393 sftp 25.47 G L 7 7 M -

333 whirlpool 25.08 G G 5 2 M BSD-3-Clause

370 openpgp 24.81 L L 11 13 M -

331 go-crypto 24.13 G G 22 10 M Apache-2.0

355 go-crypto 23.42 G G 8 4 M MIT

328 crypt2go 23.05 G G 6 2 G BSD-3-Clause

327 crypto 22.58 G G 9 7 L MIT

388 pki 21.49 G G 3 11 M ISC

336 cryptokit 21.21 G G 10 3 L MIT

364 gear-auth 20.57 G G 5 3 - MIT

376 virgil-crypto-go 19.8 M M 2 0 M -

368 go-openssl 19.51 M M 5 1 M -

322 crypto 19.11 G G 12 10 M -

352 fastrand 19.09 G G 4 3 - MIT 373 cryptoconditions 18.97 G G 5 4 M -

357 cf-tls 18.15 L L 13 16 M - 341 crypto 17.73 M M 3 0 M -

362 golang-crypto-tls 17.57 L L 15 18 M -

366 token 17.33 M M 3 1 M - 383 cryptohelpers-go 17.17 M M 3 1 M -

381 tlsdialer 16.84 G G 3 9 M - 323 crypto 16.82 L L 14 8 M -

378 EcDSA--EcDH-in-Go 16.52 G G 3 2 M - 382 go-cryptopia 16.24 G G 3 2 M -

342 crypto 16.14 M M 6 2 M -

369 crypto-go 16.09 G G 6 2 M -

359 crypto11 15.79 G G 5 10 M -

349 go-cryptoapi 15.39 G G 3 4 M -

358 cryhel 14.88 M M 3 2 M -

350 go-crypto 14.85 G G 5 6 M -

334 go-crypto 14.57 G G 5 1 M -

339 crypto 14.56 M M 5 3 M -

64/186 5. Results

374 cryptoauth 14.5 G G 3 5 M -

353 gosshtool 14.36 G G 4 4 M -

335 cryptogo 14.28 G G 6 4 M -

354 crypto-conditions 13.98 G G 10 7 M -

384 go-sha3 13.82 G G 8 5 M -

361 bletchley 13.75 G G 6 7 M -

340 gocrypto 13.67 M M 5 8 M -

338 crypto 13.62 G G 11 3 M -

385 godjan 13.61 M M 4 1 M -

363 hydrogen 13.58 G G 6 3 M -

367 aws-crypto-tools-go 13.57 M M 6 6 M -

360 randomstring 13.4 M M 4 2 M -

344 cryptoauth 13.36 G G 3 5 M -

343 ecdh 13.33 M M 4 4 M - 346 cryptohelper 13.29 M M 3 2 M -

380 gocrypto 13.21 G G 6 1 M -

379 cmac 13.0 M M 3 2 M - 386 gotls 12.98 L L 12 17 M -

375 hog 12.95 M M 3 1 M -

372 gpgeez 12.94 L L 9 12 M -

389 tlsrp 12.86 L L 14 17 M -

394 ca 12.85 M M 3 9 M - 348 sm_crypto_golang 12.64 G G 7 2 M -

337 crypto 12.52 G G 2 3 M -

347 go-dkim 12.4 G G 4 8 M -

371 sodiumbox 12.38 M M 4 2 M - 377 shortid 12.22 M M 4 2 M - 365 cryptostack 11.71 G G 4 5 M -

387 bn448 11.21 G G 2 2 M - 320 Crypto(S) - - - 1 1 - BSD-like + patent grant Table 24: Go-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 25 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the projects.

65/186 5. Results

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.21 13.58 16.38 19.71 23.60 39.48 Age in days 64.00 347.25 778.50 852.00 1089.50 2631.00 Days since updated 13.00 80.25 200.50 311.87 538.75 1060.00 Authors 1.00 1.00 1.00 1.42 1.00 5.00 Contributors 0.00 0.00 1.00 11.36 4.00 140.00 LOC 0.06k 0.48k 1.27k 8.20k 7.47k 62k Table 25: Go statistics

5.11. PHP Libraries

The collection of libraries for the interface language PHP resulted in a list of 41 libraries which are reasonably current and popular. On average, these libraries have an impact of 18.72, whereas the lowest impact is 11.21 and the highest 40 on a scale of 0 through 40. In the PHP standard library there are already many cryptographic functions included. Amongst them are low level and high level functions. The PHP standard library offers both a high and a low level interface and is fully documented. For this reason it should be appropriate for most developers. Apart from the standard library phpseclib, php-encryption, libsodium-php and virgil-sdk- crypto-php are the libraries with the highest impact. Of these php-encryption, libsodium-php and virgil-sdk-crypto-php are designed to be easy to use and should therefore be appropriate for inexperienced developers. They all provide at least a high level interface and are well documented which justifies their claim to be easy to use. libsodium-php in addition provides an extension to the popular libsodium library. phpseclib provides a high level interface and high and low level cryptographic functions. As it is well enough documented it may also be appropriate for inexperienced developers.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

426 php-src 40.0 L L 60 48 - PHP-3.01

136 wolfssl 38.94 L L 35 36 - GPL-2.0, commercial

431 phpseclib 34.95 L L 32 26 - MIT

428 php-encryption 32.73 L G 23 17 - MIT

070 themis 31.05 L L 32 25 - Apache-2.0

430 libsodium-php 30.5 G G 13 1 - BSD-2-Clause

404 virgil-sdk-crypto-php 28.6 L G 3 3 M BSD-3-Clause

403 windwalker-crypt 24.98 G G 11 6 G LGPL-2.0+, LGPL-3.0+

427 php-crypto 23.24 L G 18 5 G PHP-3.01

395 CryptoLib 20.01 G G 4 4 - AGPL-3.0+

416 php-Crypto 19.25 G G 16 15 M -

429 halite 19.17 L G 17 10 M -

66/186 5. Results

419 dterranovaCryptoBundle 19.14 M M 5 3 M -

423 security 18.82 G G 11 11 M -

405 php-crypto 18.62 M M 8 2 M -

408 CryptoKit 18.26 G G 4 4 M -

413 crypto-bundle 17.74 L G 6 4 M -

407 cryptal 16.99 L G 21 12 M -

412 CwsCrypto 16.66 G G 7 5 M -

417 crypto-encoding 16.28 G M 9 9 M -

432 crypto-types 16.24 L G 14 8 M -

418 crypto-bridge 16.23 G G 5 7 M -

433 pkcs5 16.21 G G 5 4 M -

434 pkcs8 16.21 G M 10 7 M -

399 crypto 16.02 G M 6 3 M -

396 Crypto 14.73 G M 2 3 M -

397 CryptoApi 14.66 G G 4 8 M -

409 crypto_lib 14.47 M M 3 2 M -

414 cryptosecureprng 14.13 M M 3 2 M -

410 dynamic-crypto 13.9 G G 5 4 M -

425 Inner-Cryptography 13.34 G M 6 3 M -

402 cryptomute 13.08 G G 11 6 M -

424 silverstripe-cryptofier 12.88 G G 6 4 M -

398 crypto 12.77 M M 3 2 M -

415 Cryptography 12.73 M M 5 2 M -

406 cryptojs-aes-php 12.7 M M 7 4 M -

411 Crypto228 12.23 M M 2 0 M -

422 yacl 12.03 G G 16 2 M -

401 php-openssl-cryptor 11.48 M M 6 0 M -

421 crypto-utils-php 11.24 M M 3 1 M -

400 crypto 11.23 M M 7 0 M -

420 JsCrypto_for_PHP 11.21 G G 3 1 M - Table 26: PHP-interface library overview

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 27 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the projects.

67/186 5. Results

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.21 13.14 16.23 18.71 19.23 40.00 Age in days 68.00 348.00 737.50 957.07 1082.75 6726.00 Days since updated 20.00 46.00 213.50 287.69 401.00 1182.00 Authors 1.00 1.00 1.00 1.60 1.00 19.00 Contributors 0.00 0.00 0.00 23.79 2.00 779.00 LOC 0.07k 0.40k 1.10k 49k 4.23k 1619k Table 27: PHP statistics

5.12. Python Libraries

The collection of libraries for the interface language python resulted in a list of 41 libraries which are reasonably current and popular. On average, these libraries have an impact of 21.61, whereas the lowest impact is 11.26 and the highest 38.94 on a scale of 0 through 40. There is a cryptographic standard library for python which is called CryptographicServices in the list below. Although the standard libraries couldn’t be analysed to calculate an impact these are considered to be under the most important in reference to impact. In this case the standard library is very small, offers hardly any functionality and only has a high level interface. Therefore most developers might be more interested in one of the following libraries. Apart from the standard library, wolfSSL, PyCryptodome, Cryptography, PySodium and PyOpenSSL are the five libraries with the highest impact. From looking at our data Cryptography is a good alternative to the python standard library. As it offers a lot of primitive and high level features and has a high and low level interface with good documentation it is an attractive library for both experienced and inexperienced developers. PyCryptodome is a nice alternative to Cryptography with however, only a high level interface. While Cryptography is of the type Standalone, PySodium and PyOpenSSL are Wrappers for Libsodium and OpenSSL respectively. For people who want to stick with well known libraries these might be more interesting, although both do not provide an extensive range of features. Especially PyOpenSSL only has a high level interface and is therefore less attractive for experienced developers looking for a lot of configuration options. It does however, have more documentation than PySodium. Although the wolfSSL library has the highest impact and seems to offer both primitive and high level features this library seems to specialise in high level features and only offers a high level interface.

Size Features ID Name Impact In Ov Pri Hi EoU Licence

136 wolfssl 38.94 L L 35 36 - GPL-2.0, commercial

699 pycryptodome 37.18 L L 52 29 - BSD-2-Clause, PublicDo main 702 cryptography 36.91 L L 44 39 - Apache-2.0, BSD-3-Claus e, PSFLicense

708 pysodium 36.43 G G 7 2 G BSD

732 pyopenssl 34.77 G L 15 22 - Apache-2.0

004 cryptominisat 33.71 L L 14 11 L MIT

68/186 5. Results

700 pynacl 32.92 L L 29 11 - Apache-2.0

070 themis 31.05 L L 32 25 - Apache-2.0

074 milagro-crypto-c 29.28 L L 20 16 L Apache-2.0

711 tls 29.26 G G 8 10 G Apache-2.0, BSD-3-Claus e 697 pycryptopp 27.97 L L 47 18 G GPL-2.0, MIT, TGPPL-1 .0, -1.0

731 pycrypto 26.77 L L 46 19 - Public Domain, Python2. 2License 706 pysha2 25.93 M M 4 3 M MIT

717 sjcl 24.75 M M 4 3 M BSD-3-Clause

701 pyaes 23.04 G G 10 2 G MIT

710 oscrypto 22.21 G L 23 21 M MIT

704 crypto_utils 22.02 G G 8 2 M GPL

725 django-x509 21.2 G G 5 7 M -

716 CryptographyKit 20.3 L L 6 4 G -

705 python-cryptoplus 19.7 G L 26 7 M -

712 crysp 17.75 G G 13 5 M -

714 python-csiphash 17.07 G G 5 2 M -

707 m2crypto 16.33 G L 26 23 M -

720 mcrypt 15.72 M M 2 0 M -

718 M2Crypto 14.57 G L 26 23 M -

715 Elliptical-Curve-Cryptog 14.48 G G 8 7 M - raphy

703 crypto 14.45 G G 7 6 M -

730 cypher 14.2 M M 3 0 M -

709 django-cryptography 13.94 G G 6 4 M -

727 cryptodev-python 13.93 G G 8 4 M -

728 Rabin_cryptogram 13.73 M M 2 0 M -

719 adver-neural-crypto 13.56 M M 7 5 M -

726 senic.cryptoyaml 13.5 M M 4 2 M -

721 cryptosystem-RSA 13.3 G G 3 2 M -

722 python-ifalg 13.14 G G 11 5 M -

724 otw 12.7 M M 5 8 M - 713 cryptoshop 12.35 G M 13 4 M -

729 Cryptopie 11.77 M M 5 3 M -

723 noxcrypt 11.26 G G 9 1 M - 698 CryptographicServices(S - - - 8 0 - PSFL )

733 pyAES - M M 6 2 M - Table 28: Python-interface library overview

69/186 6. Conclusion

In the table above the following symbols and short forms were used.

• Size In/Ov (Internal/Overall): Project size compared to other libraries with the same interface language (In) and compared to all languages (Ov). Small (M), medium (G), large (L), dash (-) if no data available.

• Features Pri/Hi (Primitive/High): Number of features.

• EoU (Ease-of-Use): easy (L), normal (G), difficult (M), dash (-) if no data available.

Table 29 provides an overview of the impact, age in days, the time elapsed since the projects were last updated, number of authors and contributors and the size of the Python libraries.

Min 1st Qu. Median Mean 3rd Qu. Max Impact 11.26 13.93 19.70 21.59 28.62 38.94 Age in days 261.00 535.50 929.00 1473.69 1629.00 6841.00 Days since updated 20.00 48.50 191.00 305.23 519.50 929.00 Authors 1.00 1.00 1.00 1.44 2.00 4.00 Contributors 0.00 0.00 1.00 12.38 11.00 151.00 LOC 0.12k 0.71k 2.03k 24k 34k 259k Table 29: Python statistics

6. Conclusion

Software developers today use cryptographic libraries to implement security concepts. They are faced with choosing one out of a large variety of cryptographic libraries for diverse programming languages. This is rendered difficult as there is no standardized conception of different properties of cryptographic libraries. Within this report we established which library features are relevant for the purpose of comparing cryptographic libraries, and defined these. Additionally, a list of libraries, which were considered to be relevant, was derived. Ultimately this report provides a classification of over 700 cryptographic libraries. This classification can be used by developers to ascertain which library fits their abilities and requirements. Furthermore, it may be used as a basis for a wide range of studies on cryptographic libraries. By way of contribution, this classification is the first of its kind, providing an overview that was generated in a uniform way over all libraries and languages. No form of an overview or uniform data collection on cryptographic libraries existed prior to this classification. The same can be said for the collection of the characteristics of the libraries.

6.1. Future work

The work done in this report is some very basic work that can serve as a basis for a large amount of different research topics. In this report we provided a general overview of the most important characteristics of the relevant libraries in twelve different programming languages. For this reason the type of research that might follow this work can be very diverse.

70/186 7. Acknowledgements

One basic direction in which research might go is the extension of the list of characteristics we collected for each library. Even though we tried to come up with the most important features, different perspectives or different goals could lead to additional characteristics that are worth adding to our list. Another direction in which research might go is the improvement of various characteristics of cryptographic libraries. As it is important to know about the current distribution of those characteristics this report forms an essential basis for that type of research. Furthermore the use of libraries by each other could be analysed automatically. By means of data mining, all libraries we found could be scanned for dependencies in between each other. By using our collection of libraries as a basis, this could be done to find out which libraries are used, that is, dependend upon most. Finally another direction of research might be to analyse availability of cryptographic libraries. This could be done with respect to programming language, interface level, specific cryptographic functions and many other characteristics. Eventually one could suggest what kind of new cryptographic library would be worth developing.

6.2. Remarks

While working on this report, one of our priorities was the reproducibility of our work. Our goal was that this classification could be repeated with similar results given this report and the automated data collection tool we created. One thing we did in order to fulfil this requirement was to thoroughly document the way we filtered out relevant libraries as can be seen in subsection 3.3. This was done by reporting the sites we used to look up the libraries as well as the search terms and filters we applied. In addition we documented the criterion we used to determine if a library is relevant to us. In section 4 we described the individual characteristics we determined for each library. This should make it possible to repeat the data elicitation of each characteristic. So finally this report should give guidance if one tries to repeat the two steps of collecting all relevant libraries and determining their characteristics. While doing so, one might assume that some characteristics haven’t changed after we wrote our report like for example the main language. Other features in turn will definitely need to be confirmed or checked again like for example the supported features and the date of the last commit.

7. Acknowledgements

We would like to thank our supervisor Kai Mindermann for his guidance, advice and collaboration during our work on this report. His ideas, suggestions and experience added significantly to our work, which would not have come into existence in this manner without him.

71/186 Glossary

Glossary

ABI Application binary interface. API Application programmable interface. LOC Lines of Code. readme is a file which contains information on software and is usually provided as part of the software repository . VCS version control system.

Acronyms

ISC Internet Systems Consortium. JCE Java Cryptography Extension. MAC Message Authentication Code. PKC Public Key Cryptography. PKI Public Key Infrastructure. PYPL PopularitY of Programming Language.

References

[1] Ashraf Abusharekh and Kris Gaj. ‘Comparative analysis of software libraries for public key cryptography’. In: Software Performance Enhancement for Encryption and Decryption, SPEED (2007), pp. 11–12. [2] Aleem Khalid Alvi and Mohammad Zulkernine. ‘A natural classification scheme for software security patterns’. In: Dependable, Autonomic and Secure Computing (DASC), 2011 IEEE Ninth International Conference on. IEEE. 2011, pp. 113–120. [3] Block cipher mode of operation. 2017. url: https://en.wikipedia.org/wiki/ Block_cipher_mode_of_operation#Authenticated_encryption (visited on 04/05/2017). [4] Michael Bowler. Truck Factor. 2005. url: http://www.agileadvice.com/ 2005/05/15/agilemanagement/truck-factor/ (visited on 11/05/2017). [5] Nelly Delgado, Ann Gates and Steve Roach. ‘A taxonomy and catalog of runtime software-fault monitoring tools’. In: IEEE Transactions on software Engineering 30.12 (2004), pp. 859–872. [6] Everybody is wrong! (About language popularity). 2013. url: https://regebro. wordpress . com / 2013 / 02 / 18 / everybody - is - wrong - about - language - popularity/ (visited on 30/03/2017). [7] Philipp Keck. ‘Analysing and improving the crypto ecosystem of Rust’. MA thesis. Universitätsstraße 38D–70569 Stuttgart: University of Stuttgart, 2017. [8] Dudenredaktion (o. J.): „Klassifikation“. Klassifikation, die. url: http://www. duden.de/node/724927/revisions/1119957/view (visited on 30/08/2017).

72/186 References

[9] Luigi Lo Iacono and Peter Leo Gorski. ‘I Do and I Understand. Not Yet True for Se- curity APIs. So Sad’. In: 2nd European Workshop on Usable Security (EuroUSEC). 2017. [10] Nenad Medvidovic and Richard N Taylor. ‘A classification and comparison frame- work for software architecture description languages’. In: IEEE transactions on Software Engineering 26.1 (2000), pp. 70–93. [11] V.K. PACHGHARE. CRYPTOGRAPHY AND INFORMATION SECURITY. PHI Learning, 2015. isbn: 9788120350823. [12] G. Paul and S. Maitra. RC4 Stream Cipher and Its Variants. Discrete Mathematics and Its Applications. Taylor & Francis, 2011. isbn: 9781439831359. [13] Dr. Markus Siepermann Prof. Dr. Richard Lackes. Taxonomie. url: http:// wirtschaftslexikon.gabler.de/Archiv/76261/taxonomie-v8.html (visited on 30/08/2017). [14] Acting Secretary Quynh Dang Rebecca M. Blank. ‘Recommendation for Applica- tions Using Approved Hash Algorithms’. In: National Institute of Standards and Technology NIST Special Publication 800-107.Revision 1 (2012), pp. 70–93. [15] Robert C Seacord and Allen D Householder. A structured approach to classifying security vulnerabilities. Tech. rep. DTIC Document, 2005. [16] Mary Shaw and Paul Clements. ‘A field guide to boxology: Preliminary classi- fication of architectural styles for software systems’. In: Computer Software and Applications Conference, 1997. COMPSAC’97. Proceedings., The Twenty-First Annual International. IEEE. 1997, pp. 6–13. [17] Stack Overflow Developer Survey 2016. 2016. url: https://stackoverflow.com/ insights/survey/2016#technology (visited on 28/03/2017). [18] Stack Overflow Developer Survey 2017. 2017. url: https://stackoverflow.com/ insights/survey/2017#technology (visited on 28/03/2017). [19] H.C.A. van Tilborg and S. Jajodia. Encyclopedia of Cryptography and Security. En- cyclopedia of Cryptography and Security. Springer US, 2014. isbn: 9781441959065. [20] TIOBE - Go Programming Language. 2017. url: https://www.tiobe.com/ tiobe-index/go/ (visited on 31/03/2017). [21] TIOBE Index Definition. 2017. url: https://www.tiobe.com/tiobe-index/ programming-languages-definition/ (visited on 31/03/2017). [22] J.R. Vacca. Public Key Infrastructure: Building Trusted Applications and Web Services. CRC Press, 2004. isbn: 9780203498156. [23] Xiaoyun Wang, Yiqun Lisa Yin and Hongbo Yu. ‘Finding collisions in the full SHA-1’. In: Annual International Cryptology Conference. Springer. 2005, pp. 17– 36. [24] D. Wätjen. Kryptographie: Grundlagen, Algorithmen, Protokolle. Spektrum Akademischer Verlag, 2008. isbn: 9783827419163. [25] Wikipedia - TIOBE Index. 2017. url: https://en.wikipedia.org/wiki/ TIOBE_index (visited on 31/03/2017). [26] wolfSSL Homepage. 2017. url: https://www.wolfssl.com/wolfSSL/Home. html (visited on 05/09/2017).

73/186 A. Detailed Library Table

A. Detailed Library Table

In this appendix the complete table of all libraries can be found. It contains all data we collected about those libraries. In the following table the following symbols and short forms were used.

• ID: Individual identification number; used consistently throughout the report.

• I. L.: Interface language.

• M. L.: Main language.

• I. Lvl.: Interface level (High, Low or both).

• Type: Standalone (Stan), Wrapper (Wrap), Fork or Reimplementation (Reim).

• Related: Related libraries as described in section 4.

• Depen.: Dependencies of the library as described in section 4.

• kLOC: Number of thousand lines of code.

• People: The number of people that worked on the library, split up into authors (A) and contributors (C).

• Doc. Kind: Type of documentation (any of Readme, Website and Download).

• Doc. Com. Completeness of the documentation (any of API-listed, examples and explanations).

• Dates: First published and last modified.

• EAM: Encryption and Authentication Modes.

• MAC: Message Authentication Code.

• PKC: Public Key Cryptography.

• PKI: Public Key Infrastructure.

74/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL CMP, CSR,DTLS, CMS, DPD, EST, GPG,IKE, IPsec, OCSP, PE, HTTPS, PEM,PoSE, PGP, SEND, SPNEGO, SSL, TLS, X.509 SASL, AS2, AKA,CSR, CMP, CMS, DTLS, DPD, DCII,GPG, EST, IKE, OTR, OCSP, PE, HTTPS, PEM,RTD, PGP, SRTP, SSL, TLS, SEND, AS1, AS2,EST, CMP, IKE, SEND, TLS HTTPS, CMP, CMS,HTTPS, EST, SCP, SEND, SSH IKE, X.509 https://github.com/msoos/c ryptominisat https://github.com/randomb it/botan https://github.com/weidai11 https://github.com/KDE/qc a /cryptopp https://github.com/KDE/lib kleo PKI PKI PKI PKI PKI CMP,PKCS,SET, X.509 OCSP, PKIX, CMP,OCSP, Identrus, PKIX, SET, X.509 PKCS, CMP,PKIX, SET PKCS, CMP, SET Licence Licence Licence Licence Licence MIT BSD-2-Clause Public Domain,ostSoftwareLicense Bo 1.0 LGPL-2.1 GPL-2.0, GPL-2.1 PKC PKC PKC PKC PKC DH,RSA DSA, DSS, DH,ECDH, DSA,ElGamal, DSS, ECDSA, liece, RSA McE- DH, DSA, DSS, El- Gamal, LUC, RSA DH Dates Dates Dates Dates Dates 2009-08-10 2017-08-17 2006-05-18 2017-08-16 2002-10-04 2017-08-17 2003-07-01 2017-07-08 2015-12-08 2017-08-16 MAC MAC MAC MAC MAC Doc. Com. Examples Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations HMAC HMAC, Poly1305 HMAC, Poly1305, - VMAC Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Doc. Kind Readme, Website, Download Doc. Kind Readme, Website, Download 1 2 3 30 1 1 55 13 66 50 People A C People A C People A C People People A C A C 61 Hash Hash Hash Hash Hash 93 20 167 106 kLOC kLOC kLOC kLOC kLOC 33.71 37.28 31.71 34.89 34.69 Impact Impact Impact Impact Impact MD2,RIPEMD, MD5,SHA-3, SHA, SHA-256, SHA-512,POOL WHIRL- MD6, SHA-1, SHA-2, PBKDF2, BLAKE2, GOST,RIPEMD, MD5,SHA-2, scrypt, PBKDF2, SHA-3,SipHash, SHA-256, SHA, SHA-512, , SHA-1, , , BLAKE2,RIPEMD, MD2, SHA, SHA-1, SHA-2, MD5, SHA- PBKDF2, MD5, SHA, SHA-1 3, SHA-256, SHA-512, SipHash, Skein, Tiger, WHIRLPOOL WHIRLPOOL Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. WAKE ChaCha,eSTREAM, , MAG, LEX, NLS,Salsa, Turing RC, ChaCha,eSTREAM, Dragon, ,SEAL, Sosemanuk, Salsa, FISH, VMPC WAKE Related Related Related Related Related - - - - - Type Stan. Type Type Stan. Wrap. Type Stan. Type Stan. I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++, C, Python AES, AES-128,Blowfish, CAST, AES-192, DES,, DEAL, AES-256, , IDEA, NDS, PRESENT, SEED AES, AES-128,Blowfish, AES-192, , AES-256, CAST,GOST, CAST- IDEA,, KASUMI, MISTY1,PRESENT, NDS, M6, RC, NOEKEON, pent, M8, RC5, SEED, SAFER, SHACAL, Ser- Simon, SM4, AES, AES-128, AES-192,CAST-128, AES-256, CAST-256,NXT, IDEA, DES, , M6,NDS, IDEA M8, MARS, NOEKEON,RC2, PRESENT, RC5,SEED, RC, RC6, SHACAL, SHARK, SAFER, , , AES, AES-128, ARIA,IDEA, CAST, DEAL, PRESENT, SEED, Simon Threefish, Twofish, XTEA Threefish, TEA, Twofish, XXTEA ARIA, Blowfish, Camellia, CAST, 128, CAST-256, DES, DEAL, FPE, Name Name Name Name Name EAM EAM EAM EAM EAM qca HMAC botan HMAC, Poly1305 cryptopp HMAC, Poly1305, cryptominisat - libkleo VMAC ID ID ID ID ID 021 003 001 004 046

75/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL CMP, CMS,GPG, EST, PEM, PGP, PoSE, S/MIME, HTTPS, X.509 AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR CMP, CMS,HTTPS, EST, IES,PEM, PE, RMA, TLS, CMP, EST, HT- EST,PoSE, SEND, SSH HTTPS, TPS WPA, X.509 https://github.com/cossac klabs/themis https://github.com/dark-pan da/ruby-cryptopp https://github.com/VirgilSec urity/virgil-foundation-x https://github.com/VirgilSec urity/virgil-sdk-cpp https://github.com/Trusted Plus/crypto PKI PKI PKI PKI PKI CMP, LDAP, SET, CMP, LDAP, RD- BMS, SET CMP, PKCS, SET, CMP, PKCS, SET SET X.509 X.509 Licence Licence Licence Licence Licence Apache-2.0 MIT BSD-3-Clause BSD-3-Clause Apache-2.0 PKC PKC PKC PKC PKC Dates - DH,ECDSA, RSA ECDH, DH, DSS,ECDSA, ECDH, RSA DSS RSA 2014-09-13 2017-08-16 Dates Dates Dates Dates 2010-03-16 2017-06-28 2015-08-31 2017-08-08 2015-05-14 2017-08-16 2015-12-29 2017-06-13 MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Explanations Examples, Explanations Apis, Explanations Apis, Examples, Explanations - HMAC HMAC HMAC - Doc. Kind Readme, Website, Download 1 19 Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Download 1 0 2 2 1 3 1 5 People A C 47 People A C People People People A C A C A C Hash Hash Hash Hash Hash 22 29 34 kLOC 7.92 kLOC kLOC kLOC kLOC 31.05 Impact 24.94 26.32 24.87 24.83 Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, MD2,RIPEMD, MD5,SHA-3, SHA, SHA-256, SHA-512 MD6, SHA-1, SHA-2, PBKDF2, HAVAL, MD2, MD5, RIPEMD,SHA-1, SHA, SHA-512, SHA-2, Tiger, WHIRLPOOL SHA-3, SHA-256, - Depen. - Depen. Depen. Depen. Depen. - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - LEX,SEAL, Rabbit, SNOW, Crypto1, RC Panama, SEAL Crypto1, LEX Turing Related - Related Related Related Related 001 - - - Type Stan. Type Type Stan. Type Stan. Type Stan. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High M.L. C Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ CAST,PRESENT , IDEA, NDS, AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, AES, AES-128,Blowfish, Camellia, AES-192, CAST,M8, AES-256, DES, MMB, M6, NDS, PRESENT, SEED, AES,CAST-128, Blowfish, CAST-256,IDEA DES, Camellia, DEAL, RC2, NXT, CAST, RC5,SHACAL, IDEA, RC6, SHARK, MARS, SAFER, Skipjack, Serpent, RC, TEA, AES, AES-256, CAST,M8, DEAL, NDS, IDEA, PRESENT, SEED TEA, XTEA Twofish ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name Name EAM EAM EAM EAM EAM Name - themis HMAC virgil-foundation-x HMAC ruby-cryptopp HMAC virgil-sdk-cpp - crypto ID ID ID ID ID 070 031 019 023 005

76/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL CMP, CSR,EST, CMS, IKE,PE, HTTPS, PEM,SEND, SSL, PHE, TSP, OCSP, EST, HTTPS HTTPS CMS, EST,OCSP, IKE, SRTP, SSL, X.509 PEM, CMP, EST, HT- EST, HTTPS CMC, DPD, PE EST, HTTPS TPS, SEND X.509 https://github.com/intrbiz/a rduino-crypto https://github.com/spaniako s/Cryptosuite https://github.com/lime-com pany/cc7 https://github.com/musiko/o fxCrypto https://github.com/ladnir/cr https://github.com/hieifn/Cr https://github.com/ph4r05/ yptoTools yptoCaesar Whitebox-crypto-AES PKI PKI PKI PKI PKI PKI PKI CMP,PKCS, OCSP, SET, SET SET OCSP, SET, X.509 CMP, SET SET - SET X.509 Licence Licence Licence Licence Licence Licence Licence Licence BSD-2-Clause - Apache-2.0 - Public Domain - - PKC PKC PKC PKC PKC PKC PKC DH,RSA DSA, DSS, - - DH,ECDH, DSA,RSA DSS, ECDSA, - - DH - Dates Dates Dates Dates Dates Dates Dates Dates 2016-04-25 2017-08-07 2010-05-26 2016-09-02 2016-04-05 2017-06-02 2013-02-27 2017-04-11 2016-11-18 2017-08-05 2016-06-08 2017-05-28 2013-02-27 2017-01-31 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Examples, Explanations Apis, Explanations - HMAC HMAC HMAC - HMAC - - Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind 1 2 3 0 1 5 1 2 1 5 1 2 2 5 People A C People People People People A C A C A C A C People People People A C A C Hash Hash Hash Hash Hash Hash Hash 13 9.2 0.8 1.0 0.32 9.81 1.25 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 22.18 24.71 22.17 21.33 21.26 22.42 21.54 Impact Impact Impact Impact Impact Impact Impact Impact SHA, SHA-1, SHA-2, SHA-3, SHA- MD5, SHA, SHA-1 SHA, SHA-2, SHA-3, SHA-256 MD5, RIPEMD SHA, SHA-1 SHA, SHA-1, SHA-2, SHA-3, SHA- - MD5 256 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - RC, Turing - - MAG - Related Related Related Related Related Related Related Related 137 009 https://www. miracl.com/in dex - - - https://githu b.com/bakerc p/Cryptosuit e Type Type Fork Type Stan. Type Stan. Type Stan. Wrap. Type Stan. Type Fork Type I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ C++ C++ AES, AES-256, CAST,IDEA, M6, DES, M8, DEAL, PRESENT DEAL, M6, PRESENT AES AES,DES, Blowfish, IDEA,SEED Camellia, PRESENT, RC, CAST, RC2, AES,PRESENT, RC, RC2, CAST, SEED DEAL, IDEA, IDEA, PRESENT M6, M8 AES, IDEA, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM - ofxCrypto HMAC arduino-crypto HMAC cc7 HMAC cryptoTools - Cryptosuite HMAC CryptoCaesar - Whitebox-crypto-A ES - ID ID ID ID ID ID ID ID 049 010 056 018 008 030 006

77/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AKA, CMP,HTTPS, EST, SEND, TLS PEM, AKA, CMP, CMS, DCII, EST, HT- PE, SEND, SSL, EST, PE, TLS CGA, EST,HTTPS, , GSI, IKE, MSE, PE, RTD CMP, DPV,PE, EST, SEND, TSP HTTPS,SSH SEND, TPS, IKE, OCSP, TLS, X.509 https://github.com/glueckka nja-pki/NSSWrapper https://github.com/azadkuh/ mbedcrypto https://github.com/botezatu mihaicatalin/ChaoticImageCr https://github.com/JonWBe dard/CryptoGateway https://github.com/kotl/esp8 https://github.com/benhj/Cr 266-cryptosign ypto yptoStreamPP https://github.com/romangol /cryptoBoost PKI PKI PKI PKI PKI PKI PKI CMP, SET CMP,OCSP,PKIX, SET, X.509 LDAP, PKCS, SET - CMP, SET SET Licence Licence Licence Licence Licence Licence MPL-2.0, GPL-3.0, Apache-2.0 MIT - - - - - PKC PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, DH,ECDH, DSA,RSA DSS, ECDSA, DH, DSS, ECDSA, RSA DH DH - Dates Dates Dates Dates Dates Dates 2016-08-09 2017-07-13 2016-03-03 2017-05-24 2017-03-31 2017-06-12 2014-10-30 2016-09-25 2016-11-28 2017-05-26 2015-01-08 2017-01-22 2016-10-05 2017-05-08 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Explanations Examples, Explanations CBC-MAC, HMAC HMAC HMAC - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Readme Readme 1 2 2 2 1 0 1 1 1 4 1 0 1 1 People People People People A C A C A C A C People A C People A C A C Hash Hash Hash Hash Hash Hash Hash 21 45 1.74 0.85 0.86 3.54 7.71 kLOC kLOC kLOC kLOC kLOC kLOC 17.6 18.89 18.81 18.25 20.08 20.26 21.14 Impact Impact Impact Impact Impact Impact MD2, MD5, RIPEMD,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, SHA, SHA-1, SHA-2, SHA-3, SHA- - scrypt - 256 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Crypto1 MAG, RC, Turing, RC - Crypto1, RC - WAKE Related Related Related Related Related Related - - - - https://deve loper.mozilla. org/en-US/d ocs/Mozilla/ Projects/NSS - 139 Type Type Type Type Type Stan. Wrap. Wrap. Wrap. Wrap. Type Stan. Wrap. I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ C++ M.L. C++ I.L. I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ C++ C++ AES, AES-128,Blowfish, AES-192,DEAL, Camellia, AES-256, SAFER, CAST, SEED, IDEA, 3DES, Twofish DES, M8, PRESENT, AES, AES-128,Camellia, CAST, AES-192, DES, DEAL,M6, AES-256, M8, IDEA, MAGENTA, NDS,PRESENT, NewDES, RC,Skipjack, RC2, 3DES RC5, SEED, AES, AES-256,M8, PRESENT, CAST, SEED, DES, SM4, TEA, M6, CAST, DEAL,MMB, DFC, RC, FPE, RC2, Serpent, M6, SM4 M8, CAST, M6, M8, PRESENT, SEED DEAL, PRESENT XTEA Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM mbedcrypto CBC-MAC, HMAC NSSWrapper HMAC cryptoBoost HMAC ChaoticImageCrypt o - CryptoGateway - esp8266-cryptosign - CryptoStreamPP ID ID ID ID ID ID 014 057 017 051 024 045 016

78/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL HTTPS CMC, CMP, CMS, DTLS, EST, HT- OCSP, PE,PHE, PEM, SRTP, SSL, TLS, SEND, EST, HTTPS CMP, CMS, HT- SRTP, SSL, X.509 HTTPS, PE, PEM, SEND, SILC AKA, CMP,HTTPS, EST, SEND PE, CMP, EST, HT- TPS, IKE, IPsec, TPS, OCSP, PEM, TPS, PE X.509 https://github.com/Airbitz/r eact-native-fast-crypto https://github.com/jkosoy/of https://github.com/tresorit/ ZeroKit-Client-Native-Crypto https://github.com/duy0503/ Cryptography https://github.com/RiddleA ndCode/RnCAtmelCrypto https://github.com/glapointe 7/CryptoGL xCrypto PKI PKI PKI PKI PKI PKI SET CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, SET CMP, OCSP, SET, SET CMP, SET CMP, SET X.509 Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC DSS DH,ECDH, DSA,RSA DSS, ECDSA, - DH,ECDH, DSA,RSA DSS, ECDSA, DH, DSS, RSA ECDSA - Dates Dates Dates Dates Dates Dates Dates 2017-07-03 2017-07-23 2013-02-27 2016-01-06 2017-05-08 2017-07-03 2016-03-13 2016-06-04 2016-12-10 2017-04-26 2013-03-25 2015-07-27 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC, XCBC - HMAC, Poly1305, - OMAC CBC-MAC, HMAC, OMAC, TMAC, XCBC XCBC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 2 0 1 0 2 4 1 1 1 3 People People People People People People People A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash 17 15 21 0.3 3.01 4.33 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 17.44 17.25 17.04 16.93 16.85 16.47 Impact Impact Impact Impact Impact Impact Impact PBKDF2, scrypt GOST,RIPEMD, MD2,SHA-2, scrypt, SHA-3, MD5, SHA-256, SHA, SHA-512, PBKDF2, SHA-1, MD5, SHA, SHA-1 BLAKE2,scrypt, MD2, SHA, SHA-1,SHA-256, MD5, SHA-512 SHA-2, SHA-3, RIPEMD, - SHA, SHA-2, SHA-3, SHA-256 RIPEMD, SHA, SHA-3, Tiger WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - RC, Salsa, SEAL, - ChaCha,SEAL RC, Vigenere cipher Turing, WAKE ISAAC,RC, Salsa,SNOW SEAL, MAG, Vernam Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ C++ AES,DES, Blowfish, IDEA, MARS,Serpent, Camellia, RC, SEED, RC5, SHACAL, RC6, CAST, Skipjack, 3-Way, AES, AES-128,CDMF, DES,IDEA, AES-192, GOST,PRESENT, IDEA M6, RC, RC2, RC5, NXT, SEED M8, MESH, NDS, DEAL, M6, PRESENT AES, AES-128,Camellia, AES-256, CAST,RC2, Blowfish, RC5, DES, SEED IDEA, RC, DES, M6, M8, PRESENT AES, AES-128,CAST, AES-192, DEAL, IDEA,PRESENT, AES-256, M6, SEED M8, NDS, CAST, CAST-128, CAST-256, DEAL, IDEAPRESENT, NXT, RC,jack, RC5, Twofish, IDEA, XTEA SEED, Skip- NOEKEON, TEA, Twofish AES-256, Blowfish, Camellia, CAST, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM - react-native-fast-cr HMAC, XCBC ofxCrypto - ZeroKit-Client-Nati HMAC, Poly1305, Cryptography - RnCAtmelCrypto OMAC CryptoGL CBC-MAC, HMAC, OMAC, ypto ve-Crypto TMAC, XCBC XCBC ID ID ID ID ID ID ID 029 009 044 026 041 043

79/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL CMS, EST,OCSP, IKE, SRTP, SSL, X.509 PEM, SEND AS1, AS2,CGA, DTLS, DPV, CMP, EKE, EST,GPG, IKE, GSI, PCT, OTR, PE,PHE, PGP, PEM, RMA, RTD, SCP,SSL, SSH, TSP, TLS, CMP, CGA,GSI, EST, HTTPS, IKE, PE,SEND, PEM, SSH, TLS SCP, AKA, CMP, CMS, DPD, EST,HTTPS, GPG, IPsec, PE,PGP, RTD, SEND, PEM, IKE, SSH, SSL, TSP, TLS, X.509 WPS https://github.com/hvge/cc7 https://github.com/Codehhh https://github.com/art-droba nov/FBICRY https://github.com/vpmedia/ cryptopp-ane https://github.com/vpmedia/ botan-crypto-ane https://github.com/cawka/cr yptopp /Crypto PKI PKI PKI PKI PKI OCSP, SET, X.509 SET CMP, SET CMP, PKCS, SET CMP,PKCS, LDAP, SET, X.509 Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, DH DH, DSA,LUC, ECDH, RSA, YAK DH, DSA, DSS, El- Gamal, LUC, RSA DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, Dates Dates Dates Dates Dates 2016-04-05 2017-02-13 2015-11-30 2015-12-02 2011-08-16 2016-05-08 2014-09-08 2015-03-14 2014-09-08 2015-03-14 2002-10-04 2015-02-01 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - HMAC HMAC, VMAC HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 2 1 1 0 1 2 1 2 1 0 People People People People People A C A C A C A C A C A C Hash Hash Hash Hash Hash 72 69 9.2 117 100 1.25 kLOC kLOC kLOC kLOC kLOC 16.09 15.37 15.32 15.06 15.06 15.01 Impact Impact Impact Impact Impact MD5, RIPEMD - FSB, MD2, MD5, MD6,SHA-3 SHA, SHA-1, MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- GOST,RIPEMD, MD2,SHA-3, SHA, SHA-256, MD5, SHA-1, SHA-512, PBKDF2, Skein, SHA-2, 256, SHA-512, Tiger, WHIRLPOOL Tiger Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. RC, Turing LEX LEX eSTREAM,Panama, LEX, SEAL, Sosemanuk, Salsa, Dragon,RC, Salsa, Turing, eS- TREAM, LEX, WAKE WAKE Related Related Related Related Related ------Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ C++ AES,DES, Blowfish, IDEA,SEED Camellia, PRESENT, RC, CAST, RC2, AES, CAST AES, DFC,NDS, IDEA PRESENT,RC6, NXT, SEED, RC, UES M6, RC2, M8, RC5, AES, AES-128,Blowfish, AES-192, Camellia, AES-256, CAST,NXT, CAST- IDEA, M6,NOEKEON, M8, PRESENT, MARS,RC5, RC6, NDS, RC, SAFER,SHACAL, RC2, Serpent, SHARK, SEED, Skipjack, SM4, AES, AES-128, AES-192,CAST-128, AES-256, CAST-256,FPE, DES, DEAL, KHAZAD, M6, GOST, M8,MMB, MARS, MISTY1, IDEA,RC, RC2, NOEKEON,pent, RC5, KASUMI, SEED, RC6, Skipjack, SAFER, PRESENT, TEA, Ser- 3DES, TEA, Twofish, XXTEA Twofish, XTEA , Blowfish, Camellia, CAST, 128, CAST-256, DES, DEAL, IDEA Name Name Name Name Name EAM EAM EAM EAM EAM cc7 HMAC Crypto - FBICRY HMAC cryptopp-ane HMAC, VMAC botan-crypto-ane HMAC cryptopp ID ID ID ID ID 034 013 040 038 042 037

80/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL CMP, EST, HT- SEND EST, HTTPS, PE EST, HTTPS CMP, EST, HT- PEM, SEND, - - EST,SEND HTTPS, TPS, IKE, PE, TPS, IKE, PE, WTLS https://github.com/GLADIC OS/AES128 https://github.com/jonaskirk emyr/cryptology https://github.com/DevJPM https://github.com/mk9440/ Data_Encryption_using_RS https://github.com/anthok/ Cryptography https://github.com/samleybr ize/php-cryptopp A_cryptography /CryptoJPM PKI PKI PKI PKI PKI PKI PKI CMP, PKCS, SET SET SET CMP, PKCS, SET - - SET Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC DH, DSA, DSS, El- Gamal, LUC, RSA - - DH,ECDSA, DSA, ElGamal, LUC, DSS, RSA McEliece, - DSA - Dates Dates Dates Dates Dates Dates Dates 2015-03-09 2016-02-24 2015-03-02 2016-02-22 2015-01-05 2015-04-24 2017-02-16 2017-03-16 2015-02-02 2015-05-05 2014-10-21 2015-07-26 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC, VMAC - HMAC HMAC, VMAC - - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 1 1 1 1 1 1 1 1 0 People People People People People People People A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 32 82 15 1.2 0.36 0.57 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.79 14.18 14.13 14.13 14.04 13.69 Impact Impact Impact Impact Impact Impact Impact MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- - SHA, SHA-1, SHA-2, SHA-3, SHA- BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, - - MD5, SHA, SHA-1,SHA-512 SHA-3, SHA-256, 256, SHA-512, Tiger, WHIRLPOOL 256, SHA-512 2, SHA-3, SHA-256, SHA-512, Skein, Tiger, WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. eSTREAM, Panama,SEAL, Sosemanuk, Salsa, - - eSTREAM, Panama,SEAL, Sosemanuk, Salsa, - - Panama,Sosemanuk Salsa, WAKE WAKE Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ C++ AES, AES-128,Blowfish, AES-192, Camellia, AES-256, CAST,IDEA, CAST- MARS,PRESENT, RC, NDS,SAFER, RC2, Serpent, NOEKEON, SHARK, SEED, RC5, Skipjack, SHACAL, RC6, TEA, Twofish, AES, AES-128, M6, PRESENT DEAL, PRESENT, SEED AES, AES-128,CAST-128, AES-192, CAST-256,NXT, DES,NDS, AES- IDEA IDEA, NOEKEON,RC2, M6, PRESENT, RC5,SEED, RC, RC6, SHACAL, M8, SHARK, SAFER, Skipjack, Serpent, MARS, IDEA, PRESENT - AES, CAST, DEAL, PRESENT 256, Blowfish, Camellia, CAST, Threefish, TEA, Twofish, XXTEA XXTEA 128, CAST-256, DES, IDEA NXT, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC, VMAC AES128 - cryptology HMAC CryptoJPM HMAC, VMAC Data_Encryption_ using_RSA_crypto graphy - Cryptography - php-cryptopp HMAC ID ID ID ID ID ID ID 054 039 027 053 035 052

81/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST,IKE, PE, HTTPS, SEND, CMP, PEM, X.509 EST, HTTPS CMP, EST, HT- AKA, EST, HT- - HTTPS TLS, X.509 TPS, PE, SEND TPS, PE https://git.code.sf.net/p/qt-c ryptoengine/CryptoEngine https://github.com/giovani- milanez/cryptowrapper https://github.com/rikyoz/Q tCryptoHash https://github.com/madera/ cryptox https://github.com/Alex-Kuz https://github.com/JamisHo o/Cryptographic-Algorithms https://github.com/bbarenbl at/urweb-crypto-random-ope nssl https://github.com/thiagoh/ crypto /cryptosha PKI PKI PKI PKI PKI PKI PKI PKI PKCS, SET, X.509 CMP, SET, X.509 SET CMP, SET SET - - Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DH, DSA, DSS, El- Gamal, LUC, RSA - - - - DSS - Dates Dates Dates Dates Dates Dates Dates 2014-10-08 2014-10-13 2015-01-20 2015-01-20 2015-11-19 2016-05-02 2016-11-20 2017-02-05 2016-12-06 2016-12-21 2015-05-11 2015-05-20 2015-06-23 2015-08-19 2015-07-03 2015-09-04 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC, VMAC ------Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 1 1 0 1 2 1 0 1 0 1 0 People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 28 25 4.4 1.46 3.03 2.25 0.12 0.58 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.4 13.68 13.24 13.13 13.09 13.04 12.89 12.86 Impact Impact Impact Impact Impact Impact Impact MD2, MD5, RIPEMD,SHA-3, SHA-256, SHA, SHA-512, SHA-2, Tiger - RIPEMD, Tiger, WHIRLPOOL MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- - SHA, SHA-1, SHA-2, SHA-3, SHA- - 256, SHA-512 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. eSTREAM, Panama,SEAL, Sosemanuk, Salsa, - - SNOW eSTREAM, LEX - - WAKE Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ I.L. I.L. I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ C++ C++ C++ AES,DES, Blowfish, DEAL, IDEA,NDS, M6, Camellia, M8, PRESENT, MARS, RC6, CAST, RC,SHACAL, RC2, SAFER, SHARK, RC5, Skipjack, Serpent, TEA, SEED, CAST, DEAL, PRESENT CAST, IDEA NXT, PRESENT CAST,MAGENTA, PRESENT, SEED DEAL, IDEA NXT, CAST,PRESENT, SEED DEAL, IDEA, NDS, AES, DES, DEAL, SM4 CAST, PRESENT Twofish Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM CryptoEngine HMAC, VMAC cryptowrapper - QtCryptoHash - cryptox - cryptosha - Cryptographic-Algo rithms - urweb-crypto-rando m-openssl - crypto ID ID ID ID ID ID ID 059 036 050 025 028 020 022 012

82/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST, HTTPS, PE, SSL AKA, CMP,HTTPS, EST, IKE,SEND PE, EST, HTTPS HTTPS, PE, SCIP AS1, AS2,CCMP, AKA, CMP, CSR,DTLS, CMS, DPD, CMC, EKE, EST, GSI,HTTPS, I2P, GPG, IKE, IPsec,PANA, PCT,PEM, PE, PGP, PoSE, OCSP, RTD, SASL,SEND, SCP, SRTP, SSH, SSL, SFTP, EST,SEND HTTPS, TSP, TLS, VBR, WPA, WPS, X.509 https://github.com/Sandeep https://github.com/evilJazz/ tinycrypto https://github.com/MXWXZ https://github.com/noprops/ RRGCodingAndCrypto https://github.com/c-mysec/ Curve25519_ESP8266 Aggarwal/CryptoppECC /CryptoLib PKI PKI PKI PKI PKI SET CMP, PKCS, SET PKCS,SET PKCS#7, - CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, SET Licence Licence Licence Licence Licence Licence - - - - - PKC PKC PKC PKC PKC - DH, DSA, DSS, El- Gamal, LUC, RSA - - DH,ECDH, DSA,LUC, DSS, RSA ECDSA, ECDH Dates Dates Dates Dates Dates Dates 2016-01-03 2016-02-11 2017-02-25 2017-02-26 2016-12-11 2017-01-24 2015-10-08 2016-01-09 2016-12-30 2017-01-30 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC, VMAC - - HMAC, XCBC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 0 1 0 1 0 1 0 People People People People People People A C A C A C A C A C Hash Hash Hash Hash Hash 71 1.67 3.04 4.04 1113 kLOC kLOC kLOC kLOC kLOC kLOC 12.79 12.63 12.54 12.54 12.47 Impact Impact Impact Impact Impact Impact - MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- PBKDF2 MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, FSB,PBKDF2, GOST, RIPEMD,SHA-2, MD2, SHA-3, SHA, MD5, SHA-256, SHA-1, SHA-512, MD6, - 256, SHA-512, Tiger, WHIRLPOOL WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - eSTREAM, Panama,SEAL, Sosemanuk, Salsa, - - eSTREAM, FISH, LEX, MAG,SEAL, RC, SNOW, - Turing, Vernam, WAKE WAKE Related Related Related Related Related Related - - - - - Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ M.L. I.L. I.L. I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ AES, AES-256, IDEA NXT AES, AES-128,CAST-128, CAST-256, AES-192,IDEA DES, DEAL, NXT,NOEKEON, AES- IDEA, PRESENT,RC5, RC6, MARS, RC, SAFER,SHACAL, RC2, NDS, Serpent, SHARK, SEED, Skipjack, TEA, AES, CAST, IDEA NXT DEAL, RC, RC2 AES, AES-128,CDMF, AES-192, DES,GOST, IDEA DEAL, NXT,MAGENTA, AES- IDEA, DFC, MESH, M6,PRESENT, M8, FPE, RC, MMB,SAFER, SEED, RC2, UES, NDS, XXTEA RC5, RC6, DEAL, PRESENT 256, Blowfish, Camellia, CAST, 256, Blowfish, Camellia, CAST, Twofish, XXTEA Name Name Name Name Name Name EAM EAM EAM EAM EAM - CryptoppECC HMAC, VMAC tinycrypto - CryptoLib - RRGCodingAndCr HMAC, XCBC Curve25519_ESP8 - 266 ypto ID ID ID ID ID ID 007 058 011 048 055

83/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL AKA,CCMP,CMP, CMS, DCII, CAVE, EST, CMC, IES, IKE,MIKEY, HTTPS, IPsec, PCT, OCSP, PE,PGP, PEM, HTTP, SCVP,SRTP, S- SSH,S/MIME, SSL, SEND, TLS, HTTPS AS2, AKA,CSR, CMC, CMS,EKE, CGA, EST,HTTPS, IES, IKE, GSI, MSE,PEM, PCT, PHE,RMA, PE, PGP, RTD,SEND, SCP, SSL, TLS, CMC, CMP AKA, CMP,HTTPS, EST, PE, SEND,S/MIME IKE, SSL, VBR, WPA, WPS, X.509 WPS https://github.com/txomin-ji menez/newton-des-crypto https://github.com/CSSHL/ ESP8266-Arduino-cryptolibs https://github.com/danielkin g/react-native-rncrypto https://github.com/hilder-vit or/ope-from-cryptodb https://github.com/maciejcz yzewski/libchaos https://pocoproject.org/releas es/poco-1.7.8/poco-1.7.8p3-all. zip PKI PKI PKI PKI PKI CMP,LDAP,PKCS, DVCS, RPKI, SET, OCSP, X.509 PKIX, SET PKCS, PKIX, SET CMP, SET CMP, LDAP, SET Licence Licence Licence Licence Licence - - - - - PKC PKC PKC PKC PKC - DH,ECDH, DSA,RSA DSS, ECDSA, ECDH DH,ECDSA, DSA, ElGamal, LUC, DSS, RSA - DH Dates Dates Dates Dates Dates - - 2016-03-06 2016-03-06 2015-11-05 2015-11-06 2016-04-27 2016-05-03 2016-05-25 2016-06-03 2016-12-27 2017-01-01 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC,Badger, Poly1305, MMH- - HMAC, VMAC HMAC - XCBC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind - - 1 1 1 0 1 1 1 1 1 0 People A C People People People People A C A C A C A C A C 645 Hash Hash Hash Hash Hash 51 14 511 1.13 0.46 kLOC kLOC kLOC kLOC kLOC - 12.44 12.31 12.23 12.14 11.78 Impact Impact Impact Impact Impact MD5, scrypt,SHA-3, SHA, SHA-256, SHA-512 SHA-1, SHA-2, SHA, SHA-2, SHA-3, SHA-256 BLAKE2,RIPEMD, MD2,SHA-3, SHA, SHA-256, SHA-512, Tiger MD5, SHA-1, SHA-2, MD6, SHA, SHA-1, SHA-2, SHA-3, SHA- PBKDF2 256, SHA-512 Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. eSTREAM, FISH, ISAAC,MAG,Panama, LEX, Salsa,SNOW, NLS, RC, Turing, SEAL, - eSTREAM,Panama, NLS, Salsa, SEAL, Sose- manuk, WAKE RC, - Turing Vernam, WAKE Related Related Related Related Related ------Type Wrap. Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ C++ M.L. C++ M.L. C++ M.L. C++ M.L. C++ I.L. C++ I.L. I.L. I.L. I.L. C++ C++ C++ C++ C++ AES,DEAL, CAST, FROG,KASUMI, IDEA CRYPTON, NXT,MESH, M6, NDS, IDEA, PRESENT, DES, ,RC2, RC, M8, RC6, SAFER, MAGENTA, SEED, Simon, PRESENT AES, AES-128,Blowfish, AES-192,DFC, Camellia, AES-256, FPE, IDEAM8, CAST, MARS, NXT, MMB, IDEA,RC, NDS, DES, M6, RC2, PRESENT, pent, RC5, RC6,Skipjack, SEED, SAFER, Ser- SHACAL, SM4, SHARK, TEA, Twofish, AES, PRESENT, SEED AES, ARIA,M6, CAST, M8, PRESENT,SM4, DEAL, SAFER, UES SEED, IDEA, TEA XXTEA Name Name Name Name Name EAM EAM EAM EAM EAM newton-des-crypto HMAC,Badger, Poly1305, MMH- ESP8266-Arduino-c ryptolibs - react-native-rncryp to HMAC, VMAC ope-from-cryptodb HMAC libchaos - poco XCBC ID ID ID ID ID 033 015 032 047 002 060

84/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL AKA, CMP,DPD, CSR, EST, HT- PEM,SEND, SSH, SSL, SASL, - AS2, AKA,CMP, CMC, CSR,DTLS, CMS, DPD, EST, GSI, HTTPS, IES, IKE, IPsec, OCSP, PCT, PE,PHE, PoSE, PEM, RTD, SEND,SSH, SSL, SRTP, TSP, CMP, CSR,DTLS, CMS, DPD, EST, GPG,IKE, OCSP,PEM, HTTPS, PGP, PE, SCEP, RTD, SSH, SSL, SEND, TLS, AKA, CSR,EST, DPD, OCSP, PE,SEND, PEM, HTTPS, SSL, TLS, TPS, IKE, PE, TSP, TLS, X.509 TLS, WPA, WPS, X.509 WTLS, X.509 WPA, X.509 https://github.com/wolfssl/ wolfssl https://github.com/openssl/o penssl https://github.com/awslabs/s 2n - PKI PKI PKI PKI PKI CMP, LDAP, SET, - CMP,LDAP,OpenCA, DVCS, PKIX, SET, PKCS, OCSP, X.509 CMP,PKCS,RTCS,SET, OCSP, X.509 PKIX, SCEP, OCSP, SET, X.509 X.509 Licence Licence Licence Licence GPL-2.0, commerci al OpenSSL, SSLeay - PKC PKC PKC PKC PKC MS-RSL DH, DSS,RSA ECDH, - DH,ECDH, DSA,RSA DSS, ECDSA, DH,ECDH, DSA,NTRUEncrypt, DSS, ECDSA, RSA DH,ECDH, DSA,RSA DSS, ECDSA, Dates Dates - - 2011-02-05 2017-08-16 Dates Dates 1998-12-21 2017-08-19 2014-06-27 2017-08-30 MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Examples, Explanations HMAC - HMAC, Poly1305, HMAC, Poly1305 HMAC, Poly1305 TMAC, XCBC Doc. Kind Website, Download Doc. Kind Readme, Website, Download - - Doc. Kind Doc. Kind Readme, Website 4 49 5 4 57 372 People A C People A C - People A C People A C Hash Hash Hash Hash Hash 259 29 396 kLOC kLOC - kLOC kLOC 38.94 38.4 Impact 39.37 Impact Impact Impact MD5,SipHash PBKDF2, SHA, SHA-1, - BLAKE2, GOST, MD2,PBKDF2, MD5, RIPEMD, MD6, SHA-1, scrypt,SHA-512, SHA-2, SHAKE, SHA, SipHash,POOL SHA-3, WHIRL- SHA-256, BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, MD2, MD5, RIPEMD,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 2, SHA-3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. FISH, LEX,ing, WAKE Tur- - ChaCha, Crypto1, Dragon,LEX,RC, MAG, FISH, Salsa, , SEAL, ZUC ChaCha,MAG, Rabbit, RC, LEX, ChaCha, eS- Turing, Vernam, TREAM, RC VEST, WAKE, Vernam Related Related https://www .wolfssl.com/ ducts-wolfcry pt.html wolfSSL/Pro Related Related - - - Type Wrap. Type Stan. Type Wrap. Type Stan. I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. - M.L. C M.L. C I.L. I.L. C#, C++, VB I.L. C I.L. C C, Java, C#, Python, PHP, Perl AES,DES, AES-128, DEAL, IDEAM8, NXT, AES-256, IDEA, MAGENTA, M6, RC, CAST, RC2, NDS, SAFER, SEED PRESENT, - 3-Way, AES, AES-128, AES-192, AES, AES-128,Camellia, AES-192, CAST,DEAL, AES-256, CRYPTON, IDEA, DES, RC, M6, RC2, SEED, M8, 3DES PRESENT, AES, AES-128,CAST, AES-256, DES, DEAL,PRESENT, Camellia, IDEA, Prince, M6, RC, M8, RC5, SEED, CAST, CDMF,GOST, DES, DEAL,M8, IDEA FEAL, PRESENT, NXT, MESH, RC,SAFER, IDEA, SEED, MMB, RC2, SM4, 3DES, M6, UES RC5, NOEKEON, RC6, 3DES AES-256, ARIA, ARIA-128, ARIA- 192, ARIA-256, Blowfish, Camellia, Name Name Name EAM EAM EAM EAM EAM Name HMAC DotNet(S) - openssl HMAC, Poly1305, wolfssl HMAC, Poly1305 s2n HMAC, Poly1305 TMAC, XCBC ID ID ID ID 659 137 136 140

85/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL AKA, CMP,DTLS, CSR, EST, HT- PE, PEM,SSL, SEND, TLS, VBR, AKA, CMP,HTTPS, EST, SEND IKE, AKA,CMP, EST,HTTPS, GPG, IKE, CMC, PEM, IPsec, PGP, PoSE, IES, SEND, PE, SSH, X.509 SFTP, AKA,CMC, CMP, CMS, DTLS, ACME, DPV, DCII,HTTPS, EST, IKE, DPD, IPsec, OCSP, PE, PEM, IES, SRTP, SEND, SSL, TLS, CMP, CMS,HTTPS, EST, SCP, SEND, SSH IKE, TPS, IKE, IPsec, X.509 WPA, WPS, X.509 https://github.com/msoos/c ryptominisat https://github.com/jedisct1/l ibsodium https://github.com/gpg/libgc rypt https://boringssl.googlesourc e.com/boringssl https://github.com/ARMmbe d/mbedtls PKI PKI PKI PKI PKI CMP,PKIX, SET, X.509 PKCS, CMP, SET CMP, PKCS, SET, CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, CMP, SET X.509 Licence Licence Licence Licence Licence MIT ISC GPL-2.0, LGPL-2.1 OpenSSL, SSLeay, I SC - PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, ECDH DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, DH,ECDH, DSA,RSA DSS, ECDSA, DH Dates Dates Dates Dates Dates 2009-08-10 2017-08-17 2013-01-19 2017-08-18 1997-11-18 2017-08-07 2014-06-20 2017-09-05 2009-01-03 2017-08-10 MAC MAC MAC MAC MAC Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC HMAC, Poly1305 CBC-MAC, HMAC, Poly1305 HMAC, Poly1305 - Doc. Kind Readme, Website Doc. Kind Doc. Kind Readme, Website, Download Doc. Kind Readme, Website, Download Doc. Kind Readme 1 30 2 1 1 1 54 73 37 77 People A C People A C People People People A C A C A C 61 Hash Hash Hash Hash Hash 45 107 147 321 kLOC kLOC kLOC kLOC kLOC 33.71 37.24 34.53 34.23 33.87 Impact Impact Impact Impact Impact MD2,scrypt, MD5, SHA, SHA-1,SHA-256, PBKDF2, SHA-512 SHA-2, SHA-3, RIPEMD, BLAKE2, PBKDF2,SHA-2, SHA-3, scrypt,SipHash SHA-256, SHA, SHA-512, BLAKE2,MD5, GOST, PBKDF2,SHA, HAVAL, SHA-1, RIPEMD, MD2, SHA-2, scrypt, SHA-3, SHA- GOST,RIPEMD, MD2,SHA-2, scrypt, SHA-3, MD5, SHA-256, SHA, SHA-512, PBKDF2, SHA-1, MD5, SHA, SHA-1 256, SHA-512, SHAKE, Tiger, WHIRLPOOL WHIRLPOOL Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX, MAG, RC, ChaCha,eSTREAM, Dragon, Salsa, LEX, SEAL, ChaCha,eSTREAM, Dragon, RC, LEX, genere cipher Salsa, Vi- ChaCha,eSTREAM, Dragon, Salsa, RC, SEAL, FISH, VMPC Turing Turing, Vernam Vernam Related Related - Related Related Related - http://nacl.cr .yp.to - 137 Type Stan. Type Wrap. Type Fork Type Stan. Type Fork I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. C M.L. C M.L. C M.L. C++ I.L. I.L. C I.L. C I.L. C I.L. C C++, C, Python AES, AES-128,DES, IDEA AES-192,PRESENT, RC, NXT, RC2, SAFER, IDEA, AES- SEED, M6, M8, AES,DEAL, AES-128, M6,RC2, AES-256, SEED M8, CAST, PRESENT, RC, 3-Way, AES, AES-128,CAST, DES,NOEKEON, AES-192, DEAL, PRESENT, GOST,SAFER, IDEA, RC, Serpent, RC2, SEED, Simon, 3-Way, AES, AES-128,CDMF, DES,IDEA, AES-192, DEAL, M6, DFC,PRESENT, M8, GOST, Prince,SAFER, MAGENTA, RC, SEED, NDS, 3DES RC2, RC5, AES, AES-128, ARIA,IDEA, CAST, DEAL, PRESENT, SEED, Simon 256, Blowfish, Camellia,3DES, XTEA CAST, 3DES, Twofish AES-256, Blowfish, Camellia, AES-256, Blowfish, Camellia, CAST, Name Name Name Name Name EAM EAM EAM EAM EAM mbedtls HMAC libsodium HMAC, Poly1305 libgcrypt CBC-MAC, HMAC, Poly1305 boringssl HMAC, Poly1305 cryptominisat - ID ID ID ID ID 139 132 085 134 004

86/186 A. Detailed Library Table Protocol Protocol URL URL URL AKA, CMP,GPG, EST, IKE,PoSE, PE, HTTPS, PEM, SEND, CAVE, CMP, EST, GPG, HTTPS, TLS X.509 https://github.com/libtom/li btomcrypt https://github.com/trezor/tr ezor-crypto PKI PKI CMP, PKCS, SET, CMP, SET X.509 Licence Licence Licence Public Domain, WT FPL MIT PKC PKC Dates DH,RSA DSA, DSS, ECDH, ECDSA Dates Dates 2010-06-16 2017-08-16 2013-08-17 2017-08-16 MAC MAC Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations HMAC,Poly1305, XCBC OMAC, HMAC, Poly1305 Doc. Kind Doc. Kind Readme Doc. Kind Readme, Website, Download 1 1 17 25 People People A C People A C Hash Hash 23 kLOC 90 kLOC kLOC Impact 31.32 33.17 Impact Impact BLAKE2, MD2,SHA-2, MD5, SHA, SHA-3,SHAKE, SHA-1, SHA-256, Tiger, WHIRLPOOL SHA-512, BLAKE2,scrypt, SHA, PBKDF2, SHA-1,SHA-256, SHA-512, SHA-2, Tiger SHA-3, RIPEMD, Depen. Depen. Depen. - - Stream Ci. Stream Ci. ChaCha, LEX, RC ChaCha,FISH, Dragon, LEX,bit, RC, Rab- SNOW Related Related Related https://githu b.com/Brian Gladman/aes , https://gith ub.com/luke https://githu b.com/BLAK /BLAKE2 , ord.com/com puters/sha.ht ml , https://g ithub.com/rh ash/RHash , h ttps://github. com/agl/curv e25519-donna , https://githu b.com/floody berry/ed2551 9-donna , http s://github.co m/wg/c20p13 05 , https://gi thub.com/flo odyberry/pol y1305-donna ww.aarongiff 139, http://w -jr/libbase58 , - Type Type Wrap. Type Stan. I.Lvl. M.L. I.Lvl. Low I.Lvl. High, Low Block Cipher Block Cipher M.L. C M.L. C I.L. I.L. C I.L. C AES, AES-256,Camellia, Anubis,IDEA, KASUMI, CAST, KHAZAD, Blowfish, MULTI2, M6, M8, DES,RC, NOEKEON, RC2,pent, PRESENT, RC5, DEAL, SEED, RC6, Skipjack, SAFER, TEA, Ser- 3DES, AES, CAST,NXT, DEAL, IDEA, M6, FROG,PRESENT, M8, SEED, IDEA Mercy, UES MESH, Twofish, XTEA Name Name EAM EAM Name libtomcrypt HMAC,Poly1305, XCBC OMAC, trezor-crypto HMAC, Poly1305 ID ID ID 135 133

87/186 A. Detailed Library Table Protocol Protocol Protocol Protocol URL URL URL AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR AKA,CMP, CSR,DTLS, CMS, EST, CMC, IES, IKE,OCSP, DPD, HTTPS, PE, IPsec, PoSE, PEM, RMA, RTD, SEND,SSH, SSL, SRTP, TLS, AS2, AKA,CMP, CMC, CSR,DTLS, CMS, DPV, DCII,EST, EKE, GSI,HTTPS, DPD, IES, GPG, IKE, IPsec, OCSP,PEM, PE, PoSE, RMA, SCP, SEND,SSL, SSH, TSP, TLS, DPD, EST, HT- SEND, X.509 TPS, IKE, PE, X.509 WTLS, X.509 https://github.com/cossac klabs/themis https://github.com/miracl/ milagro-crypto-c https://github.com/hosseinsh /Crypto-Engine-Contiki https://github.com/xyzz/vita- openssl PKI PKI PKI PKI CMP, LDAP, RD- BMS, SET CMP,LDAP,OpenCA, DVCS, PKIX, SET, PKCS, OCSP, X.509 CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, PKCS, SET, X.509 Licence Licence Licence Apache-2.0 Apache-2.0 BSD-3-Clause OpenSSL, SSLeay PKC PKC PKC PKC DH,ECDSA, RSA ECDH, DH,ECDH, DSA,RSA DSS, ECDSA, DH,ECDH, DSA,RSA, DSS, YAK ECDSA, DH,ECDH, DSA,RSA DSS, ECDSA, 2014-09-13 2017-08-16 Dates Dates 2016-03-10 2017-08-03 Dates 2006-06-17 2015-10-05 1998-12-21 2016-08-14 MAC MAC MAC MAC Apis, Examples, Explanations Doc. Com. Examples, Explanations Doc. Com. Doc. Com. Examples, Explanations HMAC HMAC, XCBC HMAC - Readme, Website, Download Doc. Kind Readme, Download 1 19 Doc. Kind Readme Doc. Kind Readme 2 11 4 6 173 A C 124 People A C 47 People A C People A C 47 Hash Hash Hash Hash 439 565 kLOC kLOC kLOC 31.05 29.28 30.39 29.93 Impact Impact Impact MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, GOST,RIPEMD, MD2,SHA-2, scrypt, SHA-3, MD5, SHA-256, SHA, SHA-512, PBKDF2, SHA-1, GOST, MD2, MD5,scrypt, MD6, SHA, RIPEMD, SHA-1,SHA-256, SHA-512, SHA-2, WHIRLPOOL SHA-3, SHA, SHA-2, SHA-3,512 SHA-256, SHA- WHIRLPOOL - Depen. Depen. Depen. - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX,SEAL, Rabbit, SNOW, Dragon,MAG, RC, SEAL, LEX, LEX, MAG,Panama, NLS, RC, MAG, RC, ZUC Turing Turing, Vernam Turing, Vernam, WAKE - Related - Related Related 137 - Stan. Type Stan. Type Fork Type Stan. High I.Lvl. High, Low I.Lvl. High, Low C I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C I.L. I.L. C I.L. C C, Python, Go AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, 3-Way, AES, AES-128,CDMF, DES,NXT, AES-192, DEAL, IDEA, GOST, M6,PRESENT, M8, IDEA MESH, RC,SAFER, MMB, SEED, RC2,UES Simon, RC5, SM4, 3DES, RC6, AES, AES-128, AES-192,CDMF, AES-256, DES,IDEA, DEAL, M6, DFC, M8,NDS, MAGENTA, GOST, MESH, ,RC, RC2, RC5, PRESENT, SEED, 3DES, Prince, UES AES, CAST, CRYPTON, DES, IDEA, M6, M8, Mercy, PRESENT, SEED ARIA, CAST, DEAL, IDEA, M6, M8, AES-256, Blowfish, Camellia, CAST, ARIA, Blowfish, Camellia, CAST, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name EAM EAM EAM EAM themis HMAC vita-openssl HMAC, XCBC Crypto-Engine-Con tiki HMAC milagro-crypto-c - ID ID ID 070 109 113 074

88/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AS1, AS2,CMC, CMP, DCII, AKA, EST,IES, IKE,PE, HTTPS, PoSE, OTR, SEND, RTD, SILC, CMP, CMS,PEM, EST, SEND, SSL, CMP, CSR,DTLS, CMS, EST,IKE, OCSP,PEM, DPV, HTTPS, PHE, PE, RMA, PGP, SCP, SEND, SFTP, SSH, SSL, CMP, EST, HT- CMP, EST, HT- TLS, WPA, WPS, TPS, SEND TPS X.509 X.509 X.509 https://github.com/Cyberun ner23/libsodium-CMake https://github.com/matrixssl https://github.com/iadgov/si mon-speck-supercop https://github.com/gost-engi ne/engine https://github.com/wireapp/l ibsodium /matrixssl PKI PKI PKI PKI PKI CMP, PKCS, SET, CMP,PKIX, SET, X.509 PKCS, CMP,PKCS,SET, X.509 OCSP, PKIX, CMP, SET CMP, SET X.509 Licence Licence Licence Licence Licence Licence ISC - - OpenSSL, SSLeay ISC PKC PKC PKC PKC PKC DH,ECDH, DSA,ElGamal, DSS, ECDSA, RSA LUC, DH, DSA, ECDSA DH,ECDH, DSA,RSA DSS, ECDSA, ECDH ECDH Dates Dates Dates Dates Dates Dates 2013-01-19 2015-07-29 2015-03-26 2017-06-22 2008-07-29 2017-07-20 2015-08-13 2017-08-14 2013-01-19 2016-03-10 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations HMAC, Poly1305, HMAC HMAC, Poly1305 HMAC, Poly1305 HMAC, Poly1305 VMAC Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Doc. Kind Readme Doc. Kind Readme, Website, Download 1 4 1 5 1 1 1 10 43 39 People People A C People People People A C A C A C People A C Hash Hash Hash Hash Hash 47 26 24 119 3978 kLOC kLOC kLOC kLOC kLOC kLOC 25.59 27.91 27.61 24.39 23.98 Impact Impact Impact Impact Impact Impact BLAKE2,MD2, FSB, MD5,dioGatun, Grostl, MD6, RIPEMD,SHA-1, HAVAL, PBKDF2, scrypt,SHA-512, SHA-2, Ra- SHA, SHAKE, SHA-3, SipHash, SHA-256, Skein, GOST, MD2,SHA-2, SHA-3, MD5, SHA-512 SHA, SHA-1, FSB, MD2,scrypt, MD5, SHA, SHA-1,SHA-256, MD6, SHA-512 SHA-2, SHA-3, PBKDF2, BLAKE2, PBKDF2,SHA-2, SHA-3, scrypt,SipHash SHA-256, SHA, SHA-512, BLAKE2, PBKDF2,SHA-2, SHA-3, scrypt,SipHash SHA-256, SHA, SHA-512, Tiger, WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, CryptMT, Dragon, eSTREAM, HC- NLS,,bit, Py, Panama, , RC, Rab- SNOW, Salsa, nuk, SEAL, Sosema- , - ChaCha,RC, WAKE, ZUC MAG, ChaCha,SEAL, Turing eS- ChaCha,SEAL, Turing eS- 256, HC-128, LEX, Turing, WAKE TREAM, Salsa, TREAM, Salsa, Related Related Related Related Related Related - - - 132 132 Type Type Type Stan. Type Stan. Type Fork Wrap. Type Fork I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. M.L. C I.L. C I.L. C I.L. C I.L. C I.L. I.L. C 3-Way, AES, AES-128,lia, CAST,CRYPTON, AES-192, CAST-128,NXT, DES, IDEA, CAST-256, M6,MMB, M8, DEAL, NDS, MARS, NOEKEON, Mercy, Prince, PRESENT, RC, IDEA RC2, RC5,Serpent, RC6, SAFER, SEED,Simon, SHACAL, Skipjack, SHARK, SM4, Speck, TEA, AES, AES-192,GOST, IDEA, AES-256, MESH, Camellia, PRESENT AES, AES-128,DES, DEAL, AES-192, IDEAM8, NXT, AES-256, IDEA, PRESENT, M6, SM4 RC, RC2, SEED, AES,DEAL, AES-128, M6,SEED AES-256, PRESENT, CAST, RC, RC2, AES,DEAL, AES-128, M6,SEED AES-256, PRESENT, CAST, RC, RC2, Twofish, XXTEA AES-256, ARIA, Blowfish, Camel- Name Name Name Name Name Name EAM EAM EAM EAM EAM simon-speck-superc op HMAC, Poly1305, engine HMAC matrixssl HMAC, Poly1305 libsodium HMAC, Poly1305 libsodium-CMake HMAC, Poly1305 VMAC ID ID ID ID ID ID 067 076 143 111 103

89/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL AKA, CMP,HTTPS, EST, OCSP, PE,SEND, PEM, SSL, IKE, TLS, AKA, CMC, CMP, CSR, CGA,EKE, DCII, IES, EST,OCSP, IKE, I2P, PE,PHE, MSE, PEM, PGP, RMA, SCP, SEND, SSL, CMP,PEM, X.509 HTTPS, CMP,DPD, EST, HT- DTLS, PCT, PE,SEND, SRTP, SSL, PEM, HTTPS EST, HTTPS, IKE TPS, IES, OCSP, TLS X.509 VBR, X.509 https://github.com/eduardsu i/tlse https://github.com/openluop https://github.com/abderrao uf-adjal/ArduinoSpritzCipher world/aes_128 https://github.com/h2o/picot ls https://github.com/Samsung/ ckm https://github.com/fcelda/ns ec5-crypto PKI PKI PKI PKI PKI PKI CMP, OCSP, SET, CMP,PKCS,SET, X.509 OCSP, RTCS, CMP, SET, X.509 CMP,PKCS, SET OCSP, - - X.509 Licence Licence Licence Licence Licence Public Domain, MI T, BSD MIT MIT, CC-BY-SA-4. 0, PublicDomain - Apache-2.0, BoostS oftwareLicense - PKC PKC PKC PKC PKC PKC ECDH,RSA ECDSA, DH,ECDSA, DSA,RSA DSS, LUC, RSA DH,ECDH, DSA,RSA DSS, ECDSA, - - Dates Dates Dates Dates Dates 2016-03-04 2017-06-18 2015-11-15 2017-08-07 2015-08-25 2017-04-30 2016-09-28 2017-09-03 2014-05-14 2016-01-15 2014-12-28 2017-07-17 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Explanations Apis, Examples, Explanations HMAC, Poly1305 HMAC - HMAC,Poly1305, XCBC OMAC, - - Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme 1 7 2 1 0 1 3 1 1 1 4 17 A C People People A C A C People A C People People A C A C Hash Hash Hash Hash Hash Hash 28 48 177 1.39 1.62 0.93 kLOC kLOC kLOC kLOC kLOC 23.63 23.62 23.45 23.37 22.81 22.38 Impact Impact Impact Impact Impact PBKDF2, SHA, SHA-1, SHA-2, SHA- MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD2, MD5, RIPEMD,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 FSB, MD2, MD5, SHA, SHA-1, SHA- - - 3, SHA-256, SHA-512 2, SHA-3, SHA-256, SHA-512, Tiger, WHIRLPOOL Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, Salsa LEX, RC,ZUC WAKE, - ChaCha,RC MAG, - RC Related Related Related Related Related - 135 - http://openss l.org , http:// iu.se/%7Eniss e/nettle , http: www.lysator.l - - //gnutls.org Type Stan. Type Stan. Wrap. Type Type Stan. Type Stan. Wrap. I.Lvl. High I.Lvl. Low High, Low I.Lvl. High I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C C M.L. C M.L. C M.L. C I.L. C I.L. C C I.L. C I.L. C I.L. C AES,IDEA AES-128, NXT,RC, IDEA, AES-256, RC2, M8, SEED PRESENT, DEAL, 3-Way, AES, AES-128,FPE, IDEAMMB, AES-192, NXT, PRESENT, RC, IDEA, RC2, SEED M6, M8, SEED 3-Way, AES, Anubis,FPE, Blowfish, KASUMI, DES, MULTI2, KHAZAD, M6,RC, NOEKEON, M8, RC2, RC5, RC6,Skipjack, PRESENT, SAFER, TEA, SEED, Twofish, XTEA AES, AES-128, DEAL DEAL, RC, SEED AES-256, CAST, DES, DEAL, DFC, Name Name Name Name Name EAM EAM EAM EAM EAM EAM picotls HMAC, Poly1305 ckm HMAC nsec5-crypto - tlse HMAC,Poly1305, XCBC OMAC, aes_128 - ArduinoSpritzCiphe r - ID ID ID ID ID 141 128 116 079 061 068

90/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL AKA, CMP,HTTPS EST, CMP, EST, HT- CMP, DTLS, EST, HTTPS, SEND, AKA, CMP,HTTPS, EST, IKE, TLS EST,SEND HTTPS, CMP, HTTPS, PE TPS, IKE, SEND TLS https://github.com/LoupVa illant/Monocypher https://github.com/wireapp/ cryptobox-c https://github.com/ctz/cifra https://github.com/jedisct1/l ibhydrogen https://github.com/input-out put-hk/cardano-crypto https://github.com/PPC64/s ha2-le http://git.eclipse.org/gitroot/ tinydtls/org.eclipse.tinydtls.gi t PKI PKI PKI PKI PKI PKI PKI CMP, SET CMP, SET CMP, SET CMP, SET - CMP, SET Licence Licence Licence Licence Licence Licence Licence BSD-2-Clause, Ow nLicense GPL-3.0, MIT, BSD 0, ISC -3-Clause, Apache-2. - ISC MIT - EPL-1.0, EclipseDis tributionLicense1.0( BSD) PKC PKC PKC PKC PKC PKC PKC - - DH,ECDSA ECDH, ECDH - DH, ECDH Dates Dates 2016-09-04 2017-08-16 Dates Dates Dates Dates Dates 2015-02-28 2017-02-02 2014-07-17 2017-02-24 2017-01-31 2017-08-09 2017-02-09 2017-06-26 2016-12-06 2017-05-11 2016-02-02 2017-04-26 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Apis, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Explanations - Poly1305 HMAC HMAC, Poly1305 - TMAC Doc. Kind Readme, Website Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme 1 2 1 2 1 1 1 1 2 4 1 3 1 4 People A C People People People A C A C A C People People A C A C People A C Hash Hash Hash Hash Hash Hash Hash 15 16 7.92 5.2 2.84 1.07 1.35 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 21.31 19.68 19.06 18.93 22.09 20.74 19.47 Impact Impact Impact Impact Impact Impact Impact SHA, SHA-2, SHA-3,512 SHA-256, SHA- BLAKE2, MD5, SHA, SHA-2,SHA-256, SHA-3, SHA-512 MD5, SHA, SHA-2,SHA-512 SHA-3, SHA-256, PBKDF2, SHA, SHA-1, SHA-2, SHA- - - 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - ChaCha,Salsa LEX, - ChaCha, Salsa - - Related http://libsod ium.org , http ://tweetnacl .cr.yp.to , htt ps://github.c om/konovod cr , 124 Related Related Related /monocypher. Related Related Related - - - https://githu b.com/wireap p/cryptobox - - Type Stan. Type Type Type Type Stan. Type Stan. Wrap. Wrap. Wrap. Type Wrap. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C I.L. I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C C, Crystal, Lua CAST, DEAL, PRESENT M6, M8, PRESENT, SEED AES,PRESENT, SEED AES-128, DEAL, IDEA, AES,PRESENT, AES-128, SEED AES-256, IDEA, IDEA, PRESENT CAST, SEED Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM Name sha2-le - Monocypher Poly1305 org.eclipse.tinydtls. git HMAC cifra HMAC, Poly1305 cryptobox-c - libhydrogen TMAC cardano-crypto ID ID ID ID ID ID ID 100 101 138 142 089 065 081

91/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL ACME, EST, HT- CMP, EST, HT- CMP, PEM, X.509 HTTPS ACME,EST, PE, SEND CMP, EST,SEND HTTPS, HTTPS, IKE EST, HTTPS TPS TPS, SEND, SSL https://github.com/WickrInc https://github.com/Oryx-Em bedded/CycloneCrypto https://github.com/catwell/l ua-chacha https://github.com/fergul/Ti nyECC https://github.com/bukka/ph p-lcrypto https://github.com/philanc/l uanacha https://github.com/fgsch/lib vmod-crypto /wickr-crypto-c PKI PKI PKI PKI PKI PKI PKI SET CMP, SET CMP, SET, X.509 SET CMP, SET SET SET SET Licence Licence Licence Licence Licence Licence Licence Licence Wickr Public Re- GPL-2.0 MIT RSAREF2.0 License PHP-3.01 MIT, OwnLicense BSD-2-Clause view License PKC PKC PKC PKC PKC PKC PKC - DSS,ECDSA ECDH, DH,ECDH, DSA,RSA DSS, ECDSA, - ECDH,RSA ECDSA, RSA DH - Dates Dates Dates Dates Dates Dates Dates Dates 2017-02-13 2017-08-15 2017-01-14 2017-06-14 2015-10-24 2017-03-23 2014-03-13 2017-02-21 2015-09-20 2017-04-02 2017-02-16 2017-08-14 2016-01-29 2017-04-08 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC HMAC HMAC, Poly1305 - HMAC - Poly1305 HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 0 1 1 1 0 1 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 35 30 33 1.19 1.81 2.35 0.21 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 18.88 18.59 18.51 18.49 18.45 18.17 17.96 Impact Impact Impact Impact Impact Impact Impact Impact PBKDF2, SHA, SHA-1, SHA-2, SHA- MD5, scrypt,SHA-256, SHA, SHA-512 SHA-2, SHA-3, MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- - SHA, SHA-1 MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 BLAKE2, scrypt, SHA, SHA-2, SHA- MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512,POOL WHIRL- 3, SHA-256, SHA-512 256, SHA-512, SHAKE, Tiger, 3, SHA-512 WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha LEX, MAG, Salsa ChaCha,RC ORYX, ChaCha - - ChaCha - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. CRYPTON,PRESENT, SEED DEAL, M6, M8, AES,fish, AES-256, CAST,PRESENT, SAFER, SEED DES, ARIA, DEAL, IDEA, Blow- AES, ARIA,PRESENT, Camellia, RC, RC6, DES, SEED IDEA, DEAL, PRESENT PRESENT, SEED - IDEA NXT, SEED IDEA NXT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC wickr-crypto-c HMAC CycloneCrypto HMAC, Poly1305 lua-chacha - TinyECC HMAC php-lcrypto - luanacha Poly1305 libvmod-crypto HMAC ID ID ID ID ID ID ID ID 062 093 071 130 126 124 077

92/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL - EST,IKE, SEND HTTPS, AKA, CMP,HTTPS, EST, SSL, TLS AKA,CSR, CMS,EST, DCII, IKE, CMP, PEM,SEND, RTD, HTTPS, SSL, TLS, CMP, PEM AKA,CSR, CMS,EST, DCII, IKE, CMP, PEM,SEND, RTD, HTTPS, SSL, TLS, X.509 X.509 https://github.com/noloader/ SHA-Intrinsics https://github.com/gabriel/N https://github.com/mjfh/nim https://github.com/AtmelCS O/cryptoauth-openssl-engine https://github.com/noizbuste r/itsp-crypto-practice https://github.com/Microchi pTech/cryptoauth-openssl-en gine https://github.com/TomMD/ cipher-aes128 ACrypto -crypto PKI PKI PKI PKI PKI PKI SET SET CMP, PKCS, SET CMP, PKIX, SET, CMP, SET CMP, PKIX, SET, X.509 X.509 Licence Licence Licence Licence Licence Licence - MIT Public Domain, WT FPL, GPL,Clause BSD-3- Own License MIT Own License BSD-3-Clause PKC PKC PKC PKC PKC PKC - - DH,RSA DSA, DSS, DH,ECDSA, RSA ECDH, RSA DH,ECDSA, RSA ECDH, Dates Dates Dates Dates Dates Dates 2017-01-14 2017-05-29 2015-06-16 2017-03-06 2017-04-14 2017-05-22 2015-12-23 2016-02-26 2015-03-16 2015-11-20 2015-12-23 2016-02-26 2012-12-27 2016-08-30 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - HMAC,Poly1305, XCBC OMAC, HMAC - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 2 2 4 2 2 2 4 1 2 People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash 16 41 41 1.21 7.84 1.53 2.41 kLOC kLOC kLOC kLOC kLOC kLOC 17.92 17.75 17.53 17.13 17.13 17.13 17.06 Impact Impact Impact Impact Impact Impact SHA, SHA-1, SHA-2, SHA-3, SHA- SHA, SHA-3 MD2, MD5,SHA-3, SHA, SHA-256, SHA-1, SHA-512, SHA-2, Tiger, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, 256 WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - eSTREAM ChaCha,Salsa RC, MAG, WAKE - MAG, WAKE Related Related Related Related Related Related ------Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C - AES, AES-256, CAST,NOEKEON, DEAL, PRESENT, IDEA, Twofish AES, Anubis,CAST, Blowfish,KASUMI, CRYPTON, KHAZAD, MULTI2, Camellia, NOEKEON, DES, NDS, PRESENT,RC5, IDEA, RC6, RC, SAFER, SEED, RC2, Skipjack, AES, AES-256, ARIA,M8, DEAL, PRESENT, IDEA, SAFER, SEED DEAL, SEED AES, AES-256, ARIA,M8, DEAL, PRESENT, IDEA, SAFER, SEED Twofish, XTEA Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM SHA-Intrinsics - NACrypto - nim-crypto HMAC,Poly1305, XCBC OMAC, cryptoauth-openssl- engine HMAC itsp-crypto-practice - cryptoauth-openssl- engine HMAC cipher-aes128 ID ID ID ID ID ID 075 121 107 069 112 119 117

93/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST, HTTPS HTTPS EST, HTTPS, AKA, CMC, CMP, CSR, EST,SEND, HT- SSL, TLS HTTPS, PE CMP, HTTPS AKA, CMP,IKE, EST, PE, SEND AS1, AKA, ACME, CMP, CSR,EKE, CMS, EST,OTR, HT- PE,RTD, SSL PHE, TPS, I2P, PE, TPS, IKE, MSE, X.509 https://github.com/dexterser https://github.com/mwarnin g/mbedtls_ecp_compression https://github.com/sujaydina kar/CryptoAuth-explorations https://github.com/theori-io/ kr-crypto https://github.com/sheuman n/65816-crypto https://github.com/Silur/ope nzkp https://github.com/ramriot/ php-ext-sqrl ver/AESLib PKI PKI PKI PKI PKI PKI PKI PKI SET SET X.509 CMP, SET - CMP, SET CMP, SET CMP, SET Licence Licence Licence Licence Licence Licence Licence GPL-3.0 - Apache-2.0, BSD-3- Clause - - Apache-2.0 LGPL-3.0 PKC PKC PKC PKC PKC PKC PKC PKC - - ECDSA, RSA DH, DSS, RSA - - - DH, DSA, RSA, YAK Dates Dates Dates Dates Dates Dates Dates 2012-02-02 2016-04-14 2017-07-03 2017-07-13 2017-06-16 2017-06-18 2017-06-20 2017-06-20 2017-06-26 2017-07-05 2016-07-27 2017-03-18 2013-10-17 2015-01-11 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - OMAC - HMAC - - - XCBC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 3 1 1 1 0 1 0 1 0 1 0 1 2 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 362 2.12 0.33 1.28 2.22 0.51 5.85 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 17.06 16.81 16.44 16.38 16.26 15.69 15.63 Impact Impact Impact Impact Impact Impact Impact - - - SHA, SHA-2, SHA-3, SHA-256 - MD5, scrypt,SHA-3, SHA, SHA-256 SHA-1, SHA-2, - FSB, MD2,SHA-512 SHA, SHA-2, SHA-3, Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Turing - - Pike, RC, Turing, - - Dragon, LEX MAG, NLS WAKE Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C AES, AES-128, CAST, IDEA AES, AES-128,IDEA, PRESENT AES-192, AES-256, SEED AES, DES, DEAL,M8, PRESENT, FPE, SEED IDEA, M6, - AES, AES-128,PRESENT AES-192, AES-256, DEAL, IDEA, PRESENT AES, FPE,M8, IDEA PRESENT, NXT, RC, RC2, IDEA, RC6, SM4 M6, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM - AESLib OMAC mbedtls_ecp_comp ression - CryptoAuth-explor ations HMAC kr-crypto - 65816-crypto - openzkp - php-ext-sqrl XCBC ID ID ID ID ID ID ID 131 090 122 072 094 080 120

94/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL AS2, AKA,CMP, CMC, DTLS, EST, HT- PE, CMS, PEM,SEND, SRTP, SSL, PGP, AKA, EST, HT- AKA, EST, HT- HTTPS CMC, CMP, CMS, EST,IKE, IPsec, OCSP, PE, HTTPS, PEM,SRTP, SEND, SSH, SSL, AKA, EST, HT- TPS, IPsec, OCSP, TSP, TLS, X.509 TPS, SEND TPS, SEND TLS, X.509 TPS, IKE, SEND https://github.com/thebrank oo/CryptoLab https://github.com/thiseldo/ cryptoauth-arduino https://github.com/axelelettr onica/cryptoauth-arduino https://github.com/adrienmo https://github.com/miyako/4 d-plugin-common-crypto https://github.com/apache/i ncubator-milagro-crypto https://github.com/odzhan/c ryptoapi /crypto_ext PKI PKI PKI PKI PKI PKI PKI CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, SET SET SET CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, SET Licence Licence Licence Licence Licence Licence Licence MIT Own License Own License BSD-3-Clause OpenSSL, SSLeay Apache-2.0 BSD-2-Clause PKC PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, - - - DH,ECDH, DSA,RSA DSS, ECDSA, DSS, ECDH, RSA Dates Dates Dates Dates Dates Dates Dates 2017-01-29 2017-04-26 2014-11-13 2015-07-12 2014-11-13 2015-07-12 2015-04-23 2016-08-26 2015-06-23 2016-10-01 2016-03-10 2016-11-25 2017-02-27 2017-04-20 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC, XCBC HMAC HMAC - HMAC, XCBC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 3 1 3 1 2 1 1 1 2 1 0 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 42 10 10 62 96 1.81 4.26 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 15.5 15.5 15.58 15.47 14.98 14.97 14.89 Impact Impact Impact Impact Impact Impact Impact GOST,RIPEMD, SHA, MD2, SHA-1, SHA-2, SHA- MD5, PBKDF2, SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-256 - GOST,RIPEMD, SHA, MD2, SHA-1, SHA-2, SHA- MD5, PBKDF2, SHA, SHA-2, SHA-3, SHA-256 3, SHA-256, SHA-512, WHIRLPOOL 3, SHA-256, SHA-512, WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. RC, SEAL, Turing, WAKE WAKE - Panama,SEAL, RC, Turing, - Vernam Vernam Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C AES, AES-128,CAST, AES-192, CDMF,GOST, DES, IDEA NXT,PRESENT, AES- DEAL, IDEA, FPE, RC, M6,SEED M8, RC2, RC5, RC6, CAST, NDS, PRESENT, SEED CAST, NDS, PRESENT, SEED AES AES, AES-128,Blowfish, AES-192, Camellia,DES, AES-256, CAST, DEAL,IDEA, CDMF, M6, GOST,RC, M8, RC2, IDEA RC5, MESH, SEED NXT, PRESENT, AES, CRYPTON,M8, DES, Mercy, PRESENT, IDEA, SEED M6, 256, ARIA, Blowfish, Camellia, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM CryptoLab HMAC, XCBC cryptoauth-arduino HMAC cryptoauth-arduino HMAC crypto_ext - 4d-plugin-common- crypto HMAC, XCBC incubator-milagro-c rypto - cryptoapi ID ID ID ID ID ID ID 087 073 127 078 084 066 098

95/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL CMC, CMP, CMS, EST, IPsec, OCSP, PE, PEM, SSL, CMP AKA, CMP,HTTPS, EST, SSH, TLS, WPA IKE, EST, HTTPS AKA, CGA, DCII, EST,PANA,PE, HTTPS, RMA, PCT, SSL, CMP, EST, HT- EST, PEM EST, HTTPS TSP, VBR, WPA, TPS, IKE, PE X.509 WPA2 https://github.com/AlexDFis cher/Quadratic-Sieve https://github.com/cryptotro nix/yacl https://github.com/thomwigg ers/proest-arm11 https://github.com/cipherboy https://github.com/polysome https://github.com/waynemy stir/crypto_wrapper https://github.com/sainthsu/ crypto /crypto-collection /vane PKI PKI PKI PKI PKI PKI PKI CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, CMP, SET CMP, SET SET SET CMP, SET SET SET Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, - DH, DSS,ECDSA ECDH, - DH, DSA, DSS DH RSA RSA Dates Dates Dates Dates Dates Dates Dates 2017-04-01 2017-04-06 2015-09-02 2016-08-20 2014-10-14 2016-04-11 2016-08-24 2017-01-26 2015-06-06 2015-09-23 2017-03-24 2017-03-31 2015-09-21 2016-01-19 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - HMAC, Poly1305 - HMAC - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 1 1 0 1 0 1 1 1 0 1 1 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 13 38 1.33 0.86 7.05 0.53 3.63 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.42 14.25 14.04 13.73 13.65 13.63 13.31 Impact Impact Impact Impact Impact Impact Impact GOST, MD2, MD5,SHA-1, RIPEMD, SHA, SHA-512, SHA-2, WHIRLPOOL SHA-3, SHA-256, - BLAKE2, MD5, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 - MD2, MD5, MD6,SHA-1, RadioGatun, SHA-2, SHA, SHA-3 SHA, SHA-2, Skein scrypt MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. RC - ChaCha,Salsa RC, - ChaCha,MAG, Rabbit, RC LEX, NLS - - Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C AES, AES-128,Camellia, CDMF, AES-192, DES, GOST, IDEA, PRESENT, AES-256, RC, RC2, RC5, SEED PRESENT AES,DES, AES-128, PRESENT, SAFER, SEED AES-256, CAST, - AES, AES-128,NXT, M6, AES-192,PRESENT, M8, RC, MMB, AES- RC2, NOEKEON, RC5, SEED, AES, CAST,IDEA, M6, DEAL,Serpent, M8, Threefish IDEA MMB, NXT, PRESENT, AES, AES-256 AES, CAST,PRESENT, SEED DEAL, IDEA, M8, 256, Blowfish, DES, DEAL, IDEA 3DES Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC Quadratic-Sieve - yacl HMAC, Poly1305 proest-arm11 - crypto-collection HMAC vane - crypto_wrapper - crypto - ID ID ID ID ID ID ID 125 095 108 104 110 105 064

96/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL AKA, CMP,EST, CSR, IKE,SEND, TLS, X.509 PEM, HTTPS, SEND CMP, EST, HT- CMS, DPD,GSI, EST, HTTPS,PEM, PE, PHE,SSH, TSP, SCP, VBR CMP, EST, HT- CMP, EST, HT- CMC, CMP, CMS, EST,IPsec,PE, HTTPS, PEM,SRTP, SEND, SSL, OCSP, TLS, TPS, PEM, SEND TPS, SEND TPS, SEND X.509 https://github.com/CryptoT hings/AtCryptoAuthLib https://github.com/bukka/ph p-rsa https://github.com/26597925 https://github.com/bahusvel/ CryptoMalloc https://github.com/mcornejo https://github.com/sathibaul t/cryptoauthlib https://github.com/lgyhitler/ node-weixin-crypto /cse539_crypto_prj /libpaillier PKI PKI PKI PKI PKI PKI PKI CMP, SET, X.509 SET CMP, SET SET CMP, SET CMP, SET CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC ECDH, ECDSA RSA DH, RSA DH, RSA Paillier ECDH, ECDSA DH,ECDH, DSA,RSA DSS, ECDSA, Dates Dates Dates Dates Dates Dates Dates 2017-02-08 2017-02-15 2015-04-24 2015-10-01 2015-11-06 2015-11-28 2016-05-03 2016-11-05 2017-01-26 2017-02-01 2017-02-22 2017-02-27 2016-01-13 2016-01-14 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - - - - HMAC HMAC, XCBC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 0 1 1 1 0 1 1 1 0 1 1 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 19 82 1.18 1.23 2.31 1.11 9.07 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.0 12.9 13.17 13.15 12.97 12.72 12.68 Impact Impact Impact Impact Impact Impact Impact SHA, SHA-1, SHA-2, SHA-3, SHA- MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 SHA, SHA-1 MD2 - SHA, SHA-1, SHA-2, SHA-3, SHA- GOST,RIPEMD, SHA, MD2, SHA-1, SHA-2, SHA- MD5, PBKDF2, 256 256 3, SHA-256, SHA-512, WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. WAKE - - - LEX WAKE RC, Turing,nam Ver- Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C CAST, DEAL, PRESENT, SEED - PRESENT, SEED AES, DFC, FPE, M6,Prince, M8, PRESENT, RC, RC2 DEAL, PRESENT DEAL, PRESENT, SEED AES, AES-128,Blowfish, AES-192, Camellia,DES, AES-256, CAST, DEAL,PRESENT, CDMF, RC, RC2, GOST, RC5, SEED IDEA, M8, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM AtCryptoAuthLib HMAC php-rsa - cse539_crypto_prj - CryptoMalloc - libpaillier - cryptoauthlib HMAC node-weixin-crypto HMAC, XCBC ID ID ID ID ID ID ID 091 118 115 086 096 083 102

97/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL AKA, CMC, CMP, CMS, DPD,HTTPS, EST, OCSP, PE,SEND, IPsec, PEM, SRTP, SSL, EST, HTTPS HTTPS EST,OCSP,SEND, HTTPS, SSL, TLS, PEM, WPA, SRTP, AKA, CMC, CMP, CSR, CMS,GPG, EST, IES, IKE,OCSP, HTTPS, PE, IPsec, PoSE, SCEP, PGP, SCP, SCVP,SFTP, SRTP, SSH, SSL, SEND, TSP, TLS, EST,SEND HTTPS, TLS, WPS, X.509 X.509 WTLS, X.509 https://github.com/zhulianha i/CryptoWrapperForCCode https://github.com/iceman10 01/crypto1_bs https://github.com/gregoires age/pebble-crypto https://github.com/mcxiaoke https://github.com/ryankurt e/cryptlib https://github.com/majestrat e/cryptonight /scrypto PKI PKI PKI PKI PKI PKI CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, SET SET OCSP, SET, X.509 CMP,EJBCA, Identrus, LDAP, DVCS, PKCS,RPKI, OCSP, SCEP, SET, PKIX, SigG, RTCS, SET X.509 Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, - - DH,ECDSA, DSA, RSA DSS, DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, - Dates Dates Dates Dates Dates Dates Dates 2016-01-13 2016-01-13 2016-04-12 2016-04-20 2016-07-11 2016-10-18 2016-01-16 2016-01-17 2016-02-05 2016-02-05 2016-05-22 2016-05-22 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - - HMAC, Poly1305 HMAC, XCBC HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 1 1 0 1 0 1 0 1 0 People People People People People People People A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash 11 12 123 380 0.74 0.16 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 11.9 12.68 12.29 12.19 11.99 11.45 Impact Impact Impact Impact Impact Impact Impact GOST,RIPEMD, SHA, MD2, SHA-1, SHA-2, SHA- MD5, PBKDF2, SHA, SHA-1 SHA, SHA-2, SHA-3, SHA-256 MD5, scrypt,SHA-3, SHA, SHA-256, SHA-512 SHA-1, SHA-2, GOST, MD2, MD5,RIPEMD, scrypt, MD6, SHA, PBKDF2, SHA-1, SHA- BLAKE2, SHA, SHA-3, Skein 3, SHA-256, SHA-512, WHIRLPOOL 2, SHA-3, SHA-256, SHA-512, Tiger, WHIRLPOOL Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. eSTREAM,MAG, LEX, RC, Turing, Crypto1 - ChaCha,Scream, SEAL RC, Dragon,LEX, RC, FISH, SEAL, ChaCha Turing, Vernam, WAKE WAKE Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C M.L. C M.L. C M.L. C M.L. C M.L. I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. AES, AES-128,Camellia, AES-192,DEAL, AES-256, CAST, FPE, GOST,PRESENT, IDEA, M6, RC, CDMF,SM4 M8, RC2, RC5, DES, SEED, AES, DEAL, IDEA, PRESENT DEAL AES,DES, AES-128, IDEA, PRESENT AES-256, CAST, AES, AES-128, AES-192, AES-256, GOST, IDEA NXT,MAGENTA, MESH, IDEA, MISTY1, M6,PRESENT, MMB, M8, RC, RC2,Serpent, SEED, RC5, Skipjack, SAFER, 3DES AES, AES-256,M6, CAST, SEED CRYPTON, 256, Blowfish, CAST, DES, DEAL, ARIA, ARIA-128, ARIA-192, ARIA- Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM CryptoWrapperFor CCode HMAC crypto1_bs - pebble-crypto - scrypto HMAC, Poly1305 cryptlib HMAC, XCBC cryptonight HMAC ID ID ID ID ID ID ID 114 123 106 088 129 082

98/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL CMP, EST - - AS1, AS2,CMC, CMP, AKA, CSR, CMS, CGA, DPD, DPV, DCII,GSI, EST, HTTPS, IES, IKE, IPsec,OTR, MSE, PCT,PEM, PHE, PE, SCP, PGP, SEND,SSL, SSH, TSP, TLS, - - WPA https://github.com/sfackler/ rust-openssl https://github.com/b/Lattice Crypto https://github.com/emreberb er/Cryptology https://github.com/avisharm a/cryptomiser https://github.com/stampar m/cryptospecs - - PKI PKI PKI PKI PKI PKI PKI CMP, SET - - CMP, SET, SigG - - Licence Licence Licence Licence Licence Licence Apache-2.0, MIT, O penSSL, SSLeay - - - - PKC PKC PKC PKC PKC PKC PKC - - - - RSA DH, DSA, DSS, El- Gamal, LUC, Pail- lier, RSA, YAK - - Dates Dates Dates Dates Dates - - Dates - - 2011-12-15 2017-08-16 2016-05-25 2016-05-25 2016-05-31 2016-06-06 2016-10-14 2016-10-19 2016-07-07 2016-07-08 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Explanations ------Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind - - - - Doc. Kind Readme, Website 1 0 1 0 1 0 1 0 1 143 People People A C A C People People People A C A C A C A C People - - A C Hash Hash Hash Hash Hash Hash Hash 22 22 0.8 1.85 0.81 kLOC kLOC kLOC kLOC kLOC - - kLOC 11.3 11.44 11.44 11.31 34.81 Impact Impact Impact Impact Impact Impact - - - FSB, HAVAL,RIPEMD, SHA, MD2, SHA-1, SHA-2, SHA- MD5,POOL MD6, - - 3, SHA-256, , Tiger, WHIRL- Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - , DECIM,LEX, ISAAC, Mir-1, MICKEY, Rabbit, NLS,SEAL, Py, SNOW, SFINKS, Trivium, RC, - - VigenereYamb, ZUC cipher, Related Related Related Related Related Related - - 137, https:// org www.libressl. - - - - Type Type Wrap. Wrap. Type Wrap. Type Type Type Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. - M.L. - M.L. Rust C M.L. C M.L. C M.L. C I.L. C I.L. C I.L. C I.L. C I.L. C I.L. C Rust DEAL, RC, RC2, SEED - IDEA, PRESENT 3-Way,Camellia, AES, CAST, CAST-128, Anubis, CAST- DFC, FEAL, Blowfish, IDEA, FPE, KHAZAD,LOKI97, FROG, , M6, GOST, M8, Khufu,MAGENTA, MacGuffin, Khafre, MMB, NDS, MARS,PRESENT, NewDES, RC, NOEKEON, REDOC, RC2, SAFER, MISTY1, SHARK, RC5, Serpent, Skipjack, RC6, SEED, TEA, Twofish, - - 256, CRYPTON, DES, DEAL, XTEA Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM LatticeCrypto - Cryptology - cryptomiser - cryptospecs - lightcrypto - pyaes - rust-openssl ID ID ID ID ID ID 092 097 099 063 144 145 216

99/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL CMC, CMP, CSR, CMS,DPD, EST, HT- OCSP, DTLS, PE,SEND, PEM, SRTP, SSL, CMP, EST, HT- CMP, HTTPS, PE CMP, CSR, DTLS, EST,IKE, OCSP,PEM, SEND, HTTPS, PE, SSL, CMP,IKE, SEND, SSL HTTPS, CMP, DPD, HT- SEND, SSL, TLS TPS, IKE, IPsec, TLS, X.509 TPS, SEND, TLS TLS, X.509 TPS, IKE, PEM, https://github.com/dnaq/so diumoxide https://github.com/ctz/rustl s https://github.com/sfackler/ rust-security-framework https://github.com/steffengy /schannel-rs https://github.com/SpinRese arch/RustySecrets PKI PKI PKI PKI PKI CMP,LDAP,PKCS, DVCS, SET, X.509 OCSP, PKIX, CMP, SET CMP, SET CMP, OCSP, SET, CMP, SET CMP, SET X.509 Licence Licence Licence Licence Licence Licence Apache-2.0, MIT Apache-2.0, MIT, I SC Apache-2.0, MIT MIT BSD-3-Clause PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, - DH DH,ECDSA, RSA, ECDH, DH DH, DSA, RSA YAK Dates Dates Dates Dates Dates Dates 2013-12-05 2017-05-24 2016-05-02 2017-08-12 2015-08-19 2017-08-14 2015-10-07 2017-07-19 2015-01-29 2017-08-04 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Apis, Explanations Apis, Explanations HMAC, Poly1305 Poly1305 - HMAC, Poly1305 HMAC - Doc. Kind Readme, Website Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website 2 4 1 1 1 1 31 17 10 10 People People A C People People People People A C A C A C A C Hash Hash Hash Hash Hash 18 5.7 3.08 6.67 3.54 kLOC kLOC kLOC kLOC kLOC kLOC 28.28 32.07 27.99 27.58 27.35 Impact Impact Impact Impact Impact Impact MD2,scrypt, MD5, SHA, SHA-1,SHA-256, PBKDF2, SHA-512, SHA-2, WHIRLPOOL SHA-3, RIPEMD, BLAKE2, scrypt, SHA, SHA-2, SHA- - MD2, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5, SHA, SHA-1 MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, 3, SHA-256, SHA-512, SipHash Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, LEX, RC, ChaCha,SEAL Salsa, - ChaCha,SEAL RC, - - Vernam Related Related Related Related Related Related http://nacl.cr .yp.to 211, 227 https://devel oper.apple.co m/document ation/securit https://msdn .microsoft.co m/de-de/libr ary/windows/ desktop/aa38 0123(v=vs.85 ).aspx - y Type Stan. Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. I.Lvl. High I.Lvl. Low I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust AES, AES-128,Camellia, CDMF, AES-192, DES, DEAL,M6, IDEA, AES-256, PRESENT,SAFER, SEED RC, RC2, RC5, AES, AES-128,PRESENT, DEAL, SEED IDEA NXT, DEAL,PRESENT M6, M8, MAGENTA, AES,IDEA, AES-128, M6,SM4 AES-256, M8, PRESENT, DEAL, SEED, DEAL, IDEA NXT, M6, PRESENT AES, DEAL, M6, PRESENT Name Name Name Name Name Name EAM EAM EAM EAM EAM HMAC, Poly1305 sodiumoxide Poly1305 RustySecrets - rustls HMAC, Poly1305 rust-security-frame HMAC schannel-rs - work ID ID ID ID ID ID 215 175 222 225 226

100/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL HTTPS,SEND IKE, CMP, EST, HT- EST, HTTPS CMP, EST, HT- HTTPS HTTPS,PEM, SEND, SSL, IKE, TPS, SEND, TLS TPS, TLS TLS, X.509 https://github.com/maidsafe https://github.com/sfackler/ rust-native-tls https://github.com/isislovecr uft/curve25519-dalek /rust_sodium https://github.com/sopium/n oise-rust https://github.com/debris/ti ny-keccak https://github.com/DaGenix/ rust-crypto https://github.com/stainless- steel/md5 PKI PKI PKI PKI PKI PKI PKI SET CMP, SET - CMP, PKCS, SET - SET, X.509 Licence Licence Licence Licence Licence Licence - MIT, Apache-2.0, B SD-like BSD-3-Clause Unlicense CC0-1.0 MIT, Apache-2.0 Apache-2.0, MIT PKC PKC PKC PKC PKC PKC PKC DH - - DH - - Dates Dates Dates Dates Dates Dates 2016-08-04 2017-07-26 2016-04-16 2017-07-07 2016-12-08 2017-08-15 2015-10-18 2017-06-13 2015-11-27 2017-08-14 2013-10-08 2016-09-07 2015-06-21 2017-06-12 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples Doc. Com. Doc. Com. Examples Apis, Examples, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC, Poly1305 Poly1305 - HMAC, Poly1305 - - Readme Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website 2 4 1 7 1 1 4 1 1 7 2 6 53 16 People People People A C A C A C A C People People A C A C People A C Hash Hash Hash Hash Hash Hash Hash 30 8.7 2.34 0.64 0.41 7.24 2.08 kLOC kLOC kLOC kLOC kLOC kLOC 27.0 27.21 25.93 25.29 25.27 25.03 24.94 Impact Impact Impact Impact Impact Impact BLAKE2, SHA, SHA-2, SHA-3, SHA- BLAKE2, scrypt, SHA, SHA-2, SHA- SHA, SHA-3,SHAKE SHA-256, SHA-512, BLAKE2, MD5, PBKDF2,scrypt, RIPEMD, SHA, SHA-1,SHA-256, SHA-512, SHA-2, SHAKE, WHIRL- SHA-3, POOL MD5 - 256, SHA-512 3, SHA-256, SHA-512, SipHash Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, SEAL ChaCha,SEAL Salsa, - ChaCha, HC-256, HC-128, RC, Salsa, Sosemanuk RC - Related Related Related Related Related Related 132 https://crate s.io/crates/sc hannel , https ://crates.io/c rates/openssl , https://crat es.io/crates/s ecurity-frame http://noisep rotocol.org - - - work - Stan. Type Stan. Type Stan. Type Stan. Type Type Type Stan. Wrap. Wrap. High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust AES, DEAL, PRESENT AES,DEAL, AES-128,SEED AES-256, IDEA CAST, NXT, PRESENT, PRESENT AES, Blowfish, CAST,NXT, DEAL, PRESENT, IDEA SEED DEAL, RC DEAL, M6, PRESENT Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM noise-rust HMAC, Poly1305 rust_sodium Poly1305 tiny-keccak - rust-crypto HMAC, Poly1305 md5 - rust-native-tls - curve25519-dalek ID ID ID ID ID ID 153 212 207 146 192 224 184

101/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL CMP, EST, HT- CMP, CMS, CGA, EST, GPG, HT- PGP, PoSE, RTD, SEND HTTPS DPD, EST, HT- PE, PEM, TLS, HTTPS EST, HTTPS CMP, HTTPS TPS, IKE, SEND TPS, IKE, PE, TPS, IKE, OTR, X.509 https://github.com/johnschu g/rust-gpgme https://github.com/briansmi th/webpki https://github.com/bryant/a rgon2rs https://github.com/cryptosp here/ring-pwhash https://github.com/shepmast er/twox-hash https://github.com/mitsuhik o/rust-sha1 PKI PKI PKI PKI PKI PKI CMP, SET CMP, SET SET PKCS,SET, X.509 PKIX, - SET CMP Licence Licence Licence Licence Licence Licence Licence LGPL-2.1 ISC MIT MIT, Apache-2.0 MIT BSD-3-Clause PKC PKC PKC PKC PKC PKC - DH, RSA - ECDH,RSA ECDSA, - - - Dates Dates Dates Dates Dates Dates Dates 2015-05-14 2017-08-04 2015-08-27 2017-06-12 2016-01-30 2017-06-06 2016-07-16 2017-06-24 2015-05-02 2017-05-26 2014-11-21 2017-04-06 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples Doc. Com. Doc. Com. Doc. Com. Apis, Examples Apis, Examples, Explanations Apis, Explanations Apis, Examples, Explanations Apis, Explanations ------Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website 1 2 1 6 1 2 1 2 1 4 1 5 People People People A C A C People A C People People People A C A C A C Hash Hash Hash Hash Hash Hash 1.15 0.35 8.95 2.95 1.67 0.56 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 23.45 23.16 24.29 23.84 24.05 23.39 Impact Impact Impact Impact Impact Impact Impact SHA, SHA-2 - BLAKE2 SHA, SHA-1, SHA-2, SHA-3, SHA- SipHash PBKDF2, scrypt SHA, SHA-1 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - Salsa - Related Related Related Related Related Related Related https://githu b.com/Cyan4 973/xxHash https://www. gnupg.org/(it )/related_sof tware/gpgme - https://githu b.com/brians mith/mozilla pkix - - /index.html Type Type Type Stan. Reim. Type Type Type Stan. Type Stan. Reim. Wrap. I.Lvl. High I.Lvl. High I.Lvl. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. Rust M.L. M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust IDEA, PRESENT IDEA, M6, M8, NDS, PRESENT DEAL, PRESENT DEAL, DFC, M8, PRESENT DEAL, SEED CAST, DEAL, PRESENT IDEA NXT, PRESENT Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM - rust-gpgme - argon2rs - webpki - twox-hash - ring-pwhash - rust-sha1 - ID ID ID ID ID ID ID 203 179 227 208 197 206

102/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL CMP, EST,HTTPS, GPG, PoSE EST, HTTPS CMP, EST, HT- EST,SCRAM, SEND HTTPS, HTTPS HTTPS HTTPS TPS, PE https://github.com/racum/r ust-djangohashers https://github.com/RustCry pto/hashes https://github.com/tomprogr ammer/scram https://github.com/ruma/ru ma-signatures https://github.com/johnschu g/rust-gcrypt https://github.com/badboy/ nobsign https://github.com/Tyzzer/h c256 https://github.com/Tyzzer/h c128 PKI PKI PKI PKI PKI PKI PKI CMP, SET SET CMP, SET - - SET - Licence Licence Licence Licence Licence Licence Licence BSD-3-Clause Apache-2.0, MIT MIT MIT LGPL-2.1 BSD-3-Clause MIT MIT PKC PKC PKC PKC PKC PKC PKC ECDSA, RSA - DH - - DSA - Dates Dates Dates Dates Dates Dates Dates 2015-12-28 2017-06-14 2016-10-14 2017-07-24 2016-08-18 2017-07-19 2015-12-04 2017-05-09 2015-07-03 2017-08-04 2015-10-13 2017-05-09 2016-06-06 2017-07-10 2016-06-07 2017-07-22 MAC MAC MAC MAC MAC MAC MAC Apis Doc. Com. Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC HMAC HMAC HMAC HMAC - - Readme, Website Doc. Kind Readme, Website Doc. Kind Download Doc. Kind Download Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Website 1 0 1 2 1 0 1 0 1 1 1 5 1 3 1 2 A C People People People A C A C A C People People People People A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 10 6.43 0.26 0.26 0.37 1.39 1.22 0.89 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 20.8 22.79 21.55 20.79 22.58 22.54 22.05 21.27 Impact Impact Impact Impact Impact Impact Impact PBKDF2, scrypt, SHA, SHA-1, SHA- MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256 BLAKE2, GOST, Grostl, MD2,RIPEMD, SHA, MD5, SHA-1, SHA-2, SHA- bog, WHIRLPOOL PBKDF2 - - - 2, SHA-3, SHA-256 3, SHA-256, SHA-512, SHAKE, Stree- Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------Related Related Related Related Related Related Related https://gnup g.org/related gcrypt https://githu b.com/cyx/n obi - - https://www. djangoproject. com _software/lib - - - Type Type Stan. Type Stan. Reim. Wrap. Type Type Stan. Type Stan. Type Stan. Reim. I.Lvl. High I.Lvl. High I.Lvl. High High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. Rust M.L. Rust Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust Rust IDEA, PRESENT DEAL DEAL,PRESENT IDEA NXT, M6, M8, DEAL, PRESENT - DEAL, PRESENT, SEED DEAL Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM rust-gcrypt HMAC rust-djangohashers HMAC hashes HMAC scram HMAC nobsign HMAC ruma-signatures - hc256 - hc128 ID ID ID ID ID ID ID 148 219 210 176 218 163 189 188

103/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL HTTPS DPD,IES,PEM, OTR, HTTPS, RMA, SSL, PE, HTTPS, TLS EST,SEND HTTPS, HTTPS, SEND EST, HTTPS X.509 https://github.com/malept/c rypto-hash https://github.com/RustCry pto/block-ciphers https://github.com/ctz/webp ki-roots https://github.com/quininer/ newhope https://github.com/rust-fcp/ rust-fcp-cryptoauth PKI PKI PKI PKI PKI PKI - X.509 SET - SET SET Licence Licence Licence Licence Licence Licence MIT Apache-2.0, MIT MPL-2.0 MIT MIT PKC PKC PKC PKC PKC PKC - DH, DSS - - - - Dates Dates Dates Dates Dates Dates 2016-06-23 2017-07-10 2016-12-16 2017-08-07 2016-08-28 2017-08-13 2016-07-14 2017-07-10 2016-10-05 2017-06-17 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations - - - - Poly1305 - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme, Website 1 1 1 0 1 1 1 0 1 2 People People A C People People A C A C People A C People A C Hash Hash Hash Hash Hash Hash 5.71 2.22 2.91 0.53 3.04 kLOC kLOC kLOC kLOC kLOC kLOC 20.75 20.48 20.38 20.66 20.24 Impact Impact Impact Impact Impact Impact - FSB, SHA, SHA-2, SHA-3, SHA-256 MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, SHA, SHA-3, SHA-256, SHAKE SHA, SHA-2, SHA-3,512 SHA-256, SHA- - Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - ChaCha Salsa, SEAL - Related Related Related Related Related Related https://mkce rt.org https://githu b.com/google e/master/cry pto/newhope , https://githu b.com/fschlie ker/newhope https://msdn .microsoft.co m/en-us/libr ary/ms86708 6.aspx , https: ates/common crypto , https: ates/openssl - /boringssl/tre - //crates.io/cr //crates.io/cr Type Type Type Type Stan. Reim. Wrap. Type Type Stan. Wrap. I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. Rust M.L. Rust M.L. M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust DEAL DES, FPE, M6, M8, TEA DEAL, IDEA NXT DEAL DEAL, PRESENT AES, AES-128,Blowfish, DEAL, AES-192, GOST,PRESENT, , AES-256, RC, RC2, Twofish Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM - webpki-roots - crypto-hash - newhope - rust-fcp-cryptoauth Poly1305 block-ciphers - ID ID ID ID ID ID 232 157 194 166 209

104/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL CMP, HTTPS CMP, HTTPS HTTPS EST, HTTPS CMP, HTTPS EST, HTTPS CMP CMP, HTTPS https://github.com/quininer/ blissb https://github.com/quininer/ seckey https://github.com/malept/r ust-commoncrypto https://github.com/psychona utwiki/heimdal https://github.com/cesarb/cl ear_on_drop https://github.com/isislovecr uft/ed25519-dalek https://github.com/DSRCor poration/milagro-crypto-rust https://github.com/PeterRei d/chacha https://github.com/inejge/p whash PKI PKI PKI PKI PKI PKI PKI PKI PKI CMP CMP, SET - SET CMP, SET SET CMP, SET CMP Licence Licence Licence Licence Licence Licence Licence Licence ------MIT, Apache-2.0 - PKC PKC PKC PKC PKC PKC PKC PKC PKC - - - - - DH - - Dates Dates Dates Dates Dates Dates Dates Dates 2016-08-28 2017-07-12 2016-08-30 2017-08-04 2016-11-19 2017-07-16 2016-09-10 2017-06-06 2017-01-14 2017-08-06 2016-12-01 2017-08-16 2017-03-22 2017-08-02 2016-03-01 2017-04-25 2016-02-09 2017-04-01 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples Doc. Com. ------Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 1 1 0 1 2 1 1 1 3 1 1 1 2 People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash Hash 0.8 0.86 0.63 0.73 0.75 0.83 2.83 0.77 2.45 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 19.9 19.6 18.9 20.08 20.07 19.89 19.88 19.77 19.35 Impact Impact Impact Impact Impact Impact Impact Impact SHA, SHA-3, SHA-512 - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 SHA, SHA-1,512 SHA-2, SHA-3, SHA- - SHA, SHA-2 SHA, SHA-2, SHA-3, SHA-256 - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - ChaCha - - - ChaCha, Salsa Related Related Related Related Related Related Related Related ------https://docs.r s/chacha/0.1. 0/chacha - Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust Rust Rust DEAL DEAL DEAL, IDEA NXT DEAL, SEED DEAL, PRESENT PRESENT SEED DEAL, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM EAM blissb - seckey - rust-commoncrypto - heimdal - clear_on_drop - ed25519-dalek - milagro-crypto-rust - chacha - pwhash ID ID ID ID ID ID ID ID 169 229 213 168 228 185 155 182 196

105/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL CMP, HTTPS, PE HTTPS, IKE CMP, EST, HT- PGP, TLS CMP, HTTPS HTTPS HTTPS EST, HTTPS, PE CMP, HTTPS HTTPS,SEND, SSL, TLS PEM, TPS, IES, PCT, https://github.com/briansmit h/untrusted https://github.com/libOctav o/octavo https://github.com/danielreis inger/blake2b https://github.com/badboy/ murmurhash64-rs https://github.com/stouset/s ecrets https://github.com/snipsco/r ust-paillier https://github.com/jmesmon https://github.com/cmalekpo ur/minimal-tls /sodalite PKI PKI PKI PKI PKI PKI PKI PKI CMP, SET - CMP, SET CMP, SET - SET SET CMP, SET SET Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DSS - DH, RSA - - - Paillier - ECDSA, RSA Dates Dates Dates Dates Dates Dates Dates Dates Dates 2016-06-05 2017-04-27 2015-07-27 2016-09-26 2017-01-23 2017-06-26 2014-10-28 2016-12-09 2014-12-08 2016-10-31 2016-07-19 2017-03-16 2015-10-15 2017-02-03 2017-03-24 2017-05-16 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - HMAC - - - - Poly1305 HMAC, Poly1305 Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 9 1 0 1 2 1 3 1 2 1 1 1 1 People People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.4 3.4 8.13 0.84 0.31 1.24 2.92 2.93 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 17.4 16.8 18.76 18.74 18.49 17.24 17.02 16.83 Impact Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - BLAKE2,SHA-1, MD5,SHA-512, SHA-2, RIPEMD, Tiger, WHIRLPOOL SHA-3, SHA, SHA-256, BLAKE2 - - - SHA, SHA-2, SHA-3,512 SHA-256, SHA- SHA, SHA-1, SHA-2, SHA-3, SHA- 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha - - - - Salsa ChaCha Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust Rust DES, DEAL - Blowfish,PRESENT, SEED DEAL, IDEA NXT, M6, PRESENT, SEED SEED DEAL, PRESENT DEAL, PRESENT, SEED CAST, SEED DEAL, PRESENT Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM HMAC untrusted - octavo HMAC blake2b - murmurhash64-rs - secrets - rust-paillier - sodalite Poly1305 minimal-tls HMAC, Poly1305 ID ID ID ID ID ID ID ID ID 231 147 180 193 230 173 214 150

106/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL CMP, HTTPS HTTPS EST, HTTPS AKA,CAVE, EKE, Fire- fly, HTTPS, ACME, KINK, IKE, PE,RMA, PoSE, SEND, SPORE SCRAM, HTTPS EST, HTTPS, HTTPS TLS https://github.com/jedisct1/ rust-siphash https://github.com/Keats/ru st-bcrypt https://github.com/burdges/ lioness-rs https://github.com/seiflotfy/ rust-farmhash https://github.com/krl/crypt ohash https://github.com/DaGenix/ rust-crypto-working https://github.com/mikeycgt o/message_verifier PKI PKI PKI PKI PKI PKI PKI CMP, SET - - OpenCA, SET - SET SET Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC - - - DH, RSA, YAK - - - Dates Dates Dates Dates Dates Dates Dates 2016-10-04 2017-03-23 2015-12-24 2016-12-04 2016-12-16 2017-04-11 2015-07-10 2016-03-20 2017-07-22 2017-07-23 2013-10-08 2016-05-22 2016-10-24 2017-03-18 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - MMH-Badger - HMAC HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 3 1 1 1 5 1 0 1 0 1 0 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 0.1 1.33 0.48 0.39 1.53 3.97 0.75 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 16.59 16.19 16.06 16.01 15.82 14.87 14.87 Impact Impact Impact Impact Impact Impact Impact SipHash - BLAKE2, scrypt SipHash, Skein, Tiger, WHIRLPOOL BLAKE2 MD5, PBKDF2, scrypt,SHA-2, SHA, SHA-3, SHA-1, SHA-256, SHA-512 PBKDF2, SHA, SHA-1 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha ChaCha,CING,eSTREAM, FISH, , Dragon, DI- MAG,Pike, Rabbit, LE- Ram- Panama, butan,SEAL,SOBER, Scream, Solitaire, SNOW, - Salsa - Trivium, Turing, VIATHAN, LEX, Vernam, VEST, WAKE Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust - DEAL, IDEA DEAL, PRESENT AES,CAST, ARIA, Chiasmus, ,DEAL, CRYPTON, BATON, FEAL,IDEA, FROG, Lucifer, Blowfish, M6, IDEAMercy, M8, NXT, MAGENTA, PRESENT, MESH, Prince,pent, RC, MMB,Speck, RC2, SEED, TEA, Xenon, Ser- Nimbus, SHARK, Skipjack, - CAST,PRESENT DEAL, IDEA NXT, AES, AES-256, DEAL, IDEA Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM rust-siphash - rust-bcrypt - lioness-rs - rust-farmhash MMH-Badger cryptohash - rust-crypto-working HMAC message_verifier HMAC ID ID ID ID ID ID ID 151 199 191 201 165 159 171

107/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS CMP, HTTPS CMP, HTTPS EST, GPG, HT- CMP, EST, HT- HTTPS, PEM HTTPS, SEND CMP, HTTPS - TPS TPS https://github.com/snipsco/r ust-threshold-secret-sharing https://github.com/cesarb/bl ake2-rfc https://github.com/ebfe/rust- blake2 https://github.com/zcdziura/ pumpkin https://github.com/vladikoff/ rust-hkdf https://github.com/yberreby/ steam-crypto-rs https://github.com/zombiem uffin/edcert https://github.com/cantora/r ust-cryptopp https://github.com/hmac/rus t-crypto PKI PKI PKI PKI PKI PKI PKI PKI PKI - CMP, SET CMP SET CMP - SET CMP - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC ------DSA - - Dates Dates Dates Dates Dates Dates Dates Dates 2016-06-24 2017-01-23 2015-05-24 2016-02-27 2014-08-25 2015-06-06 2015-09-23 2016-06-11 2015-01-02 2015-12-26 2015-09-05 2016-01-11 2016-02-21 2016-10-22 2015-04-13 2015-09-10 2014-12-03 2016-03-16 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - - HMAC - - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 1 0 People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash Hash 0.2 1.5 1.84 1.29 5.06 0.55 0.11 1.79 0.27 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.83 14.52 14.48 14.33 14.28 13.99 13.96 13.85 13.84 Impact Impact Impact Impact Impact Impact Impact Impact - BLAKE2 BLAKE2 - SHA, SHA-2 - SHA, SHA-2, SHA-3, SHA-512 SHA, SHA-1, SHA-3 - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust Rust Rust DEAL, PRESENT CAST,PRESENT, SEED DEAL, IDEA NXT, - DEAL, PRESENT DEAL DEAL, IDEA NXT, PRESENT DEAL, PRESENT - AES Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM EAM rust-threshold-secre t-sharing - blake2-rfc - rust-blake2 - pumpkin - rust-hkdf HMAC steam-crypto-rs - edcert - rust-cryptopp HMAC rust-crypto - ID ID ID ID ID ID ID ID 174 181 200 195 204 156 217 160 158

108/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL HTTPS, SEND HTTPS CMP, EST, HT- HTTPS, SSL, TLS EST,SEND HTTPS, HTTPS CMP, HTTPS HTTPS TPS https://github.com/tiffany35 https://github.com/CodingA narchy/crypto https://github.com/dono-app https://github.com/manuels/ libtls.rs https://github.com/Yawning/ rust-crypto-nacl https://github.com/ctz/rust- fastpbkdf2 https://github.com/Tyzzer/h ashsign https://github.com/asukhare https://github.com/zmbush/ crypto_vault 2/susurrus v/hash-rs /dono-crate PKI PKI PKI PKI PKI PKI PKI PKI SET - CMP SET - - CMP, SET - Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DH ------Dates Dates Dates Dates Dates Dates Dates Dates Dates 2015-07-07 2016-01-11 2015-07-06 2015-08-30 2016-08-18 2016-12-17 2015-01-04 2015-01-04 2015-02-07 2015-02-12 2015-10-09 2015-10-30 2016-02-28 2016-09-30 2015-11-30 2015-12-10 2015-06-30 2015-07-02 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC, Poly1305 - HMAC - Poly1305 HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 People People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.9 0.39 0.82 0.72 0.61 0.36 0.69 0.33 0.27 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.64 13.52 13.51 13.44 13.34 13.12 12.97 12.89 12.85 Impact Impact Impact Impact Impact Impact Impact Impact Impact SHA, SHA-2, SHA-3, SHA-256 - PBKDF2, SHA, SHA-2 - SHA, SHA-2 PBKDF2, SHA, SHA-1, SHA-2, SHA- SHA, SHA-2 SHA, SHA-1, SHA-3 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, Salsa Vigenere cipher - - Salsa - - - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust Rust Rust DEAL, PRESENT - PRESENT - - PRESENT - IDEA NXT, NOEKEON Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM susurrus HMAC, Poly1305 crypto - dono-crate HMAC libtls.rs - rust-crypto-nacl Poly1305 rust-fastpbkdf2 HMAC hashsign - hash-rs - crypto_vault ID ID ID ID ID ID ID ID ID 177 149 170 221 154 202 187 186 164

109/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL HTTPS EST, HTTPS CMP, EST, HT- HTTPS HTTPS CMP, HTTPS HTTPS HTTPS EST, HTTPS TPS https://github.com/stouset/n oises https://github.com/kcchu/ru st-tweetnacl https://github.com/jedisct1/ rust-sparx https://github.com/burdges/ zerodrop-rs https://github.com/xcodevn/ rust-paillier https://github.com/blackbea m/rust-rabbit https://github.com/jmquigs/ rs-encryptfile https://github.com/badboy/j hash-rs https://github.com/cesarb/c hacha20-poly1305-aead PKI PKI PKI PKI PKI PKI PKI PKI PKI SET - CMP - SET CMP, SET - SET - Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC - - - - - Paillier - - - Dates Dates Dates Dates Dates Dates Dates Dates Dates 2015-09-16 2016-01-21 2016-09-04 2016-10-30 2017-02-15 2017-02-17 2017-01-11 2017-02-02 2016-05-11 2016-07-03 2015-11-15 2015-11-15 2015-12-22 2015-12-30 2017-01-26 2017-01-26 2016-01-30 2016-02-01 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC HMAC, Poly1305 Poly1305 - - - - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 People People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash Hash 0.53 2.85 0.52 0.55 2.68 0.64 1.74 0.48 1.79 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 12.4 12.66 12.52 12.49 12.45 12.27 12.11 12.07 11.93 Impact Impact Impact Impact Impact Impact Impact Impact Impact PBKDF2, SHA, SHA-1 SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3,512 SHA-256, SHA- SipHash - - - scrypt, SHA, SHA-2 - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - ChaCha Salsa LEX - - Rabbit ISAAC - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Rust I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Rust Rust Rust Rust DEAL DEAL, PRESENT PRESENT IDEA NXT DEAL, PRESENT DEAL, SEED - AES, SEED PRESENT, SEED Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM EAM HMAC noises HMAC, Poly1305 rust-tweetnacl Poly1305 rust-sparx - zerodrop-rs - rust-paillier - rust-rabbit - rs-encryptfile HMAC jhash-rs - chacha20-poly1305- aead ID ID ID ID ID ID ID ID ID 172 162 152 233 161 205 167 190 183

110/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL HTTPS HTTPS - AKA, CMP,DTLS, CSR, EST, HT- PE, PEM,SSL, SEND, TLS, X.509 AKA,SEND, HTTPS, SRTP, CMP, EST, HT- PEM, SEND, SSH, SSL EST,IKE, PE, HTTPS, SEND, TPS, IKE, IPsec, TLS TPS, IKE, PE, TLS https://github.com/cryptosp here/rbnacl https://github.com/briansmi th/ring https://github.com/Tyzzer/rl https://github.com/quininer/ aes https://github.com/jethrogb/ rust-mbedtls https://github.com/lemonroc k/alt-tls wekex PKI PKI PKI PKI PKI PKI PKI - - SET CMP,PKIX, SET, X.509 PKCS, SET CMP, PKIX, SET SET Licence Licence Licence Licence Licence Licence Licence MIT ISC, OpenSSL, SSL eay, IntelLicense, A pache-2.0, EricYou ngOpenSourceLicen se - - - - PKC PKC PKC PKC PKC PKC PKC Dates - - - DH,ECDH, DSA,RSA DSS, ECDSA, DSA,ECDSA, RSA ECDH, DH, DSS,ECDSA, ECDH, RSA ECDH Dates Dates Dates Dates Dates Dates 2012-12-01 2017-06-13 2014-06-20 2017-07-21 2016-05-08 2016-07-03 2016-04-28 2016-05-31 2016-10-30 2016-11-05 2016-09-09 2016-09-12 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Poly1305 - - HMAC HMAC HMAC, Poly1305 HMAC, Poly1305 Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme, Website, Download Doc. Kind Readme, Website 1 0 1 0 1 0 1 0 1 2 22 110 People People People People People A C A C A C A C People A C People A C Hash Hash Hash Hash Hash Hash Hash 29 kLOC 110 1.11 2.03 3.67 3.98 kLOC kLOC kLOC kLOC kLOC kLOC - Impact 11.76 11.67 11.37 11.23 32.46 Impact Impact Impact Impact Impact Impact BLAKE2 - - MD2,scrypt, MD5, SHA, SHA-1,SHA-256, PBKDF2, SHA-512 SHA-2, SHA-3, RIPEMD, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, PBKDF2, SHA, SHA-1, SHA-2, SHA- BLAKE2, PBKDF2,SHA-2, SHA-3, SHA-256, scrypt, SHA-512 SHA, 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha - - LEX, MAG, RC, RC ChaCha,Scream, Dragon, SEAL, ChaCha, Salsa Turing Vernam Related Related Related Related Related Related Related http://nacl.c r.yp.to - - - - - Type Type Wrap. Type Type Type Type Wrap. Wrap. Wrap. Wrap. Type Stan. I.Lvl. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Ruby M.L. Rust M.L. Rust M.L. Rust M.L. Rust M.L. Asse I.L. I.L. I.L. I.L. I.L. I.L. I.L. Rust Rust Rust Rust Rust Ruby CAST, DEAL, PRESENT - AES AES, AES-128,Blowfish, AES-192,DEAL, Camellia, AES-256, IDEA NXT,NDS, CAST, PRESENT, IDEA, RC, M6,SEED, DES, RC2, TEA, M8, SAFER, 3DES, XTEA AES, PRESENT, 3DES 3-Way, AES,CAST, DES, DEAL, AES-128,NDS, IDEA, PRESENT, M6, SAFER, SEED AES-256, M8, DEAL, M6, M8, PRESENT, Q, SEED Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM Name Poly1305 rlwekex - aes - rust-mbedtls HMAC alt-tls HMAC ring HMAC, Poly1305 rbnacl HMAC, Poly1305 ID ID ID ID ID ID ID 198 178 223 220 211 243

111/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR HTTPS, PE, PEM, SSH HTTPS EST,IKE, PE HTTPS, CMP, EST, HT- SEND EST, HTTPS TPS, PE, PEM, https://github.com/cossac klabs/themis https://github.com/pbhogan https://github.com/codahale https://github.com/joshwetz el/cryptosystem /scrypt /bcrypt-ruby https://github.com/mitaku/r eversible_cryptography https://github.com/mdp/gib berish PKI PKI PKI PKI PKI PKI CMP, LDAP, RD- BMS, SET SET SET SET CMP, SET - Licence Licence Licence Licence Licence Licence Apache-2.0 MIT MIT MIT - MIT PKC PKC PKC PKC PKC PKC DH,ECDSA, RSA ECDH, DH - DSS RSA RSA 2014-09-13 2017-08-16 Dates Dates Dates Dates Dates Dates 2010-12-16 2017-03-20 2007-02-27 2016-03-31 2016-05-14 2017-07-29 2015-03-28 2017-05-31 2011-03-23 2017-03-02 MAC MAC MAC MAC MAC MAC Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples Doc. Com. Apis, Examples Doc. Com. Apis, Examples, Explanations Examples, Explanations Apis, Examples, Explanations HMAC - HMAC - HMAC - Readme, Website, Download 1 Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme 19 Doc. Kind 2 4 1 3 2 1 1 10 15 26 A C People People A C A C People People People A C A C A C 47 People Hash Hash Hash Hash Hash Hash 0.21 1.05 3.72 2.76 0.14 kLOC kLOC kLOC kLOC kLOC kLOC 31.05 26.2 27.49 24.59 30.52 21.64 Impact Impact Impact Impact Impact Impact MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, scrypt, SHA, SHA-2, SHA-3, SHA- MD5, PBKDF2, SHA, SHA-1 MD5 MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 - 256 - Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX,SEAL, Rabbit, SNOW, Salsa - - - - Turing - Related Related Related Related Related Related 137 137 http://www.t arsnap.com/s crypt.html https://man. .org/ bcrypt.3 137 Stan. Type Type Wrap. Wrap. Type Type Type Type Wrap. Wrap. Wrap. High I.Lvl. High I.Lvl. High, Low I.Lvl. I.Lvl. High, Low I.Lvl. High I.Lvl. High C Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Ruby M.L. Ruby M.L. M.L. C M.L. C M.L. Ruby I.L. I.L. I.L. I.L. I.L. I.L. Ruby Ruby Ruby Ruby Ruby AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, M6, M8, PRESENT AES, AES-256 Blowfish, DES, DEAL AES, AES-256, DEAL DEAL, M6 ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM themis HMAC scrypt - reversible_cryptogr aphy HMAC bcrypt-ruby - gibberish HMAC cryptosystem - ID ID ID ID ID ID 070 251 236 250 245 235

112/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL AKA, EST,HTTPS, GPG, SEND PEM, EST, HTTPS, SSL CMP, DPD,HTTPS, EST, OCSP, PE,PGP, PEM, IES, SEND, EST DPD, EST, HT- SEND EST, HTTPS HTTPS,SEND PE, TPS, PE, PEM, X.509 https://github.com/grempe/ sirp https://github.com/VirgilSec urity/virgil-crypto-ruby https://github.com/krypt/kr https://github.com/kingpong https://github.com/pelle/ezc rypto https://github.com/LupineD ev/lupine_crypto https://github.com/cryptosp here/cryptor ypt /ruby-mcrypt PKI PKI PKI PKI PKI PKI PKI SET SET CMP,OCSP, LDAP, SET, PKCS, SET SET - - X.509 Licence Licence Licence Licence Licence Licence Licence BSD-3-Clause ------PKC PKC PKC PKC PKC PKC PKC DH, DSA, RSA - DH, ECDSA, RSA DSS DH,RSA DSA, DSS, - DH, LUC Dates Dates Dates Dates Dates Dates Dates 2012-03-05 2017-02-13 2016-11-23 2017-04-24 2011-12-05 2014-06-22 2009-09-06 2013-02-24 2005-07-20 2009-03-10 2010-08-05 2010-11-18 2014-05-17 2014-08-23 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations - - HMAC - - - HMAC, Poly1305 Doc. Kind Readme Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme, Website 1 4 1 7 1 2 1 1 1 0 1 1 1 1 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 14 0.74 5.17 2.37 0.15 0.78 1.16 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 18.69 18.66 16.26 15.67 14.93 14.66 19.61 Impact Impact Impact Impact Impact Impact Impact - - MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- - SHA, SHA-1, SHA-2 - SHA, SHA-2, SHA-3, SHA-256 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - WAKE RC - Salsa Related Related Related Related Related Related Related https://githu b.com/Virgil Security/virgi l-crypto - - - - - https://githu b.com/lamika e/srp-rb Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Fork I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Ruby M.L. Ruby M.L. Ruby M.L. Ruby M.L. Ruby M.L. Ruby M.L. Ruby I.L. I.L. I.L. I.L. I.L. I.L. I.L. Ruby Ruby Ruby Ruby Ruby Ruby Ruby PRESENT, SEED - DEAL, M6, M8, PRESENT AES, CAST,DES, CAST-128, CAST-256, DEAL,RC, RC2, Serpent, LOKI97, Twofish, XTEA PRESENT, AES, AES-128,Blowfish, AES-192, DES,M8, AES-256, PRESENT, DEAL, RC, RC2, IDEA, SAFER M6, DEAL AES, AES-128, AES-256,PRESENT DEAL, M6, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM sirp - virgil-crypto-ruby - krypt HMAC ruby-mcrypt - ezcrypto - lupine_crypto - cryptor HMAC, Poly1305 ID ID ID ID ID ID ID 237 239 246 247 248 238 244

113/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST, HTTPS HTTPS, SSL EST, GPG, HT- - - CMP, CSR,DTLS, CMS, DPD, EST, GPG,IKE, OCSP,PEM, HTTPS, PGP, PE, SCEP, RTD, SSH, SSL, SEND, TLS, TPS, PEM, SEND WPA, X.509 https://github.com/wolfssl/ wolfssl https://github.com/kixorz/cr https://github.com/koyupi/o ssl_cryptor https://github.com/grempe/s ession-keys-rb https://github.com/Maxwell- ypt Alexius/Ruby-Cryptography - PKI PKI PKI PKI PKI PKI - SET SET - - CMP,PKCS,RTCS,SET, OCSP, X.509 PKIX, SCEP, Licence Licence Licence Licence Licence Licence GPL-2.0, commerci al - - - - PKC PKC PKC PKC PKC PKC Ruby, GPL-2.0, BSD -2-Clause - DSS ECDH - - DH,ECDH, DSA,NTRUEncrypt, DSS, ECDSA, RSA Dates Dates - - Dates Dates Dates Dates 2011-02-05 2017-08-16 2013-07-25 2013-07-25 2016-06-26 2016-12-31 2016-04-24 2016-09-09 2016-05-20 2016-05-22 MAC MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC - - - HMAC, Poly1305 Doc. Kind Readme, Website Doc. Kind Readme, Website, Download Doc. Kind Doc. Kind Doc. Kind - - Doc. Kind 4 1 0 1 0 1 0 1 0 49 People A C People A C People People People A C A C A C A C - People Hash Hash Hash Hash Hash Hash 259 1.78 0.56 0.46 0.18 kLOC kLOC kLOC kLOC kLOC - kLOC 38.94 14.42 13.58 12.36 11.46 Impact Impact Impact Impact Impact Impact MD5 MD5, PBKDF2, SHA, SHA-2,SHA-256 SHA-3, scrypt, SHA, SHA-2, SHA-3, SHA- MD5 - BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, 256 2, SHA-3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX - - - - ChaCha,MAG, Rabbit, RC, LEX, Vernam Related Related Related Related Related https://www .wolfssl.com/ ducts-wolfcry pt.html wolfSSL/Pro Related 137 - - - - Type Wrap. Type Wrap. Type Type Type Wrap. Wrap. Wrap. Wrap. Type I.Lvl. High I.Lvl. High, Low High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. - Ruby M.L. Ruby M.L. Ruby M.L. Ruby M.L. I.L. I.L. I.L. I.L. I.L. Ruby I.L. Ruby Ruby Ruby Ruby C, Java, C#, Python, PHP, Perl AES, Blowfish, IDEA, RC, RC6 AES,DEAL AES-128, AES-256, DES, DEAL, PRESENT, SEED - - AES, AES-128,Camellia, AES-192, CAST,DEAL, AES-256, CRYPTON, IDEA, DES, RC, M6, RC2, SEED, M8, 3DES PRESENT, Name Name Name Name Name EAM EAM EAM EAM EAM EAM Name crypt - ossl_cryptor HMAC session-keys-rb - Ruby-Cryptograph - OpenSSL(S) - wolfssl HMAC, Poly1305 y ID ID ID ID ID ID 249 242 241 240 234 136

114/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL EST, HTTPS, PE, PGP, SEND AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR AS2, CMP,DCII, CMS, EST,IKE, MSE, IES, OCSP, PE, PEM, RTD, EST, HTTPS, PE, SEND EST, HTTPS TSP, TLS, VBR, WPS, X.509 https://github.com/cossac klabs/themis https://github.com/apache/c ommons-crypto https://github.com/PersoSim er https://github.com/tozny/ja https://github.com/InstantW ebP2P/tweetnacl-java va-aes-crypto /org.globaltester.cryptoprovid PKI PKI PKI PKI PKI SET CMP, LDAP, RD- BMS, SET CMP,OCSP,SET, X.509 DVCS, PKCS, SET SET Licence Licence Licence Licence Apache-2.0 Apache-2.0 GPL-2.0, GPL-2.0+ MIT MIT PKC PKC PKC PKC PKC Dates - DH,ECDSA, RSA ECDH, DH,Gamal, DSA,McEliece, RSA El- LUC, - - 2014-09-13 2017-08-16 Dates Dates Dates 2015-03-27 2017-05-27 2015-03-27 2017-06-19 2014-11-14 2017-06-12 2014-10-21 2017-07-25 MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Explanations Examples, Explanations Apis, Explanations - HMAC - HMAC Poly1305 Doc. Kind Readme, Website, Download 1 19 Readme, Website Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website 3 2 5 2 4 2 3 24 People A C 47 A C People People People A C A C A C Hash Hash Hash Hash Hash 12 11 kLOC 0.42 1.03 kLOC kLOC kLOC 31.05 Impact 28.6 28.5 34.21 28.02 Impact Impact Impact MD5 MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, MD6 SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3,512 SHA-256, SHA- Depen. - Depen. Depen. Depen. - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Crypto1 LEX,SEAL, Rabbit, SNOW, MAG, ZUC - Salsa Turing Related - Related Related Related 137, http://d ocs.oracle.co m/javase/8/d ocs/technotes ity/crypto/C ryptoSpec.ht ml 280 - - /guides/secur Type Stan. Type Fork Type Stan. Type Stan. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low High, Low M.L. C Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Java M.L. Java M.L. Java Java I.L. I.L. I.L. I.L. Java Java Java Java AES, AES-128,IDEA, PRESENT, AES-192, RC, RC2, AES-256, SEED AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, AES, DEAL,PRESENT DFC, IDEA, M6, M8, AES, DEAL,SEED M6, M8, PRESENT, DEAL, SEED ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name EAM EAM EAM EAM EAM Name commons-crypto - themis HMAC org.globaltester.cry ptoprovider - java-aes-crypto HMAC tweetnacl-java Poly1305 ID ID ID ID 264 070 299 254 261

115/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST, HTTPS AS2, CMC,DTLS, DPD, CSR, EST, GSI, GPG,OTR, HT- PE,PGP, PoSE, RMA, PEM, SCP, SEND, SSH, EST, GPG, HT- EST, HTTPS, I2P, PE CMP, CSR,EST, DPD, GPG, HT- PEM, SSL, X.509 AKA, EST, HT- SSL TPS, IES, IKE, TLS, VBR, WPA TPS, SSL TPS, OCSP, PE, TPS, PE, PEM, https://github.com/mcaserta https://github.com/interledg er/java-crypto-conditions https://github.com/vt-middl eware/cryptacular https://github.com/palantir/ hadoop-crypto /spring-crypto-utils http://svn.code.sf.net/p/jasy pt/code/trunk https://github.com/neilalexa nder/jnacl PKI PKI PKI PKI PKI PKI SET SET SET SET CMP,LDAP,PKCS, EJBCA, SET, X.509 OCSP, PKIX, SET Licence Licence Licence Licence Licence Licence Licence Apache-2.0 Apache-2.0 Apache-2.0, LGPL- Apache-2.0 3.0 - BSD-2-Clause PKC PKC PKC PKC PKC PKC - DH, DSS, LUC, - RSA DH,LUC, DSA, RSA DSS, RSA YAK Dates Dates Dates Dates Dates Dates Dates 2010-02-09 2017-08-01 2016-07-28 2017-08-13 2013-11-19 2017-07-10 2016-06-29 2017-08-16 2006-11-29 2017-06-04 2011-12-30 2017-07-18 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples, Explanations Examples, Explanations Explanations Examples, Explanations Poly1305 - HMAC - HMAC - Doc. Kind Doc. Kind Readme, Website Doc. Kind Website Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind 1 4 1 4 1 3 2 5 1 2 1 9 People A C People A C People People A C A C People People People A C A C Hash Hash Hash Hash Hash Hash 63 10 14 3.4 1.53 5.41 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 27.19 27.23 26.83 25.79 25.58 25.25 Impact Impact Impact Impact Impact Impact Impact - MD2, MD5, MD6 - SHA, SHA-2, SHA-3,512 SHA-256, SHA- MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Salsa MAG, NLS, RC NLS, SEAL - RC, SEAL - Related Related Related Related Related Related Related - http://nacl.cr. http://docs.o racle.com/jav ase/7/docs/te chnotes/guid es/security/c rypto/Crypto Spec.html https://githu b.com/str4d/ ed25519-java yp.to - - Type Type Reim. Wrap. Type Type Type Stan. Type Stan. Type Wrap. Wrap. I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Java M.L. Java M.L. Java M.L. Java M.L. M.L. Java M.L. Java I.L. I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java - CAST, DES,NXT, DEAL, IDEA,RC, RC2, M6, FPE, RC6, SAFER, M8, TEA, IDEA UES PRESENT, PRESENT M6, PRESENT AES, AES-128,DES, IDEA, AES-192, M6, M8,RC2, AES-256, PRESENT, RC5, RC, TEA AES, IDEA, M8, PRESENT Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM jnacl Poly1305 jasypt - spring-crypto-utils HMAC java-crypto-conditi ons - cryptacular HMAC hadoop-crypto - ID ID ID ID ID ID ID 257 319 255 270 263 267

116/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AKA, CMP,GPG, EST, IES, SEND, X.509 HTTPS, AS1, AKA,CMP, CMC, CSR,DPV, CMS, EKE,GPG, EST, IES,SEND, PE, TLS, HTTPS, X.509 PEM, EST, HTTPS EST, GPG, HT- EST, GPG, HT- EST,SEND HTTPS, TPS, SEND TPS https://github.com/davidcar boni/Cryptolite https://github.com/wireapp/ cryptobox-jni https://github.com/google/ti nk https://github.com/VirgilSec urity/virgil-sdk-java-android https://github.com/Sebastia nDeiss/Java-PBKDF2 https://github.com/cryptom ator/cryptolib https://github.com/scottyab/ java-aes-crypto PKI PKI PKI PKI PKI PKI PKI CMP, SET, X.509 CMP, PKCS, SET, SET SET SET SET X.509 Licence Licence Licence Licence Licence Licence MIT GPL-3.0 Apache-2.0 BSD-3-Clause BSD-2-Clause AGPL-3.0, commer ciallicence MIT PKC PKC PKC PKC PKC PKC PKC ECDH, ECDSA DH, DSS,ECDSA, ECDH, RSA LUC, - DSA, RSA - - Dates Dates Dates Dates Dates Dates 2011-07-06 2017-03-12 2015-02-28 2017-02-01 2017-03-22 2017-08-14 2016-02-29 2017-08-11 2015-12-20 2017-06-20 2016-06-16 2017-08-16 2014-11-14 2016-11-22 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples, Explanations Examples, Explanations Examples, Explanations Apis, Explanations Examples, Explanations Explanations Examples, Explanations HMAC,Poly1305 OMAC, HMAC - HMAC HMAC HMAC Doc. Kind Readme Doc. Kind Readme Readme, Website, Download Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme 1 3 1 6 1 1 2 1 1 1 1 2 4 14 People People A C A C People People People People A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 49 30 4.2 4.41 1.66 4.26 1.16 kLOC kLOC kLOC kLOC kLOC kLOC 21.82 20.45 23.93 22.81 22.62 21.39 20.69 Impact Impact Impact Impact Impact Impact scrypt, SHA, SHA-1,SHA-256, SHA-512 SHA-2, SHA-3, MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 RIPEMD PBKDF2, SHA, SHA-2, SHA-3, SHA- scrypt, SHA, SHA-2, SHA-3, SHA- SHA, SHA-2, SHA-3, SHA-256 256 256 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, Salsa Crypto1, LEX, RC - - - - Related Related Related Related Related Related http://docs.o racle.com/jav ase/8/docs/te chnotes/guid es/security/c rypto/Crypto Spec.html https://githu b.com/wireap p/cryptobox - - - - 254 Type Type Stan. Type Stan. Type Stan. Type Stan. Type Fork Wrap. Wrap. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java Java AES, AES-128,CAST, AES-192,SAFER AES-256, DEAL, M8, PRESENT, AES, AES-128,PRESENT, SEED AES-192, AES- DEAL, PRESENT CAST, CRYPTON,NXT, IDEA, DEAL, PRESENT, SEED IDEA AES,PRESENT, SEED AES-256, CAST, IDEA, AES, DEAL,SEED M6, M8, PRESENT, 256, CAST, DES, M6, M8, NDS, Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM tink HMAC,Poly1305 OMAC, virgil-sdk-java-andr oid HMAC Java-PBKDF2 - Cryptolite HMAC cryptolib HMAC java-aes-crypto HMAC cryptobox-jni ID ID ID ID ID ID 262 281 277 260 266 273 274

117/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST,SEND HTTPS, AKA,CAVE, EKE, EST, GPG, ACME, IES, IKE,Oakley, HTTPS, KINK, PE, PGP,RMA, PANA, PoSE, SEND, SCRAM, SPORE, EST, GPG, HT- EST, HTTPS EST, GPG, HT- AS2, CMP,DCII, CMS, EST,IKE, MSE, IES, OCSP, PE, PEM, RTD, EST, GPG, HT- TLS TPS, SSH TPS TSP, TLS, VBR, TPS, X.509 WPS, X.509 https://github.com/NeilMad den/java-crypto-utils https://github.com/ph4r05/ https://github.com/jtdowney https://github.com/GlobalTe ster/org.globaltester.cryptopr ovider https://github.com/aerogear/ aerogear-crypto-java https://github.com/oversecio Whitebox-crypto-AES-java /chloride /oversec_crypto PKI PKI PKI PKI PKI PKI SET SET - SET - CMP,OCSP,SET, X.509 DVCS, PKCS, SET, X.509 Licence Licence Licence Licence Licence Licence - GPL-3.0, LGPL-2.1 - - - GPL-3.0 + PKC PKC PKC PKC PKC PKC - DH, DSS, RSA, - - - DH,Gamal, DSA,McEliece, RSA El- LUC, ECDSA YAK Dates Dates Dates Dates Dates Dates 2016-11-02 2017-07-06 2013-10-07 2017-01-31 2015-03-11 2017-03-16 2015-03-27 2016-05-06 2013-09-02 2016-05-11 2016-08-04 2017-05-27 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - Poly1305 HMAC - - - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme 1 0 1 2 1 1 2 5 1 7 1 1 People People People People People A C A C A C A C A C People A C Hash Hash Hash Hash Hash Hash 13 0.95 9.01 0.88 0.41 2.81 kLOC kLOC kLOC kLOC kLOC kLOC 19.42 19.39 19.17 19.07 18.71 20.09 Impact Impact Impact Impact Impact Impact - MD5, SHA,SHA-256, SHA-1, Tiger SHA-2, SHA-3, SipHash - - MD6 PBKDF2 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - ChaCha,FISH, Dragon, LEX,MICKEY, ISAAC, Panama,Rabbit, MAG, Scream, Pike, SFINKS, Salsa, SOBER, SEAL, SNOW, VEST, - - - MAG, ZUC - WAKE Related Related Related Related Related Related ------Type Type Type Type Type Type Stan. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java IDEA, PRESENT ARIA,CRYPTON, CS-Cipher, BATON, DES,FROG, DEAL, IDEA NXT, IDEA, CAST,M6, KASUMI, Nimbus, M8, Crab, PRESENT,SHARK, MARS, Prince, Simon, Speck, SEED, TEA, Mercy, Xenon MESH, PRESENT AES, IDEA, PRESENT DEAL, PRESENT AES, DEAL,PRESENT DFC, IDEA, M6, M8, AES, PRESENT Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM - oversec_crypto Poly1305 java-crypto-utils HMAC Whitebox-crypto-A ES-java - chloride - org.globaltester.cry ptoprovider - aerogear-crypto-jav a HMAC ID ID ID ID ID ID 268 288 256 315 280 258

118/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS, PE, EST,IKE, PE, SEND HTTPS, AKA, CMP, EKE, EST, HTTPS, IES, IKE,SEND, PE, SSL, VBR PHE, EST, HTTPS, PE, EST, PE, PEM EST, GPG, HT- HTTPS TLS TPS, IKE, SEND WPS https://github.com/amvnetw orks/amv-highmobility-crypt otool-wrapper https://github.com/liuweiran 900217/CloudCrypto https://github.com/AttackVe ctorLinux/ntru-crypto https://github.com/universu m-studios/android_crypto https://github.com/claudius1 08/crypto-exist-java-lib https://github.com/buttermil k-crypto/tweetPepper https://github.com/Bobulous https://github.com/Eyremba /Cryptography /jnacl PKI PKI PKI PKI PKI PKI PKI PKI SET SET CMP, PKCS, SET SET SET SET SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DH DH DH,NTRUEncrypt, RSA LUC, DH DH DH - Dates Dates Dates Dates Dates Dates Dates Dates 2017-04-19 2017-07-05 2015-10-05 2017-03-02 2013-06-05 2015-01-12 2017-02-05 2017-08-09 2016-02-04 2017-03-19 2015-03-29 2016-06-15 2017-05-24 2017-06-10 2011-12-30 2016-07-03 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - HMAC - HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 2 1 7 1 0 1 1 2 2 1 1 1 3 People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 41 40 15 1.67 2.65 0.93 3.15 1.54 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 18.63 18.36 18.33 18.31 17.75 17.59 17.46 17.41 Impact Impact Impact Impact Impact Impact Impact Impact SHA, SHA-2, SHA-3, SHA-256 - SHA, SHA-1, SHA-2, SHA-3, SHA- - - scrypt, SHA,512 SHA-2, SHA-3, SHA- SHA, SHA-3 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Crypto1 LEX Salsa - - ChaCha, Salsa, - Turing Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java Java Java AES, DEAL, M8, PRESENT, SEED IDEA, M6, M8, PRESENT, Prince AES,PRESENT, DEAL, SEED IDEA, M6, M8, M6, M8, PRESENT TEA DEAL, IDEA,PRESENT, M6, SEED M8, NOEKEON, CAST, NDS, NOEKEON, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM amv-highmobility-c ryptotool-wrapper HMAC CloudCrypto - ntru-crypto HMAC android_crypto - crypto-exist-java-li b HMAC tweetPepper - Cryptography - jnacl ID ID ID ID ID ID ID ID 306 265 303 271 304 312 283 317

119/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL EST, HTTPS HTTPS HTTPS EST, HTTPS EST, HTTPS EST EST,SEND, X.509 HTTPS, EST, GPG, HT- - TPS, PCT, PE, X.509 https://github.com/cgivre/dr ill-crypto-functions https://github.com/francisco- polaco/sec-crypto-utils-2017-i st https://github.com/sunilkanj ar/crypto-function https://github.com/aramzl/c rypto-service https://github.com/azaky/El lipticCurveCryptography https://github.com/mbrossar d/cryptonit-applet https://github.com/erikcostlo https://github.com/zfreyr/cr ypto-utils w/Java-Crypt PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET SET - SET PKCS, SET, X.509 SET, X.509 - Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - DSS - - - - ECDSA, RSA DH, RSA, YAK - Dates Dates Dates Dates Dates Dates Dates Dates Dates 2017-06-23 2017-07-05 2017-03-04 2017-05-04 2017-07-05 2017-07-11 2017-06-16 2017-06-16 2015-03-31 2015-04-01 2016-11-05 2017-04-21 2016-04-15 2017-02-21 2017-01-31 2017-02-01 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Poly1305 ------Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 2 1 1 1 0 2 1 1 0 1 1 3 0 People People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.3 0.43 0.61 2.06 1.92 1.57 7.94 0.39 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 16.8 16.3 15.9 16.98 16.95 16.44 16.35 16.28 Impact Impact Impact Impact Impact Impact Impact Impact Impact - MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, SHA, SHA-2 - - - SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-256 - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Salsa ------eSTREAM - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java Java Java - AES, DES, PRESENT AES, PRESENT - - PRESENT CRYPTON, IDEA, PRESENT AES, M6, M8, NDS IDEA, PRESENT Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM Poly1305 drill-crypto-functio ns - sec-crypto-utils-201 - crypto-function - crypto-service - EllipticCurveCrypt ography - cryptonit-applet - Java-Crypt - crypto-utils - 7-ist ID ID ID ID ID ID ID ID ID 305 307 294 286 298 300 316 276

120/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS EST, SEND EST, HTTPS EST, HTTPS EST - AKA, EST, HT- EST, HTTPS TPS, PEM, X.509 https://github.com/Financial- https://github.com/Abarrow man/AbarrowCrypto https://github.com/meltmedi a/jackson-crypto https://github.com/liujianqu n/Whitebox-crypto-AES-java https://github.com/Cathedro https://github.com/ahome-it/ ahome-crypto https://github.com/martinpa ljak/idcrypt https://github.com/RichMerl in/CryptoMarketsAPI https://github.com/mervinki d/djanpto Times/crypto-signatures w/Cryptosuite PKI PKI PKI PKI PKI PKI PKI PKI - SET SET SET - SET LDAP, SET, X.509 SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - DSS - - - - RSA - Dates Dates Dates Dates Dates Dates Dates Dates 2015-10-02 2016-04-29 2014-12-08 2016-05-01 2014-10-11 2016-10-11 2013-10-07 2015-12-04 2010-05-26 2010-05-26 2015-02-16 2016-04-13 2016-02-06 2016-11-11 2015-06-03 2015-06-22 2016-08-03 2016-12-15 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC - - HMAC - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 5 1 2 1 0 1 1 1 0 1 1 1 0 1 1 1 1 People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.4 0.62 7.83 2.31 9.01 0.78 1.02 1.97 0.26 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 15.75 15.26 15.25 15.15 14.94 14.36 13.66 13.63 13.58 Impact Impact Impact Impact Impact Impact Impact Impact - PBKDF2 PBKDF2 - SHA, SHA-1, SHA-2, SHA-3, SHA- MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, - - 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Rabbit, RC - - - Rabbit - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java Java Java Java DEAL, PRESENT AES, Blowfish,NXT, DES, Serpent DEAL, IDEA AES, AES-256, CAST, PRESENT AES, IDEA, PRESENT - AES, PRESENT AES,PRESENT AES-128, AES-256, IDEA, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM crypto-signatures - AbarrowCrypto HMAC jackson-crypto - Whitebox-crypto-A ES-java - Cryptosuite HMAC ahome-crypto - idcrypt - CryptoMarketsAPI - djanpto ID ID ID ID ID ID ID ID 278 293 259 310 253 285 313 301 311

121/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS, PE EST, HTTPS EST, HTTPS EST, HTTPS, PE, EST, PE, SEND EST, HTTPS, PE CMP, CMS, DPD, DCII, EST,MSE, OCSP, PCT, IES, PE, PEM,PGP, SCP, PHE, TSP, CMS, EST, HT- TLS, X.509 TPS, X.509 X.509 https://github.com/jsumners/ crypto-util https://github.com/vstakhov https://github.com/gravieinc https://github.com/Slashmsu https://github.com/cliixtech/ memlo https://github.com/uuunic/C loudCrypto https://github.com/Rayman2 200/pdfbox-crypto /java-cryptobox /aws-crypto-tools-java /Crypto PKI PKI PKI PKI PKI PKI PKI PKI SET SET - SET, X.509 SET PKIX, SET CMP,OCSP,SET, X.509 DVCS, PKCS, PKCS, SET, X.509 Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - - - - RSA - DH,Gamal, DSA,McEliece, RSA El- LUC, - Dates Dates Dates Dates Dates Dates Dates Dates 2015-03-06 2015-11-25 2015-03-09 2015-03-10 2015-11-03 2016-03-29 2015-04-21 2015-11-28 2016-05-10 2016-10-07 2015-10-05 2015-11-15 2015-04-15 2015-05-31 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC - - - HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 1 1 0 1 1 1 1 1 0 People People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 1.13 0.56 0.31 1.03 0.41 3.74 2.45 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.2 13.37 13.25 13.23 13.21 13.16 13.13 Impact Impact Impact Impact Impact Impact Impact Impact MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, BLAKE2 - MD5 - - SHA, SHA-2, SHA-3, SHA-256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------ZUC - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java Java DEAL, M6 AES,IDEA AES-128, NXT, PRESENT AES-256, DEAL, DEAL DEAL, M6 - CAST, M6 M6, M8, PRESENT, RC, RC5 PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM - crypto-util HMAC java-cryptobox - aws-crypto-tools-ja - Crypto - memlo HMAC CloudCrypto - pdfbox-crypto - va ID ID ID ID ID ID ID ID 284 309 287 269 314 302 295

122/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST, GPG, HT- AKA, CMP,CMS, CSR, DPD, EST,HTTPS, GPG, ISAKMP, DTLS, OTR, IPsec, OCSP, IKE, PEM, PE, PGP, SCVP, SEND, SRTP, SSL, EST, GPG, HT- EST, HTTPS EST, HTTPS EST, GPG, HT- TPS, IKE TSP, TLS, X.509 TPS TPS, PEM, X.509 https://github.com/simonmit tag/cryptoutils https://github.com/ttt43ttt/ gwt-crypto https://github.com/Trestor/t restor-crypto-java https://github.com/amor87/ CryptoLibrary https://github.com/rajeshku markhadka/CryptoManager https://github.com/p-acs/co mmons-crypto https://github.com/shepherd violet/smcrypto PKI PKI PKI PKI PKI PKI PKI SET CMP,LDAP,PKCS, DVCS, PKCS#7, OCSP, PKIX, SET, SET PKCS, SET SET PKIX, SET, X.509 X.509 Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC - DH,ECDH, DSA,McEliece, DSS, ECDSA, RSA, - - - RSA YAK Dates Dates Dates Dates Dates Dates 2016-03-22 2016-08-02 2016-01-10 2016-03-13 2015-09-09 2015-10-03 2015-09-24 2015-09-29 2016-12-26 2016-12-28 2016-02-09 2016-06-06 2016-08-24 2016-08-31 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC,Poly1305 OMAC, - - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 1 1 0 1 0 1 1 1 0 1 1 People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 317 1.14 7.35 0.69 0.56 2.02 3.01 kLOC kLOC kLOC kLOC kLOC kLOC 12.5 12.95 12.81 12.58 12.36 12.24 11.94 Impact Impact Impact Impact Impact Impact - BLAKE2, GOST,KDF2, MD2, RIPEMD, scrypt, MD5, SHA, SHA- PB- SHAKE, SipHash,POOL Skein, WHIRL- - - - - 1, SHA-2, SHA-3, SHA-256, SHA-512, Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. FISH,bit,SOBER, LE- Turing, Scream, ChaCha,LEX,RC, MAG, Salsa, eS- SEAL Py, - - - - TREAM, ISAAC, VIATHAN, Rab- WAKE Related Related Related Related Related Related ------Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java M.L. Java I.L. I.L. I.L. I.L. I.L. I.L. Java Java Java Java Java Java Java Crab,PRESENT, SAFER, DEAL, Serpent,Speck, TEA SEED, IDEA, Mercy, AES, AES-128,DES, AES-192, DEAL,IDEA, GOST, M6,PRESENT, AES- M8, IDEA RC,pent, NDS, NXT, SEED, NOEKEON, RC2, Threefish, TEA, RC6, 3DES, Ser- PRESENT, SEED DEAL M8 CRYPTON, PRESENT 256, Blowfish, Camellia, CAST, Twofish Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM cryptoutils - gwt-crypto HMAC,Poly1305 OMAC, trestor-crypto-java - CryptoLibrary - CryptoManager - commons-crypto - smcrypto ID ID ID ID ID ID 289 290 275 292 279 296 282

123/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AS2, CMP,EST, CMS, GPG, HT- PEM, TSP, TLS, ACME,EKE, EST, CAVE, KINK, HT- PE,SEND PoSE, CSR, EST, HT- AKA,CMC, CMP, CMS, CGA, DCII, CCMP, HTTPS, EST, IES, IKE, MIKEY,OCSP, PCT,PEM, MSE, PE, PGP,SCVP, SCP, SEND, S-HTTP, SSH, SSL, - EST TPS, OCSP, PE, TPS, IES, IKE, TPS, PE, PEM, TSP, TLS, VBR, X.509 X.509 WPS, X.509 https://github.com/sbimoch an/dna-crypto https://github.com/kjhulin/ CryptokCodeCracker https://github.com/aibax/cry ptography-samples https://github.com/adnanakg un/cryptoGriffin - PKI PKI PKI PKI PKI CMP,PKCS, OCSP, SET, SET SET, X.509 CMP,OCSP,RPKI, SET, X.509 DVCS, PKIX, - SET X.509 Licence Licence Licence Licence Licence Licence - - - - PKC PKC PKC PKC PKC GPL-2.0 +exception linking DH, RSA DSS, LUC, RSA, DH, DSS, RSA DH, DSS, RSA, - - YAK YAK Dates Dates - - Dates Dates Dates Dates 2017-05-15 2017-08-11 2016-11-21 2016-11-22 2016-07-03 2016-07-07 2016-07-23 2016-07-24 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Apis, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. - MMH-Badger - - - - Doc. Kind Doc. Kind Website Doc. Kind Doc. Kind Doc. Kind Doc. Kind - - 2 1 1 0 1 0 1 0 People People A C People A C People People People A C A C A C - Hash Hash Hash Hash Hash 1.15 137 2.59 1.37 kLOC kLOC kLOC kLOC kLOC kLOC - - 11.39 11.33 11.27 Impact Impact Impact Impact Impact Impact SHA, SHA-2, SHA-3, SHA-256 Skein, Tiger, WHIRLPOOL MD5, SHA, SHA-1 FSB, MD2,SHA-1, MD5,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, - - Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX, NLS ChaCha,FISH, Dragon, Panama,Rabbit,Scream, LE- Pike, SNOW,Solitaire, SEAL, SOBER, RC, Turing, - LEX, MAG,SNOW, NLS, Turing - - VIATHAN, LEX, VEST, WAKE Related Related Related Related Related Related - - - - - Type Wrap. Type Type stan. Type Type Type Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. M.L. - M.L. M.L. Java M.L. Java M.L. Java HTML I.L. I.L. Java I.L. I.L. I.L. Java Java Java I.L. Java M6, M8, PRESENT, SM4 ARIA, BATON,DEAL, CAST, Crab, FROG,Lucifer, DES, IDEA MAGENTA, NXT,MESH, MARS, Mercy, IDEA, NDS,Prince, RC, Nimbus, SAFER,SHARK, Serpent, Speck, PRESENT, SEED, TEA, UES, Zodiac AES, Blowfish, DES, DEAL, M6, M8 CAST,FPE, CRYPTON, IDEA, DES,MESH, M6, MMB, PRESENT, DEAL, SEED M8, RC, RC2, MAGENTA, - M6 Name Name Name Name Name Name EAM EAM EAM EAM EAM - CryptokCodeCrack er MMH-Badger cryptography-sampl es - cryptoGriffin - JDK(S) - dna-crypto - ID ID ID ID ID ID 272 308 297 252 291

124/186 A. Detailed Library Table Protocol Protocol Protocol Protocol URL URL URL AS1, AS2,CMC, AKA, CSR, CMS,DTLS, CGA, DPV, CMP, DCII,EKE, DK, EST,GPG, DPD, GSI, I2P,ISAKMP, HTTPS, IES,KMIP, MSE, OTR, IPsec, IKE, OCSP, PCT,PEM, PE, PHE,RMA, PGP, RTD,SCVP, SCP, SRTP, SSH, SSL, SEND, ACME,CSR, CGA,GPG, EST, CMP, IES, IKE,OCSP, HTTPS, PCT, OTR, PEM, PGP, PE, SEND, SSH, TLS, X.509 CMP, CMS, CGA, DPD, DCII,EST, EKE, GPG, HT- OTR, OCSP, PCT, PE, PEM,SEND, SSH, PGP, TLS, TSP, TLS, VBR, TPS, IES, MSE, WPA, WPS, X.509 WPS, X.509 https://github.com/golang/cr https://github.com/keybase/ go-crypto https://github.com/ScriptRo ck/crypto ypto https://bouncycastle.org/down load/crypto-157.zip PKI PKI PKI PKI CMP,LDAP,PKCS, DVCS, PKCS#7, OCSP, PKIX, SET, CMP,PKIX, SET, X.509 OCSP, CMP,PKCS,SET, X.509 OCSP, PKIX, X.509 Licence Licence Licence BSD-3-Clause BSD-3-Clause BSD-3-Clause PKC PKC PKC PKC - DH,ECDH, DSA,ElGamal, DSS, ECDSA, McEliece, LUC, RSA, DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, DH,ECDH, DSA,ElGamal, DSS, ECDSA, RSA LUC, YAK Dates Dates Dates - - 2012-01-25 2017-08-08 2012-01-25 2017-06-28 2012-01-25 2017-06-09 MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC,Poly1305 OMAC, HMAC, Poly1305 HMAC, Poly1305 - - Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website 5 5 4 84 140 133 A C People People People A C A C A C Hash Hash Hash Hash 795 62 59 61 - kLOC kLOC kLOC 39.48 39.45 39.17 Impact Impact Impact BLAKE2, FSB,MD6, GOST, MD2, PBKDF2,SHA, MD5, SHA-1, RIPEMD, SHA-2, scrypt, SHA-3,Skein, Streebog, SHA- WHIRLPOOL BLAKE2, MD5, PBKDF2,scrypt, RIPEMD, SHA, SHA-1,SHA-256, SHA-512, SHA-2, Tiger SHA-3, MD5,scrypt, MD6, SHA, SHA-1,SHA-256, PBKDF2, SHA-512, SHA-2, Tiger SHA-3, RIPEMD, 256, SHA-512, SHAKE, SipHash, Depen. Depen. Depen. - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha, Crypto1, eSTREAM, FISH, ISAAC,MAG,RC, NLS, Salsa, LEX, Py, SEAL, ChaCha,RC, Dragon, Salsa, Scream, SEAL, Vernam Dragon,MAG, RC,Scream, Vernam FISH, Salsa, Turing, ZUC Related Related Related - - 321 321 Wrap. Type Stan. Type Fork Type Fork High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Java M.L. Go M.L. Go M.L. Go Java I.L. Go I.L. Go I.L. Go 3-Way, AES, AES-128, AES-192, AES, AES-128,Blowfish, DES, AES-192, DEAL, DFC,NOEKEON, AES-256, M6, M8, PRESENT,RC6, RC, SEED, RC2, TEA, 3DES, Twofish, AES, AES-128,DFC, AES-192, FPE,PRESENT, M6, RC,SM4, AES- RC2, TEA, M8, Twofish, RC6, XTEA NOEKEON, SEED, CAST, DES,GOST, IDEA DEAL, NXT,MMB, NDS, IDEA, NOEKEON, DFC, M6,RC, PRESENT, M8, RC2, FPE, pent, RC5, SEED, RC6, SM4, SAFER, Threefish, Ser- TEA, 256, Blowfish, CAST, DES, DEAL, 3DES, Twofish, UES AES-256, ARIA, ARIA-128, ARIA- XTEA 192, ARIA-256, Blowfish, Camellia, Name Name Name EAM EAM EAM EAM bouncycastlecrypto1 57 HMAC,Poly1305 OMAC, crypto HMAC, Poly1305 go-crypto HMAC, Poly1305 crypto ID ID ID 318 321 332 325

125/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL ACME,CSR, CGA,GPG, EST, CMP, IES, IKE,OCSP, HTTPS, PCT, OTR, PEM, PGP, PE, SEND, SSH, TLS, X.509 ACME,CSR, CGA,GPG, EST, CMP, IES, OTR,PCT, OCSP, HTTPS, PE,PGP, SEND, SSH, PEM, EST,SEND,SSH HTTPS, SFTP, EST,SEND,SSH HTTPS, SFTP, AKA, CMP, DPD, EST,PCT, PE, SEND HTTPS, EST,PEM,SFTP, SSH, HTTPS, X.509 SEND, TLS, X.509 https://github.com/dedis/ky ber https://github.com/ScriptRo ck/sftp https://github.com/pkg/sftp https://github.com/ProtonM ail/crypto https://github.com/kardianos /sftp PKI PKI PKI PKI PKI CMP,PKIX, SET, X.509 OCSP, CMP,PKIX, SET, X.509 OCSP, SET SET CMP, SET SET, X.509 Licence Licence Licence Licence Licence MPL-2.0 BSD-2-Clause BSD-2-Clause - - PKC PKC PKC PKC PKC DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, RSA RSA DH, DSA ECDSA, RSA Dates Dates Dates Dates Dates 2011-02-16 2017-08-15 2013-11-05 2017-06-27 2013-11-05 2017-08-23 2012-01-25 2017-05-22 2013-11-05 2017-06-19 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC, Poly1305 HMAC, Poly1305 HMAC HMAC HMAC, RMAC HMAC Doc. Kind Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website 4 3 3 3 2 35 25 38 43 119 People People A C A C People A C People People A C A C Hash Hash Hash Hash Hash 57 44 10 9.35 9.89 kLOC kLOC kLOC kLOC kLOC 38.01 37.17 36.88 37.33 36.29 Impact Impact Impact Impact Impact BLAKE2, MD5, PBKDF2,scrypt, RIPEMD, SHA, SHA-1,SHA-256, SHA-512, SHA-2, Tiger SHA-3, BLAKE2, MD5, PBKDF2,scrypt, RIPEMD, SHA, SHA-1,SHA-256, SHA-512, SHA-2, Tiger SHA-3, SHA, SHA-1, Tiger SHA, SHA-1, Tiger BLAKE2, SHA, SHA-1, SHA-2, SHA- SHA, SHA-1, Tiger 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha,RC, Dragon, Salsa, Scream, SEAL, Vernam ChaCha,RC, Dragon, Salsa, Scream, SEAL, Vernam Dragon Dragon RC, Salsa Dragon Related Related Related Related Related - - https://golan g.org/pkg/cry pto , 137, http s://crypto.sta nford.edu/pb c 390 - Type Type Wrap. Wrap. Type Type Fork Type Stan. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go AES, AES-128,Blowfish, DES, AES-192, DEAL, DFC,NOEKEON, AES-256, M6, M8, PRESENT,RC6, RC, SEED, RC2, TEA, 3DES, Twofish, AES, AES-128,Blowfish, DES, AES-192, DEAL, DFC,NOEKEON, AES-256, M6, M8, PRESENT,RC6, RC, SEED, RC2, TEA, 3DES, Twofish, DEAL, DFC, IDEA, PRESENT DEAL, DFC, IDEA, PRESENT AES, Blowfish,M6, DEAL, M8, NOEKEON, IDEA PRESENT,SEED, RC, NXT, Twofish DEAL, DFC, IDEA, PRESENT XTEA XTEA Name Name Name Name Name EAM EAM EAM EAM EAM HMAC, Poly1305 crypto HMAC, Poly1305 sftp HMAC sftp HMAC kyber HMAC, RMAC sftp HMAC ID ID ID ID ID 324 391 392 330 390

126/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR EST,PEM, X.509 HTTPS, EST, HTTPS AKA, EST, HT- SSH, VBR, X.509 DPD, EST, HT- SEND, X.509 TPS, PE, PEM, TPS, IKE, PE, https://github.com/cossac klabs/themis https://github.com/miracl/ milagro-crypto-c https://github.com/square/g o-jose https://github.com/GoKillers https://github.com/letsencry pt/pkcs11key https://github.com/AGWA-f orks/golang-crypto /libsodium-go PKI PKI PKI PKI PKI CMP, LDAP, RD- BMS, SET PKCS, SET, X.509 SET PKCS,SET, X.509 PKIX, PKCS, SET, X.509 Licence Licence Licence Licence Licence Licence Apache-2.0 Apache-2.0 Apache-2.0 ISC BSD-2-Clause - PKC PKC PKC PKC PKC Dates DH,ECDSA, RSA ECDH, ECDSA, RSA - DH, DSA, ECDSA, RSA DH,ECDH, DSA,RSA DSS, ECDSA, 2014-09-13 2017-08-16 Dates Dates 2016-03-10 2017-08-03 Dates Dates Dates 2014-12-19 2017-08-16 2015-06-16 2017-08-12 2015-02-17 2017-06-08 2012-01-25 2016-01-27 MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis Apis, Examples, Explanations HMAC - HMAC HMAC - Doc. Kind Readme, Website, Download Doc. Kind Readme, Download 1 19 Doc. Kind Readme, Website Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme, Website 2 11 3 6 2 9 3 1 77 14 People A C People A C 47 People A C People People A C A C People A C 47 Hash Hash Hash Hash Hash 44 kLOC 15 1.88 0.99 kLOC kLOC kLOC kLOC kLOC 31.05 29.28 Impact 30.01 30.43 28.72 29.69 Impact Impact Impact Impact Impact MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, SHA, SHA-2, SHA-3, SHA-256 BLAKE2, SHA, SHA-2, SHA-3, SHA- SHA, SHA-1, SHA-2, SHA-3, SHA- SHA, SHA-2, SHA-3,512 SHA-256, SHA- 256, SHA-512 256, SHA-512 Depen. - Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX,SEAL, Rabbit, SNOW, - ChaCha,Salsa, Dragon, SEAL - MAG, RC, ZUC Turing Related - Related - Related Related Related Related https://downl oad.libsodium. org/doc - - - Type Stan. Type Stan. Type Type Stan. Type Stan. Wrap. Type Stan. I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High M.L. C I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. Go M.L. Go M.L. Go M.L. Go I.L. I.L. I.L. Go I.L. Go I.L. Go I.L. Go C, Python, Go AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, PRESENT AES, AES-256, SEED AES,PRESENT DEAL, M6, M8, Nimbus, AES, CAST, CRYPTON, DES, IDEA, M6, M8, Mercy, PRESENT, SEED ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name Name Name EAM EAM EAM EAM EAM Name themis HMAC pkcs11key - libsodium-go HMAC go-jose HMAC milagro-crypto-c - golang-crypto ID ID ID ID ID ID 070 351 329 326 074 356

127/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL CMP, CGA,GPG, EST, IES, OTR,PCT, OCSP, HTTPS, PE,PGP, SEND, SSH, PEM, EST, HTTPS, EST,SEND,SSH HTTPS, SFTP, EST, HTTPS EST, GPG, HT- CAVE, EST, GPG, HTTPS, PE, PGP, SEND, SSH TLS, X.509 TPS, IES, PGP X.509 https://github.com/libp2p/go https://github.com/oscarheal th/sftp https://github.com/tendermi nt/go-crypto https://github.com/davidlaza r/go-crypto https://github.com/jzelinskie https://github.com/benburke rt/openpgp /whirlpool -libp2p-crypto PKI PKI PKI PKI PKI PKI PKI CMP,PKIX, SET, X.509 OCSP, SET, X.509 SET - SET SET Licence Licence Licence Licence Licence Licence MIT - Apache-2.0 MIT BSD-3-Clause - PKC PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, RSA RSA - DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, ECDSA Dates Dates Dates Dates Dates Dates 2015-09-30 2017-07-06 2013-11-05 2016-11-30 2015-10-25 2017-07-29 2015-01-07 2017-07-01 2012-02-20 2017-06-02 2012-01-25 2016-04-10 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Apis Doc. Com. Doc. Com. Examples Doc. Com. HMAC, Poly1305 HMAC HMAC - - HMAC, Poly1305 Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme 1 1 1 3 1 0 1 1 2 11 31 18 People People People People A C A C A C A C People People A C A C Hash Hash Hash Hash Hash Hash Hash 11 3.5 1.17 7.12 5.89 0.88 kLOC kLOC kLOC kLOC kLOC kLOC 27.72 25.47 24.13 23.42 25.08 24.81 Impact Impact Impact Impact Impact Impact MD5, PBKDF2,SHA, SHA-1, RIPEMD, SHA-2, scrypt, SHA-3, SHA- SHA, SHA-1, SHA-2, SHA-3, SHA- SHA, SHA-1, Tiger WHIRLPOOL MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 PBKDF2, RIPEMD,SHA-3, SHA-256, SHA, SHA-512, Tiger SHA-2, 256, SHA-512, Tiger 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Dragon, RC, Salsa, Scream, Vernam - Dragon Scream - Dragon,Rabbit,SNOW FISH, Salsa, Related Related Related Related Related Related - - https://golan g.org/pkg/cry pto https://godoc. org/golang.or g/x/crypto , h ttps://golang. org/pkg/cryp to - https://godoc. org/golang.or g/x/crypto/o penpgp Type Type Type Type Type Stan. Type Fork Wrap. Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go AES, AES-128,Blowfish, DES, AES-192, DEAL, DFC,NOEKEON, AES-256, M6, M8, PRESENT,RC6, TEA, RC, Twofish, XTEA RC2, DEAL, PRESENT, SEED DFC, IDEA, PRESENT PRESENT AES,PRESENT DES, DEAL, M6, M8, AES, Blowfish, CAST, DEAL,IDEA FROG, NXT,PRESENT, SEED IDEA, Mercy, MESH, Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC, Poly1305 go-libp2p-crypto HMAC sftp HMAC whirlpool - openpgp - go-crypto HMAC, Poly1305 go-crypto ID ID ID ID ID ID 345 393 333 370 331 355

128/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST,SSH HTTPS, EST, HTTPS EST,PEM, X.509 HTTPS, CSR, EST, HT- EST, HTTPS EST, HTTPS - EST TPS, PE, PEM, X.509 https://github.com/andrebur gaud/crypt2go https://github.com/teambitio n/gear-auth https://github.com/xigang/cr https://github.com/Gibheer/ pki https://github.com/pagarme/ cryptokit https://github.com/VirgilSec urity/virgil-crypto-go https://github.com/Luzifer/g o-openssl ypto PKI PKI PKI PKI PKI PKI PKI SET - X.509 PKIX, SET, X.509 - SET - - Licence Licence Licence Licence Licence Licence Licence BSD-3-Clause MIT MIT ISC MIT - - PKC PKC PKC PKC PKC PKC PKC - - DSS, RSA ECDSA, RSA DSS - - - Dates Dates Dates Dates Dates Dates Dates 2016-09-05 2017-05-28 2016-11-15 2017-08-10 2016-04-02 2017-06-14 2015-02-15 2017-05-12 2016-08-05 2017-05-17 2016-11-29 2017-07-07 2015-07-17 2017-04-04 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Apis Doc. Com. Doc. Com. Apis Doc. Com. Doc. Com. Examples Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations HMAC, Poly1305 - - - HMAC - - - Doc. Kind Website Doc. Kind Doc. Kind Website Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website 1 2 1 0 1 4 1 1 1 1 2 2 1 2 People People People People People A C A C A C A C A C People People A C A C Hash Hash Hash Hash Hash Hash Hash 1.37 0.84 3.61 0.36 0.28 0.58 0.89 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 19.8 22.58 21.49 21.21 19.51 23.05 20.57 Impact Impact Impact Impact Impact Impact Impact scrypt, SHA, SHA-2, SHA-3, SHA- - MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, SHA, SHA-2, SHA-3, SHA-512 SHA, SHA-1, SHA-2, SHA-3, SHA- - SHA, SHA-2, SHA-3, SHA-256 MD5 256, SHA-512 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Salsa - Scream - - - - - Related Related Related Related Related Related Related https://golan g.org/pkg/cry pto https://golan g.org/pkg/cry pto , https://g olang.org/pkg https://golan g.org/pkg/cry pto - https://golan g.org/pkg/cry pto/aes /encoding - - Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Type Stan. Type Stan. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go AES, DEAL, SEED AES, Blowfish AES, DES, DEAL, M8, PRESENT PRESENT AES, DES, DEAL DEAL, PRESENT - AES, AES-256 Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC, Poly1305 crypt2go - crypto - pki - cryptokit HMAC gear-auth - virgil-crypto-go - go-openssl - ID ID ID ID ID ID ID 328 327 388 336 364 376 368

129/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL CMS, DPV,HTTPS, EST, IKE,SSL PE, EST, HTTPS EST, HTTPS DCII, EST, HT- SEND, SSL, TLS, - DCII, EST, HT- SEND, SSL, TLS, EST TPS, OCSP, PEM, TPS, OCSP, PEM, X.509 X.509 https://github.com/Nebulous Labs/fastrand https://github.com/jacobsa/c rypto https://github.com/stevenroo se/cryptoconditions https://github.com/cloudflare https://github.com/golang-pl us/crypto https://github.com/mordyovi ts/golang-crypto-tls https://github.com/nogoegst/ token https://github.com/frasys-clo ud/cryptohelpers-go /cf-tls PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET OCSP, SET, X.509 - OCSP,SET, X.509 PKIX, - Licence Licence Licence Licence Licence Licence Licence Licence MIT ------PKC PKC PKC PKC PKC PKC PKC PKC DH, DSS - RSA DSA,ECDSA, RSA DSS, - DH,ECDSA, DSA, RSA DSS, - Dates Dates Dates Dates Dates Dates Dates Dates 2017-03-21 2017-05-12 2012-09-02 2016-11-11 2016-12-13 2017-06-19 2014-09-08 2015-12-08 2017-03-22 2017-06-14 2017-05-12 2017-06-06 2017-04-18 2017-06-16 2017-04-30 2017-07-12 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Explanations - - - HMAC, Poly1305 - HMAC, Poly1305 - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme, Website 1 4 1 0 1 8 1 0 1 1 1 0 1 0 2 1 People People People People People People People A C A C A C A C A C A C A C People A C Hash Hash Hash Hash Hash Hash Hash Hash 13 0.2 4.06 1.83 8.88 0.09 0.06 0.87 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 19.11 18.97 18.15 17.73 17.57 17.33 17.17 19.09 Impact Impact Impact Impact Impact Impact Impact Impact - BLAKE2 SHA, SHA-2, SHA-3, SHA-256 MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - ChaCha,SEAL, Vernam RC, - ChaCha, RC,nam Ver- - Related Related Related Related Related Related Related Related ------https://golan g.org/pkg/cry pto/rand Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Type Reim. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go AES,PRESENT DES, M6, M8, MMB, DEAL, SEED CAST, PRESENT AES, DES, PRESENT, SEED PRESENT AES, DES, M6, PRESENT, SEED PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM crypto - fastrand - cryptoconditions - cf-tls HMAC, Poly1305 crypto - golang-crypto-tls HMAC, Poly1305 token - cryptohelpers-go ID ID ID ID ID ID ID ID 322 352 373 357 341 362 366 383

130/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST DCII, EST, HT- CMP, EST, HT- EST EST, HTTPS EST, HTTPS EST, HTTPS EST,PEM, TLS, X.509 HTTPS, CMS, EST, HT- TPS, IKE,TLS, SEND, X.509 TPS, SEND TPS https://github.com/getlanter n/tlsdialer https://github.com/enceve/cr https://github.com/zaker/Ec DSA--EcDH-in-Go https://github.com/gabu/go- cryptopia https://github.com/gowww/c rypto https://github.com/teambitio n/crypto-go https://github.com/ThalesIg nite/crypto11 https://github.com/andviro/ go-cryptoapi ypto PKI PKI PKI PKI PKI PKI PKI PKI - SET, X.509 CMP, SET SET - - - SET, X.509 SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - - DH, ECDH - - - - DSA,RSA ECDSA, - Dates Dates Dates Dates Dates Dates Dates Dates 2014-09-03 2017-01-05 2016-02-01 2016-07-07 2010-06-23 2016-03-08 2017-06-28 2017-06-28 2017-07-04 2017-08-01 2017-03-10 2017-05-02 2017-03-23 2017-03-23 2015-06-30 2016-12-13 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - Poly1305 - HMAC HMAC HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 2 3 1 2 1 0 1 0 1 1 2 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 13 1.3 0.48 1.17 0.66 0.28 0.56 2.16 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 16.84 16.82 16.52 16.24 16.14 16.09 15.79 15.39 Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - BLAKE2, SipHash, Skein SHA, SHA-2, SHA-3, SHA-256 MD5, SHA, SHA-2, SHA-3, SHA-256 MD5, SHA, SHA-2, SHA-3, SHA-256 MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256 SHA, SHA-1, SHA-2, SHA-3, SHA- - 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha - - - - Crypto1 - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go DEAL PRESENT AES, Camellia,Serpent, SEED, IDEA, Threefish PRESENT, Blowfish - AES, DEAL AES, DEAL DEAL, PRESENT PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM - tlsdialer - crypto Poly1305 EcDSA--EcDH-in-G o - go-cryptopia HMAC crypto HMAC crypto-go HMAC crypto11 - go-cryptoapi - ID ID ID ID ID ID ID ID 381 323 378 382 342 369 359 349

131/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL EST, HTTPS EST,PEM, X.509 HTTPS, EST EST, SSH EST, HTTPS, PE, SEND EST,SSH HTTPS, EST, X.509 EST, PE, SEND, TLS https://github.com/qeek-dev/ cryhel https://github.com/phylake/ go-crypto https://github.com/jlhawn/g o-crypto https://github.com/dsnet/cry pto https://github.com/lgierth/cr https://github.com/scottkiss/ gosshtool https://github.com/vgorin/cr https://github.com/jtrembac k/crypto-conditions yptoauth yptogo PKI PKI PKI PKI PKI PKI PKI PKI - X.509 - SET SET - X.509 SET Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - RSA - - - RSA ECDSA DH, RSA Dates Dates Dates Dates Dates Dates Dates Dates Dates 2017-02-19 2017-03-21 2014-12-28 2016-09-25 2015-03-20 2016-09-23 2013-05-21 2015-09-01 2015-02-01 2016-05-09 2016-02-24 2016-11-20 2013-12-05 2015-03-06 2016-03-09 2016-09-09 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. ------HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 0 1 0 1 0 1 1 1 1 1 0 1 2 People People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.32 0.67 1.34 0.27 1.36 0.92 1.35 0.87 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.5 14.88 14.85 14.57 14.56 14.36 14.28 13.98 Impact Impact Impact Impact Impact Impact Impact Impact Impact - SHA, SHA-1 SHA, SHA-2, SHA-3,512 SHA-256, SHA- - SHA, SHA-2, SHA-3,512 SHA-256, SHA- - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 SHA, SHA-2, SHA-3,512 SHA-256, SHA- Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - Scream - - - - WAKE Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. AES AES PRESENT AES, SEED PRESENT DEAL, PRESENT AES, PRESENT M6, M8, NDS, PRESENT, SEED Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM cryhel - go-crypto - go-crypto - crypto - cryptoauth - gosshtool - cryptogo HMAC crypto-conditions - ID ID ID ID ID ID ID ID ID 358 350 334 339 374 353 335 354

132/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST,PCT, PE HTTPS, EST,PEM, X.509 HTTPS, CSR, EST, HT- EST, HTTPS HTTPS EST, HTTPS, PE EST, HTTPS, EST, HTTPS TPS, PEM, X.509 X.509 https://github.com/coruus/g o-sha3 https://github.com/pivotal-cf https://github.com/st3fan/go crypto https://github.com/opennota https://github.com/mervinki d/godjan https://github.com/aead/hyd rogen https://github.com/gravieinc/ aws-crypto-tools-go https://github.com/leonkling ele/randomstring https://github.com/nsjph/cry ptoauth /crypto -experimental/bletchley PKI PKI PKI PKI PKI PKI PKI PKI - X.509 SET, X.509 SET - - SET, X.509 - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DH ECDSA, RSA RSA - - - RSA - Dates Dates Dates Dates Dates Dates Dates Dates 2014-08-19 2015-05-05 2015-05-17 2015-10-25 2014-10-10 2014-10-11 2014-12-29 2015-12-27 2016-07-31 2016-12-15 2017-02-22 2017-03-22 2015-11-25 2016-01-08 2017-02-02 2017-03-10 2015-02-01 2015-02-15 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - - HMAC - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 1 1 0 1 0 1 1 1 0 1 2 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 5.7 1.11 0.72 0.26 0.23 1.24 0.47 0.09 1.35 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.4 13.82 13.75 13.67 13.62 13.61 13.58 13.57 13.36 Impact Impact Impact Impact Impact Impact Impact Impact MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512, SHAKE SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-256 - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 SipHash scrypt - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Salsa - - - - ChaCha - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go M6, M8, NOEKEON, PRESENT AES, DEAL, PRESENT IDEA, PRESENT CAST, CAST-128, CAST-256,PRESENT, IDEA, SAFER, Serpent DEAL DEAL, M6 AES, DEAL PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM go-sha3 - bletchley - gocrypto - crypto - godjan HMAC hydrogen - aws-crypto-tools-go - randomstring - cryptoauth ID ID ID ID ID ID ID ID 384 361 340 338 385 363 367 360 344

133/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS, PE, SEND EST, HTTPS EST, HTTPS EST EST, HTTPS DCII, EST, HT- SEND, SSL, TLS, EST EST, GPG, HT- TPS, OCSP, PEM, TPS, IKE, PGP X.509 https://github.com/aead/ecd h https://github.com/ereyes01/ cryptohelper https://github.com/kennylevi nsen/gocrypto https://github.com/dchest/c mac https://github.com/elorimer/ gotls https://github.com/jochasing a/hog https://github.com/alokmeng hrajani/gpgeez https://github.com/nikkolasg /tlsrp PKI PKI PKI PKI PKI PKI PKI PKI SET - - - - OCSP,SET, X.509 PKIX, - SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - DH, ECDH - - - DSA,ECDSA, RSA DSS, - DSA, DSS, ECDH, ECDSA, ElGamal, RSA Dates Dates Dates Dates Dates Dates Dates Dates 2016-07-15 2016-11-22 2015-02-25 2015-02-25 2015-04-06 2015-09-18 2015-05-21 2015-05-27 2015-05-27 2015-06-05 2015-11-13 2015-11-13 2016-09-21 2016-12-06 2017-01-04 2017-01-22 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - MMH-Badger - HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 12 12 0.41 0.21 0.87 0.35 8.52 0.38 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.0 13.33 13.29 13.21 12.98 12.95 12.94 12.86 Impact Impact Impact Impact Impact Impact Impact Impact SHA, SHA-2, SHA-3,512 SHA-256, SHA- - - - - MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - eSTREAM,bit Rab- - RC,nam SEAL, Ver- - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go PRESENT DEAL, PRESENT DEAL DEAL AES AES,SEED DES, PRESENT, SAFER, DEAL AES, DES, DEAL, IDEA, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM - ecdh - cryptohelper - gocrypto MMH-Badger cmac - gotls HMAC hog - gpgeez - tlsrp ID ID ID ID ID ID ID ID 343 346 380 379 386 375 372 389

134/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL DCII, EST, HT- SEND, SSL, TLS, EST,PEM, TLS, X.509 HTTPS, EST EST, HTTPS DK, EST, HTTPS, PEM, X.509 EST, HTTPS EST, HTTPS EST, HTTPS, PE, SEND TPS, OCSP, PEM, X.509 https://github.com/neptulon/ ca https://github.com/qingche1 https://github.com/andmario s/crypto https://github.com/emersion/ go-dkim https://github.com/mdp/sodi umbox https://github.com/neptulon/ shortid https://github.com/ArtemKu lyabin/cryptostack https://github.com/Bren2010 23/sm_crypto_golang /bn448 PKI PKI PKI PKI PKI PKI PKI PKI OCSP,SET, X.509 PKIX, PKIX, SET, X.509 - SET SET, X.509 - - SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DSA,ECDSA, RSA DSS, RSA ECDSA - RSA - - - Dates Dates Dates Dates Dates Dates Dates Dates 2015-07-23 2015-11-30 2017-02-24 2017-02-26 2015-09-23 2015-10-18 2017-01-29 2017-02-08 2016-02-10 2016-07-06 2015-11-30 2015-12-16 2016-03-19 2016-03-19 2016-09-28 2016-09-28 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC ------Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.46 1.04 1.64 1.51 0.18 0.07 1.46 2.42 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 12.4 12.85 12.64 12.52 12.38 12.22 11.71 11.21 Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - SHA, SHA-2, SHA-3,512 SHA-256, SHA- scrypt SHA, SHA-1, SHA-2, SHA-3, SHA- BLAKE2 - BLAKE2, PBKDF2 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. RC,nam SEAL, Ver- - Scream - - SEAL - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go M.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go I.L. Go AES, DES, DEAL, IDEA,SEED PRESENT, DEAL AES, PRESENT, SM4 - DEAL DEAL DEAL, PRESENT DEAL, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM HMAC ca - sm_crypto_golang - crypto - go-dkim - sodiumbox - shortid - cryptostack - bn448 ID ID ID ID ID ID ID ID 394 348 337 347 371 377 365 387

135/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL EST - AKA,CMP, CSR,DPD, CMS, DCII,GPG, EST, CMC, IES, IKE,PCT, HTTPS, PANA, PE,PHE, PGP, PEM, PoSE, RTD, SASL,SCVP, SCP, SFTP, SSH,S/MIME, SSL, SEND, TSP, CMP, CSR,DTLS, CMS, DPD, EST, GPG,IKE, OCSP,PEM, HTTPS, PGP, PE, SCEP, RTD, SSH, SSL, SEND, TLS, CMP, CSR,EST, CGA, IKE, OCSP,PEM, SCP, HTTPS, SEND, PE, SFTP, SSH, X.509 TLS, VBR, WPA, WPS, X.509 WPA, X.509 https://github.com/wolfssl/ wolfssl https://github.com/php/php- src https://github.com/phpseclib /phpseclib - PKI PKI PKI PKI PKI SET - CMP,RDBMS,RPKI, SET, X.509 PKIX, LDAP, CMP,PKCS,RTCS,SET, OCSP, X.509 PKIX, SCEP, CMP,OCSP,PKIX, SET, X.509 LDAP, PKCS, Licence Licence Licence Licence Licence GPL-2.0, commerci al PHP-3.01 MIT PKC PKC PKC PKC PKC BSD-like +grant patent - - DH,ECDH, DSA,RSA, DSS, YAK ECDSA, DH,ECDH, DSA,NTRUEncrypt, DSS, ECDSA, RSA DH,ECDSA, DSA, RSA DSS, Dates Dates Dates Dates 2011-02-05 2017-08-16 Dates - - 1999-04-07 2017-08-16 2007-06-11 2017-08-08 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Explanations - - HMAC, Poly1305 HMAC, Poly1305 HMAC Doc. Kind Readme, Website, Download Doc. Kind Website Doc. Kind Doc. Kind Readme, Website, Download Doc. Kind Readme, Website - - 4 49 1 19 80 779 People A C People A C People People People A C A C - Hash Hash Hash Hash Hash 259 49 1619 kLOC kLOC kLOC kLOC kLOC - 38.94 40.0 34.95 Impact Impact Impact Impact Impact - - BLAKE2, HAVAL, MD2,KDF2, RIPEMD, MD5, scrypt, PB- SHA, SHA- Snefru, Tiger, WHIRLPOOL BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, MD2, MD5, PBKDF2,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 2, SHA-3, SHA-256, SHA-512 1, SHA-2, SHA-3, SHA-256, SHA-512, Depen. Depen. Depen. Depen. Depen. - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha,eSTREAM, Dragon, FISH, LEX, MAG,Rabbit, NLS, RC, Salsa, Scream, SEAL, ChaCha,MAG, Rabbit, RC, LEX, NLS, RC Turing, Vernam, Vernam WAKE Related Related Related https://www .wolfssl.com/ ducts-wolfcry pt.html wolfSSL/Pro Related Related - - - Type Wrap. Type Stan. Type Type stan. Type Stan. I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. - M.L. C M.L. PHP M.L. I.L. I.L. Go I.L. I.L. I.L. PHP PHP C, Java, C#, Python, PHP, Perl - - AES, AES-128, AES-192,DES, AES-256, DEAL,IDEA, M6, FROG, M8,MESH, MAGENTA, IDEA NDS, MARS, PRESENT, NewDES, NXT, RC, RC2, NOEKEON, SAFER,SHARK, SEED, Simon, TEA, UES AES, AES-128,Camellia, AES-192, CAST,DEAL, AES-256, CRYPTON, IDEA, DES, RC, M6, RC2, SEED, M8, 3DES PRESENT, AES, AES-128,Blowfish, CAST, AES-192, DES,NXT, AES-256, DEAL, IDEA IDEA,NDS, M6, PRESENT, M8,SEED, 3DES, MAGENTA, RC, Twofish RC2, RC5, ARIA, Blowfish, CAST, CRYPTON, Name Name Name Name EAM EAM EAM EAM EAM Name - Crypto(S) - php-src HMAC, Poly1305 wolfssl HMAC, Poly1305 phpseclib HMAC ID ID ID ID ID 320 426 136 431

136/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL EKE, EST,HTTPS, GPG, OTR,SSH, PE, IKE, TSP, SCP, TLS, AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR HTTPS CMS, HTTPS CMS, EST, HT- TPS, SSL WPS https://github.com/cossac klabs/themis https://github.com/defuse/p hp-encryption https://github.com/jedisct1/ libsodium-php https://github.com/ventovir o/windwalker-crypt https://github.com/bukka/p hp-crypto https://github.com/VirgilSec urity/virgil-sdk-crypto-php PKI PKI PKI PKI PKI PKI SET CMP, LDAP, RD- BMS, SET - SET SET Licence Licence Licence Licence Licence Apache-2.0 MIT BSD-2-Clause LGPL-2.0+, LGPL- PHP-3.01 3.0+ BSD-3-Clause PKC PKC PKC PKC PKC PKC Dates DH,RSA DSS, LUC, DH,ECDSA, RSA ECDH, - - DSS 2014-09-13 2017-08-16 Dates Dates Dates Dates 2014-02-05 2017-06-21 2013-11-11 2017-08-08 2014-10-05 2017-06-11 2013-05-30 2017-04-30 2015-05-18 2017-07-25 MAC MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples Apis, Examples, Explanations Apis, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC HMAC Poly1305 HMAC HMAC Doc. Kind Readme, Website, Download 1 Doc. Kind Readme 19 Readme, Website Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind Readme 3 3 1 1 1 2 1 2 28 14 People A C People A C 47 People People People A C A C A C A C Hash Hash Hash Hash Hash Hash kLOC 4.05 3.82 3.02 3.98 7.04 kLOC kLOC kLOC kLOC 31.05 28.6 Impact 30.5 32.73 24.98 23.24 Impact Impact Impact Impact FSB, MD2,RIPEMD, SHA, MD5, SHA-1, SHA-2, MD6, SHA- PBKDF2, MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, BLAKE2 - MD5, PBKDF2, scrypt,SHA-2, SHA, SHA-3, SHA-1, SHA-256 3, SHA-256, SHA-512, WHIRLPOOL Depen. - Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - LEX,SEAL, Rabbit, SNOW, ChaCha, SEAL - Salsa Turing Related - Related Related Related Related 137 132 137, 132 137 - Type Stan. Type Stan. Type Type Type Wrap. Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. High High I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low M.L. C Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. PHP PHP M.L. C M.L. PHP M.L. C I.L. I.L. I.L. I.L. I.L. PHP PHP PHP PHP PHP AES,DEAL, AES-128, IDEA,SAFER M6, AES-256, M8, PRESENT, DES, AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, AES, AES-256, M6, M8, SEED - AES, AES-256, DES ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name Name EAM EAM EAM EAM EAM EAM Name php-encryption HMAC themis HMAC libsodium-php Poly1305 virgil-sdk-crypto-ph p HMAC windwalker-crypt HMAC php-crypto ID ID ID ID ID 428 070 430 404 403 427

137/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST,PCT, SEND HTTPS, EST, HTTPS, IKE EST,IKE, PEM, SEND, SSL, X.509 HTTPS, EST, GPG, HT- PGP, SEND EST, HTTPS CMP, CSR,HTTPS, EST, SASL, HTTPS HTTPS,SSL SEND, TPS, IKE, PE, X.509 https://github.com/IcyApril/ CryptoLib https://github.com/vinpel/p hp-Crypto https://github.com/paragoni e/halite https://github.com/davidterr anova/dterranovaCryptoBun dle https://github.com/xp-frame https://github.com/io-digital https://github.com/amilabs/ CryptoKit work/security /php-crypto PKI PKI PKI PKI PKI PKI PKI SET SET PKCS,SET, X.509 PKIX, SET SET CMP, LDAP, SET, SET SET X.509 Licence Licence Licence Licence Licence Licence Licence Licence AGPL-3.0+ ------PKC PKC PKC PKC PKC PKC PKC - - DH,RSA DSA, DSS, DH, ECDH - DSS - - Dates Dates Dates Dates Dates Dates Dates Dates 2014-12-25 2017-02-13 2014-11-17 2017-02-20 2015-09-21 2016-12-08 2012-12-16 2016-09-21 2015-12-08 2017-04-18 2016-07-06 2017-05-11 2015-03-24 2016-06-28 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations HMAC - HMAC Poly1305 - - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme, Website 1 2 1 8 2 1 1 0 1 0 2 3 1 4 People People People People People People People A C A C A C A C A C A C People A C Hash Hash Hash Hash Hash Hash Hash 4.69 8.43 0.29 4.29 0.32 2.19 0.82 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 19.25 19.17 19.14 18.82 18.62 18.26 20.01 Impact Impact Impact Impact Impact Impact Impact Impact MD5, PBKDF2, scrypt,SHA-2, SHA, SHA-3, SHA-1, SHA-256, SHA-512 PBKDF2, SHA, SHA-2, SHA-3,512, SHA- WHIRLPOOL MD2,scrypt, MD5, SHA, SHA-1,SHA-256, PBKDF2, SHA-512 SHA-2, SHA-3, RIPEMD, PBKDF2, scrypt, SHA, SHA-2, SHA- MD5 MD2, MD5, SHA, SHA-1 SHA, SHA-2, SHA-3, SHA-256 MD5, SHA, SHA-2, SHA-3, SHA-256 3, SHA-256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. RC - RC, Salsa ChaCha,Scream, SEAL Salsa, - RC, SEAL - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Type Stan. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. M.L. PHP I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. PHP PHP PHP PHP PHP PHP PHP AES, AES-128,PRESENT, SEED AES-192, AES- IDEA, PRESENT DES, IDEA,RC5, Simon PRESENT, RC, RC2, AES, AES-256,PRESENT, SAFER, CAST, SEED IDEA, M6, AES, AES-256 Blowfish, CAST, DES, PRESENT, AES, AES-256, IDEA, PRESENT AES, DEAL 256, CAST, IDEA NXT, IDEA, 3DES Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC CryptoLib - php-Crypto HMAC halite Poly1305 dterranovaCryptoB undle - security - php-crypto HMAC CryptoKit - ID ID ID ID ID ID ID ID 395 416 429 419 423 405 408

138/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST, HTTPS CMP, EST, HT- SSH, SSL, TLS, EST, HTTPS, PE DPD, EST, HT- PEM, SSL EST, HTTPS, PE, PEM EST,PEM HTTPS, EST, HTTPS TPS, IKE, RTD, TPS, IES, PE, X.509 https://github.com/Carteni/ crypto-bundle https://github.com/fpoirotte/ cryptal https://github.com/crazy-ma https://github.com/sop/cryp to-encoding https://github.com/sop/cryp to-types https://github.com/sop/cryp to-bridge https://github.com/sop/pkcs 5 https://github.com/sop/pkcs 8 x/CwsCrypto PKI PKI PKI PKI PKI PKI PKI PKI SET CMP, SET, X.509 SET SET SET PKCS, SET PKCS, SET Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DH - DH DH DSS,RSA ECDSA, ECDSA, RSA - Dates Dates Dates Dates Dates Dates Dates 2017-03-16 2017-06-07 2017-05-12 2017-08-02 2013-09-01 2016-11-28 2017-06-26 2017-07-13 2017-06-28 2017-08-03 2017-06-29 2017-08-03 2017-06-30 2017-08-03 2017-06-30 2017-08-03 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - OMAC, Poly1305, UMAC HMAC - HMAC - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.7 4.44 6.04 0.53 8.66 0.73 3.73 0.58 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 17.74 16.99 16.66 16.28 16.24 16.23 16.21 16.21 Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-512 SHA-1, SHA-2, SHA-3, MD5, SHA, SHA-1 MD5, PBKDF2, scrypt,SHA-3, SHA, SHA-256 SHA-2, FSB, MD2 MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD2, MD5, PBKDF2,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Crypto1 ChaCha - - - - - Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP I.L. I.L. I.L. I.L. I.L. I.L. I.L. PHP PHP PHP PHP PHP PHP PHP PHP DEAL, IDEA NXT, PRESENT AES,PRESENT AES-128, Camellia, DEAL, Blowfish, M6, PRESENT DEAL, FPE, M6, M8, TEA AES, AES-128,DES, DEAL, AES-192, PRESENT, RC, AES-256, RC2 DEAL, RC, RC2 DEAL, PRESENT Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM crypto-bundle - cryptal OMAC, Poly1305, UMAC CwsCrypto HMAC crypto-encoding - crypto-types HMAC crypto-bridge - pkcs5 HMAC pkcs8 ID ID ID ID ID ID ID 413 407 412 417 432 418 433 434

139/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL CMP, EST, HT- EST, HTTPS EST, HTTPS CSR, EST, HT- HTTPS HTTPS EST, HTTPS, IKE EST, HTTPS CMP, EST, HT- TPS, OTR, PEM TPS, SEND, TPS X.509 https://github.com/g4code/c rypto https://github.com/YABhq/ Crypto https://github.com/Amegatr on/CryptoApi https://github.com/alexsasha regan/crypto_lib https://github.com/elcodedoc le/cryptosecureprng https://github.com/testinawe b/dynamic-crypto https://github.com/QBonave nture/Inner-Cryptography https://github.com/loostro/c ryptomute PKI PKI PKI PKI PKI PKI PKI PKI CMP, SET SET SET SET, X.509 SET SET SET SET CMP, SET Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - - - RSA - - - - DSS Dates Dates Dates Dates Dates Dates Dates Dates Dates 2014-11-07 2016-12-06 2016-07-18 2017-01-26 2014-05-16 2014-06-11 2016-09-07 2017-02-23 2014-04-22 2015-10-12 2015-03-13 2015-03-23 2016-04-14 2016-11-19 2016-02-15 2016-07-15 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC ------HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 People People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.51 0.53 3.95 0.14 0.26 0.73 0.48 1.24 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.9 16.02 14.73 14.66 14.47 14.13 13.34 13.08 Impact Impact Impact Impact Impact Impact Impact Impact Impact - MD5, SHA, SHA-1 MD5, SHA, SHA-1 MD5, scrypt, SHA, SHA-1, Tiger - - SHA, SHA-2, SHA-3, SHA-512 SHA, SHA-2, SHA-3, SHA-256 MD5 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - LEX - Crypto1 - - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. PHP PHP PHP PHP PHP PHP PHP PHP AES, AES-256, DEAL, M6, M8 AES, AES-256, DEAL - AES, PRESENT - DEAL PRESENT AES, AES-256 AES, AES-128,DES, DEAL, AES-192, PRESENT Camellia, Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM HMAC crypto - Crypto - CryptoApi - crypto_lib - cryptosecureprng - dynamic-crypto - Inner-Cryptography HMAC cryptomute - ID ID ID ID ID ID ID ID ID 399 396 397 409 414 410 425 402

140/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST,SEND HTTPS, EST, HTTPS EST, HTTPS EST, HTTPS, PE - EST - - - https://github.com/Crackerj ackDigital/silverstripe-crypto fier https://github.com/rafrsr/cr https://github.com/FiveLab/ Cryptography https://github.com/blocktrail https://github.com/da411d/ Crypto228 https://github.com/lovenunu https://github.com/ioncube/ php-openssl-cryptor https://github.com/msfidelis/ crypto-utils-php https://github.com/rob-watt s2/crypto ypto /cryptojs-aes-php /yacl PKI PKI PKI PKI PKI PKI PKI PKI PKI SET - - - - SET - SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC - - - DH - - - - - Dates Dates Dates Dates Dates Dates Dates Dates 2015-06-28 2015-08-26 2015-12-23 2015-12-30 2015-07-30 2015-07-30 2015-08-07 2015-08-07 2015-12-26 2016-03-16 2016-12-11 2017-01-03 2016-05-16 2016-05-18 2016-10-11 2016-10-11 2016-10-08 2016-10-08 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - - - HMAC - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash Hash 3.3 0.2 0.1 1.81 0.37 0.21 0.31 0.07 0.08 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 12.7 12.88 12.77 12.73 12.23 12.03 11.48 11.24 11.23 Impact Impact Impact Impact Impact Impact Impact Impact - MD5 MD5 MD5 MD5 SHA, SHA-1, SHA-2, SHA-3 SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-256 - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP M.L. PHP I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. PHP PHP PHP PHP PHP PHP PHP PHP PHP AES, ARIA, IDEA, PRESENT DEAL AES, AES-128, DEAL AES, AES-256, M6 - AES, AES-128,Blowfish, PRESENT AES-192, AES-256, AES, AES-256, DEAL PRESENT AES,PRESENT AES-256, IDEA NXT, Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM EAM silverstripe-cryptofi er - crypto - Cryptography - cryptojs-aes-php - Crypto228 - yacl HMAC php-openssl-cryptor - crypto-utils-php - crypto - ID ID ID ID ID ID ID ID 424 398 415 406 411 422 401 421 400

141/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL - AKA, CMC, CMP, CGA, EST, HT- MSE,PoSE, PCT, SEND, SSH, SSL, PE, TLS CMC, CMP, CMS, DPV, DCII,EST, EKE, HTTPS, I2P, IES, IKE,PCT, PE, OTR, RMA, SCP, SEND, PEM, SSH, TLS, VBR, CSR, EST, HT- EST, HTTPS EST, HTTPS TPS, IES, IKE, TPS, PEM, X.509 WPA https://github.com/google/ closure-library https://github.com/bitwise shiftleft/sjcl https://github.com/yaronn /xml-crypto https://github.com/crypto- browserify/crypto-browserif https://github.com/mvayng rib/react-native-crypto y https://github.com/jic5760/J sCrypto_for_PHP PKI PKI PKI PKI PKI PKI SET CMP, DVCS, SET CMP, PKCS, SET SET, X.509 SET SET Licence Licence Licence Licence Licence Licence Licence Apache-2.0 BSD-2-Clause, GP L-2.0 MIT MIT MIT - PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates - DH,RSA DSS, LUC, DH,ECDSA ECDH, DH, RSA DH,ECDSA, RSA ECDH, DH,ECDSA, RSA ECDH, 2009-11-04 2017-09-01 2010-05-26 2017-07-07 2012-05-13 2017-06-07 2012-04-23 2017-07-11 2012-04-23 2017-06-11 Dates 2016-09-28 2016-09-28 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Explanations Apis, Explanations Apis, Examples, Explanations Doc. Com. - HMAC HMAC, OMAC HMAC HMAC HMAC Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind 2 2 Doc. Kind 4 3 2 22 23 60 28 606 1 0 People People A C A C People People People People A C A C A C People A C 25 698 1.22 1.21 Hash Hash Hash Hash Hash Hash 3.85 kLOC kLOC 0.95 kLOC kLOC kLOC kLOC kLOC 35.08 35.23 39.33 38.53 35.81 Impact Impact 11.21 Impact Impact Impact Impact Impact - FSB, MD5,SHA-2, PBKDF2, SHA-3, SHA, SHA-1, SHA-256, SHA-512, FSB,RIPEMD, MD5,SHA-2, scrypt, SHA-3, SHA-256, SHA-512 SHA, MD6, SHA-1, PBKDF2, SHA, SHA-1, SHA-2, SHA-3, SHA- MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 256, SHA-512 Tiger Depen. Depen. Depen. Depen. Depen. Depen. - - - - - Depen. - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - eSTREAM, FISH, LEX, MAG,SEAL, RC, SNOW, RC, Salsa, Turing - Crypto1 Crypto1 Turing, ZUC Related Related Related Related Related Related https://node js.org/api/cr 443 ypto.html - - - Related - Type Type Fork Reim. Type Stan. Type Stan. Type Stan. Type Type Wrap. I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. PHP I.L. I.L. I.L. I.L. I.L. I.L. I.L. PHP JavaScript JavaScript JavaScript JavaScript JavaScript DEAL 3-Way, AES, AES-256, ARIA,DES, CAST, IDEA, DEAL, M6, M8,MMB, DFC, MAGENTA, NDS, MARS, IDEASAFER, PRESENT, SEED, TEA, RC, NXT, UES RC2, AES, AES-128,IDEA, DEAL, M6, IDEARC, NXT, M8, RC2,UES MMB, RC5, PRESENT, RC6, SEED, SM4, DEAL, PRESENT AES, AES-128, DEAL AES, AES-128, DEAL Name EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name JsCrypto_for_PH P - closure-library HMAC sjcl HMAC, OMAC xml-crypto HMAC react-native-crypt o HMAC crypto-browserify HMAC ID ID ID ID ID ID ID 420 580 440 445 458 443

142/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL AS2, CSR,EST, DPD, IKE,SEND, PE, HTTPS, SSH, PEM, SSL, CMP, DPD,GPG, EST, IKE,SEND PE, HTTPS, PGP, AKA, CMC, CMP, CMS, EST,OCSP, HT- PE,PGP, PEM, SEND, SCVP, SSL, AS2, CMP,CMS, CSR, DPD,DCII, DPV, EKE,HTTPS, EST, IES, IKE, MSE, OTR,PEM, PHE, RMA, PE, SEND, SSH, SSL, AS1, CMP,DK, DPD, EST,HTTPS, GPG, OTR, PE,SCP, SEND, SSL IKE, PGP, TLS, WPS, X.509 TPS, IKE, IPsec, TLS, VBR, WPA WTLS, X.509 https://github.com/digital bazaar/forge https://github.com/google/ end-to-end https://github.com/travist/ jsencrypt https://github.com/openpg pjs/openpgpjs https://github.com/agilebit s/sjcl PKI PKI PKI PKI PKI PKCS,SET, PKCS#7, X.509 CMP, PKCS, SET CMP,Identrus,OCSP, LDAP, DVCS, PKIX,RTCS, PKCS, RPKI, SET, CMP, PKCS, SET CMP, PKCS, SET X.509 Licence Licence Licence Licence Licence GPL-2.0 Apache-2.0 ISC, MIT GPL-3.0+ BSD-2-Clause, GP L-2.0 PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates DH,RSA DSA, DSS, DH,ECDH, DSA,RSA ElGamal, DSS, DH,ECDSA, DSA, ElGamal, RSA DSS, DH, DSS,ECDSA, ECDH, RSA DH,ECDH, DSA,ElGamal, DSS, RSA ECDSA, 2010-07-12 2017-08-11 2014-06-03 2017-02-24 2013-02-15 2017-07-07 2011-11-13 2017-07-30 2010-05-26 2017-01-12 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Examples Doc. Com. Doc. Com. Apis, Examples Doc. Com. Examples, Explanations Examples, Explanations HMAC HMAC HMAC HMAC, OMAC HMAC Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme Readme Doc. Kind Readme 2 1 4 1 5 17 58 60 54 31 People People A C People People A C A C People A C A C 17 44 28 46 91 Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC 34.0 32.4 32.0 34.64 34.69 Impact Impact Impact Impact Impact MD2, MD5,SHA-1, PBKDF2, scrypt,SHA-512 SHA-2, SHA, SHA-3, SHA-256, MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- GOST, MD2, MD5,SHA-1, RIPEMD, SHA, SHA-512, SHA-2, Tiger, WHIRLPOOL SHA-3, SHA-256, FSB,scrypt, MD5, SHA, SHA-1,SHA-256, PBKDF2, SHA-512 SHA-2, SHA-3, RIPEMD, MD5, scrypt,SHA-3, SHA, SHA-256, SHA-512 SHA-1, SHA-2, 256, SHA-512 Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX, RC, Turing, LEX, SEAL,ing Tur- RC, SEAL Salsa, Turing NLS Vernam, WAKE Related Related Related Related Related http://www- cs-students.s tanford.edu/ Etjw/jsbn - 440 - - Type Type Type Stan. Type Fork Wrap. Stan. Type Stan. I.Lvl. I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low High, Low I.Lvl. High M.L. M.L. JS M.L. JS M.L. JS JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript AES, AES-128,DES, AES-192, DEAL,MAGENTA, AES-256, IDEA PRESENT, NXT,SEED, 3DES M6, RC, M8, RC2, AES, AES-128,Blowfish, CAST, AES-192, DES,M6, DEAL, AES-256, IDEA, M8, PRESENT, SEED, 3DES, AES, AES-128, AES-192, AES-256, IDEA, MAGENTA, MESH,PRESENT, MISTY1, RC, RC2,SEED, RC5, 3DES Serpent, AES, AES-128,NXT, DES, IDEA, DEAL,PRESENT, M6, IDEA RC, M8,SM4, RC2, MMB, TEA RC5, NDS, SEED, AES, AES-128,Blowfish, AES-192, DES,M6, AES-256, IDEA M8, PRESENT, RC, NXT, RC2, SEED, IDEA, 256, Blowfish, DES, DEAL, GOST, 3DES Twofish ARIA, ARIA-128, ARIA-192, ARIA- EAM EAM EAM EAM EAM Name Name Name Name Name forge HMAC openpgpjs HMAC jsencrypt HMAC sjcl HMAC, OMAC end-to-end HMAC ID ID ID ID ID 449 577 576 558 465

143/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR EST, HTTPS EST, HTTPS HTTPS,PEM IKE, EST, HTTPS https://github.com/cossac klabs/themis https://github.com/libp2p/ js-libp2p-crypto https://github.com/dchest/ tweetnacl-js https://github.com/crypto- browserify/browserify-aes https://github.com/crypto- browserify/sha.js https://github.com/brix/cr ypto-js PKI PKI PKI PKI PKI PKI CMP, LDAP, RD- BMS, SET SET SET PKIX, SET SET Licence Licence Licence Licence Licence Apache-2.0 MIT Public Domain MIT MIT MIT PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates DH,ECDSA, RSA ECDH, DH DH, DSS ECDH, RSA - 2014-09-13 2017-08-16 2016-05-19 2017-08-17 2014-01-05 2017-07-07 2014-10-15 2017-06-16 2013-12-24 2017-08-02 2013-04-08 2017-06-02 MAC MAC MAC MAC MAC MAC Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples Doc. Com. Apis, Examples Apis, Explanations Apis, Explanations HMAC - HMAC HMAC - Readme, Website, Download Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme 1 1 1 1 2 1 7 19 10 14 10 11 A C People A C People People A C A C People People A C A C 47 23 1.46 1.07 9.62 Hash Hash Hash Hash Hash Hash 2.38 kLOC kLOC kLOC kLOC kLOC 31.05 28.65 30.44 29.08 28.77 28.06 Impact Impact Impact Impact Impact MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, SHA, SHA-2 - Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. LEX,SEAL, Rabbit, SNOW, - Rabbit, RC - - Turing Related Related Related Related Related - https://gith ub.com/keyb ase/triplesec , https://node js.org/api/cr ypto.html - - 345 https://twee tnacl.js.org Stan. Type Type Stan. Type Stan. Wrap. Type Type Reim. Reim. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High C M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, DEAL AES, AES-256,NXT, DES, M8, PRESENT DEAL, IDEA AES,PRESENT, AES-128, SEED AES-256, DEAL, AES, AES-128,DEAL, IDEA AES-192, NXT, PRESENT AES-256, ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go EAM EAM EAM EAM EAM EAM Name Name Name Name Name themis HMAC sha.js - crypto-js HMAC js-libp2p-crypto HMAC browserify-aes - tweetnacl-js ID ID ID ID ID 070 439 438 467 447 452

144/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AS1, AS2,CMC, CMP, AKA, CSR, CMS, CGA, DPD, DPV, DCII,EST, EKE, GSI,HTTPS, I2P, GPG, IKE, IES, MSE,PE, PCT, RMA, PHE, RTD,SSH, PGP, SCP, SSL, TSP, HTTPS, IKE AKA, CMP,HTTPS, EST, IKE,PEM, PE, SSH EST, HTTPS, PE EST,IKE, PE, SEND HTTPS, EST, HTTPS TLS, VBR, WPS https://github.com/calvin metcalf/crypto-pouch https://github.com/dchest/ scrypt-async-js https://github.com/VirgilS ecurity/virgil-crypto-javasc ript https://github.com/hapijs/ cryptiles https://github.com/rzcoder https://github.com/ranisalt /node-rsa /node-argon2 PKI PKI PKI PKI PKI PKI CMP, SET SET CMP, SET SET SET - Licence Licence Licence Licence Licence Licence MIT MIT, BSD-2-Claus e BSD-3-Clause BSD-3-Clause Own Licenses MIT, CC0-1.0, Ap ache-2.0 PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates DH,ECDH, DSA, LUC, RSA, DSS, - DH,ECDH, DSA,RSA DSS, ECDSA, - DH - YAK 2014-11-24 2017-08-01 2014-03-13 2017-08-11 2016-01-05 2017-07-11 2013-01-12 2017-06-04 2014-03-24 2017-04-07 2015-12-19 2017-08-15 MAC MAC MAC MAC MAC MAC Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Examples, Explanations Apis, Examples, Explanations Apis, Examples, Explanations Apis, Explanations Apis, Examples, Explanations HMAC, Poly1305 - HMAC, Poly1305 - - - Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind Readme 1 1 7 1 5 3 2 1 4 1 12 12 People A C People People People People People A C A C A C A C A C 26 13 0.57 Hash Hash Hash Hash Hash Hash 1.25 0.21 4.47 kLOC kLOC kLOC kLOC kLOC kLOC 26.9 27.61 27.39 27.04 26.79 25.99 Impact Impact Impact Impact Impact Impact FSB, MD2,RIPEMD, SHA, MD5, SHA-2, SHA-3, MD6, SHA- PBKDF2, BLAKE2 MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, scrypt SHA, SHA-2, SHA-3, SHA-256 - 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Dragon,NLS,SEAL RC, LEX, Salsa, - ChaCha Salsa - - Related Related Related Related Related Related https://www .npmjs.com/ package/arg on2 466, 443, tps://github. ht com/calvinm etcalf/chach a20poly1305 - - - - Type Wrap. Type Stan. Type Stan. Type Stan. Type Stan. Type Stan. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Low I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript AES, DES,M8, DEAL, DFC, MESH,RC6, FPE, NDS, M6, SAFER,UES PRESENT, SEED, RC, SM4, TEA, CAST, DEAL, PRESENT AES, AES-128,CAST, DES, AES-192, DEAL,SEED AES-256, M8, PRESENT, - DEAL, PRESENT - EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name HMAC, Poly1305 node-argon2 - crypto-pouch HMAC, Poly1305 scrypt-async-js - virgil-crypto-javas cript - cryptiles - node-rsa ID ID ID ID ID ID 442 450 453 480 459 437

145/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST,PEM HTTPS, EST,SEND, TLS HTTPS, EST,IKE, PEM, X.509 HTTPS, AS2, CSR,EST, DPD, IKE,SEND, PE, HTTPS, SSH, PEM, SSL, AKA, EST, HT- SSH, SSL HTTPS CMP, EST, HT- EST, HTTPS TLS, WPA, WPS, TPS, PE, PEM, TPS, PEM, X.509 X.509 https://github.com/SSLco m/forge-universal https://github.com/quartzj er/ursa https://github.com/Kenan https://github.com/mozilla https://github.com/litejs/c rypto-lite https://github.com/dojo/cr https://github.com/square/ js-jose Y/get-random-values ypto /browserid-crypto PKI PKI PKI PKI PKI PKI PKI SET SET SET, X.509 PKCS,SET, PKCS#7, X.509 PKCS, SET SET CMP, SET, X.509 SET Licence Licence Licence Licence Licence Licence Licence - - - - - BSD-3-Clause Apache-2.0 PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates RSA - RSA DH,RSA DSA, DSS, DH, DSS, RSA - DH, DSA, RSA - 2010-07-12 2016-04-29 2012-02-08 2016-09-18 2014-08-07 2017-06-19 2011-08-12 2016-10-11 2014-04-21 2017-07-24 2015-05-27 2017-04-11 2014-11-20 2017-05-20 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples - - HMAC HMAC - - HMAC HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Readme 1 1 1 1 2 1 0 3 4 1 5 43 29 11 People People People People People A C A C A C A C A C People People A C A C 46 3.74 0.08 7.14 2.34 0.28 7.35 Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC 24.87 24.78 24.49 24.26 24.04 25.51 25.19 Impact Impact Impact Impact Impact Impact Impact MD2, MD5, RIPEMD,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 PBKDF2 SHA, SHA-2, SHA-3, SHA-256 MD2, MD5,SHA-1, PBKDF2, scrypt,SHA-512 SHA-2, SHA, SHA-3, SHA-256, MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, - MD2, MD5, PBKDF2,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 PBKDF2, SHA, SHA-1, SHA-2, SHA- 3, SHA-256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Vernam Scream LEX, RC, Turing, Turing - - - Vernam, WAKE Related Related Related Related Related Related Related - - - - - https://gith ub.com/dojo - /core Type Type Type Type Type Type Stan. Type Stan. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL, PRESENT, SEED NDS, PRESENT M6, PRESENT AES, AES-128,DES, AES-192, DEAL,MAGENTA, AES-256, IDEA PRESENT, NXT,SEED, 3DES M6, RC, M8, RC2, AES, AES-128, CAST,IDEA, PRESENT DES, DEAL, CAST, DEAL AES, DEAL, PRESENT, SEED PRESENT EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name - crypto - js-jose HMAC forge-universal HMAC ursa - get-random-values - browserid-crypto HMAC crypto-lite HMAC ID ID ID ID ID ID ID 436 441 573 575 483 446 526

146/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS EST, HTTPS, SSL HTTPS EST, HTTPS EST,SSH HTTPS, EST, HTTPS EST,IKE,SEND PCT, HTTPS, PE, https://github.com/diasdav id/webcrypto https://github.com/boldt/ https://github.com/nf404/c rypto-api https://github.com/npmdo c/node-npmdoc-angular-cry pto https://github.com/wangsi https://github.com/tonyg/j s-nacl https://github.com/astrono merio/cryptobject yuan0215/crypto-js https://github.com/z-hao-w ang/react-native-rsa WebCrypto.js PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET SET SET SET SET Licence Licence Licence Licence Licence Licence Licence Licence ------MIT PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates RSA DH,ECDSA, RSA ECDH, ECDH,RSA ECDSA, DH - DH, DSS DH 2015-09-13 2017-08-05 2014-10-18 2017-08-04 2015-12-03 2017-08-16 2014-03-26 2017-04-25 2013-04-08 2016-12-14 2013-01-20 2017-03-08 2015-10-21 2017-05-09 2016-03-17 2017-05-19 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples - HMAC - HMAC - HMAC Poly1305 Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme 1 2 1 0 1 1 1 2 1 1 4 1 2 2 2 10 People People People People People People People A C A C A C A C A C A C A C People A C 0.3 0.58 0.54 3.54 9.62 1.72 0.11 1.73 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 23.77 23.65 22.71 22.56 22.11 21.98 21.57 23.83 Impact Impact Impact Impact Impact Impact Impact Impact - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 SHA, SHA-1, SHA-2, SHA-3, SHA- MD2, MD5, RIPEMD,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 - MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, BLAKE2, scrypt, SHA, SHA-2, SHA- 256, SHA-512 3, SHA-256, SHA-512, SipHash Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Crypto1 - - - Rabbit, RC ChaCha,SEAL Salsa, Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Stan. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL, PRESENT, SEED AES, AES-128, DEAL AES, PRESENT ARIA, DEAL DEAL AES, AES-256,NXT, DES, M8, PRESENT DEAL, IDEA AES,PRESENT, DEAL, RC, RC2, SEED M6, M8, MMB, EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name react-native-rsa - webcrypto HMAC WebCrypto.js - crypto-api HMAC node-npmdoc-ang ular-crypto - crypto-js HMAC js-nacl Poly1305 cryptobject ID ID ID ID ID ID ID ID 464 540 485 501 543 542 574 516

147/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL HTTPS EST, HTTPS, PE, SEND AKA, CMP,PEM EST, EST, HTTPS EST, HTTPS HTTPS, PEM HTTPS, IES HTTPS, PEM EST, HTTPS https://github.com/zeruniv erse/CryptoStego https://github.com/calvin metcalf/native-crypto https://github.com/Veliov Group/meteor-aes-crypto https://github.com/Steeljui ce/crypto-password-helper https://github.com/thenati https://github.com/tmthrg d/mpw-js https://github.com/theharv eyz/sas-crypto https://github.com/ronomo n/crypto-async veweb/crypto2 PKI PKI PKI PKI PKI PKI PKI PKI - SET CMP, SET - - SET SET - SET Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates Dates - DH ECDH,RSA ECDSA, - - RSA - - - 2016-05-11 2017-04-05 2015-10-18 2017-04-28 2015-10-18 2017-05-17 2017-02-03 2017-07-19 2012-12-21 2017-03-12 2014-08-15 2017-03-26 2016-11-29 2017-07-26 2016-10-13 2017-08-03 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - HMAC - - HMAC - - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 2 3 1 3 1 1 2 0 1 1 1 1 1 1 1 0 People People People People People People People People People A C A C A C A C A C A C A C A C 4.53 3.75 0.12 0.28 0.48 0.66 0.17 1.46 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 21.4 20.4 19.8 21.53 21.52 20.84 20.13 19.64 Impact Impact Impact Impact Impact Impact Impact Impact Impact - SHA, SHA-2, SHA-3, SHA-512 PBKDF2, SHA, SHA-1, SHA-2, SHA- - PBKDF2, SHA, SHA-2, SHA-3,512 SHA- MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, PBKDF2, scrypt - SHA, SHA-1 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Turing - - - - Salsa - - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript - ARIA, DEAL, IDEA, M6, PRESENT AES, AES-128, AES-192, AES-256 AES DEAL AES, AES-256, DEAL PRESENT, SEED AES, AES-256, DEAL, M8 CAST, DEAL, SEED EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name Name - CryptoStego - native-crypto HMAC meteor-aes-crypto - crypto-password-h elper - crypto2 HMAC mpw-js - sas-crypto - crypto-async HMAC ID ID ID ID ID ID ID ID ID 454 466 520 546 474 489 471 456

148/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS HTTPS EST, HTTPS CMP, EST, HT- SEND HTTPS, SEND HTTPS EST, HTTPS EST, SEND TPS, IKE, PE, https://github.com/dday34 https://github.com/umut-s ahin/gencryption https://github.com/icellan/ meteor-sjcl https://github.com/clipper z/javascript-crypto-library https://github.com/jeffbski https://github.com/queiche rius/asymmetric-crypto https://github.com/mappu m/js-crypto https://github.com/DeBuN e/nxt-crypto /angular-sha1 /digest-stream PKI PKI PKI PKI PKI PKI PKI PKI SET SET - CMP, SET - - SET SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - DSS, RSA ECDSA RSA - - - - 2015-02-04 2017-04-08 2017-02-14 2017-08-08 2013-09-25 2015-04-03 2011-09-04 2016-01-11 2012-11-23 2017-03-03 2017-01-10 2017-06-23 2017-01-11 2017-07-10 2016-06-20 2017-05-18 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC HMAC HMAC - Poly1305 HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 2 3 2 4 0 1 0 1 1 1 1 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 12 29 0.15 0.08 0.21 0.14 1.07 3.11 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 19.2 19.59 19.51 19.42 19.41 19.41 19.31 19.29 Impact Impact Impact Impact Impact Impact Impact Impact SHA, SHA-1 MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512,POOL WHIRL- PBKDF2, SHA, SHA-2, SHA-3, SHA- MD5, scrypt,SHA-256 SHA, SHA-2, SHA-3, MD5, SHA, SHA-1 - MD5, RIPEMD, SHA, SHA-2,SHA-256 SHA-3, SHA, SHA-2, SHA-3,512 SHA-256, SHA- 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Crypto1, Vernam, - SNOW, Turing - Salsa Turing - Vigenere cipher Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript PRESENT AES,DEAL, RC, Blowfish, RC2, SEED Camellia, DES, AES AES,PRESENT, DEAL, SEED IDEA, MAGENTA, DEAL DEAL AES, SEED PRESENT EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name angular-sha1 - gencryption HMAC meteor-sjcl HMAC javascript-crypto-l ibrary HMAC digest-stream - asymmetric-crypto Poly1305 js-crypto HMAC nxt-crypto - ID ID ID ID ID ID ID ID 538 536 549 451 562 494 497 510

149/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS, PEM CSR, EST, HT- AKA, CSR,EST, CMS, IPsec, HTTPS, OCSP, HTTPS HTTPS HTTPS EST, HTTPS HTTPS TPS, PEM, X.509 X.509 https://github.com/navyxie https://github.com/Scytl/x ml-crypto-browser https://github.com/romans opov/crypto https://github.com/vgoma/ crypto-pro https://github.com/cryptoc oinjs/crypto-hashing https://github.com/logotyp e/es-crypto https://github.com/wxcsdb 88/crypto https://github.com/valeria ngalliat/crypto-promise /n-crypto PKI PKI PKI PKI PKI PKI PKI PKI SET SET, X.509 LDAP,PKCS,PKCS#7, OCSP, PKIX, SET, SET - SET SET - X.509 Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates DSS, RSA RSA DH,ECDH, DSA,RSA DSS, ECDSA, - - DH, DSS,RSA ECDH, - - 2015-09-11 2017-03-11 2012-05-13 2015-02-24 2014-12-05 2017-02-01 2017-01-17 2017-06-08 2014-01-12 2016-03-30 2017-02-04 2017-06-17 2017-05-21 2017-05-22 2015-03-11 2017-03-06 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - HMAC - - HMAC Poly1305 HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 7 1 2 1 0 2 2 1 0 2 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 21 2.6 1.27 2.15 5.81 0.04 1.28 0.04 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 18.6 18.81 18.61 18.56 18.35 18.33 18.13 18.11 Impact Impact Impact Impact Impact Impact Impact Impact MD5 SHA, SHA-1, SHA-2, SHA-3, SHA- GOST, MD5,SHA-3, SHA, SHA-256, SHA-512, SHA-1, Streebog SHA-2, GOST, PBKDF2, RIPEMD RIPEMD, SHA, SHA-1, SHA-2, SHA- MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-512 256 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - Turing Salsa - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript AES, AES-128, DES PRESENT AES, AES-128,DES, GOST, AES-192, M6, PRESENT, AES-256, SEED - DEAL AES, DES, DEAL DEAL, SEED AES, AES-256, PRESENT EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name n-crypto HMAC xml-crypto-browse r - crypto HMAC crypto-pro - crypto-hashing - es-crypto HMAC crypto Poly1305 crypto-promise HMAC ID ID ID ID ID ID ID ID 476 541 479 468 477 507 462 530

150/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS HTTPS HTTPS, SEND, HTTPS HTTPS, SEND EST,IKE, PE,SSH HTTPS, SEND, HTTPS HTTPS X.509 https://github.com/brokete ch/node-cryptopia-api https://github.com/c-geek/ merkle https://github.com/web-eid https://github.com/jbt/js-c rypto https://github.com/sigwo/ node-cryptopia https://github.com/pussinb oots/angularjs-crypto https://github.com/middle out/angular-cryptography https://github.com/fabioric ali/Cryptor /web-eid.js PKI PKI PKI PKI PKI PKI PKI PKI - SET SET, X.509 SET SET SET SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - - - - - DSS - - 2017-05-08 2017-07-06 2013-07-30 2016-03-22 2017-03-29 2017-07-03 2011-06-11 2015-12-13 2014-07-14 2015-11-21 2014-05-22 2016-09-06 2014-09-27 2016-07-11 2017-05-21 2017-06-10 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - - - HMAC - - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 5 1 0 1 4 1 6 1 3 1 4 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 0.14 0.93 0.35 0.25 0.23 1.27 0.03 0.29 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 16.9 17.71 17.68 17.62 17.44 17.41 17.06 16.84 Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA, SHA-2, SHA-3, SHA-256 MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512,POOL WHIRL- - MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, MD5, SHA, SHA-2,SHA-512 SHA-3, SHA-256, - - MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - Rabbit - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript - DEAL DEAL IDEA DEAL AES, DES, IDEA, PRESENT AES, PRESENT AES, AES-128, AES-256, Blowfish EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name node-cryptopia-api HMAC merkle - web-eid.js - js-crypto - node-cryptopia HMAC angularjs-crypto - angular-cryptogra phy - Cryptor HMAC ID ID ID ID ID ID ID ID 552 457 473 455 514 448 461 502

151/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL HTTPS HTTPS, PEM EST,PGP, SEND HTTPS, EST,SEND, S/MIME HTTPS, AKA, CSR,EST, CMS, IPsec, OCSP, PE, HTTPS, HTTPS CSR, EST,SSL, HT- TLS, X.509 TPS, IKE, PEM, X.509 https://github.com/facekap ow/runtime-node-crypto https://github.com/anywhi chway/cryptozoa https://github.com/c2fo-la b/webcrypto-crypt https://github.com/chengxi anga2008/node-cryptojs-aes https://github.com/rudonic k/crypto https://github.com/Broooo ooklyn/wechat-dingding-cry ptor https://github.com/hookfla sh/obsolete.cifre https://github.com/lklancir /cryptonic PKI PKI PKI PKI PKI PKI PKI PKI SET - SET SET LDAP,PKCS,PKCS#7, OCSP, PKIX, SET, SET PKCS,SET, PKCS#7, X.509 X.509 Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates DH - DH, DSS,RSA ECDH, - DH,ECDH, DSA,RSA DSS, ECDSA, - DSS, RSA 2015-07-06 2016-07-09 2017-07-10 2017-07-17 2017-05-30 2017-08-01 2012-07-30 2014-02-26 2014-12-05 2016-10-30 2015-08-03 2015-12-01 2013-01-29 2013-07-30 2015-11-10 2016-08-18 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - HMAC HMAC HMAC - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 2 1 1 1 1 0 1 3 1 1 2 1 1 2 2 0 People People People People People People People A C A C A C A C A C A C A C A C 13 22 19 0.19 0.68 2.31 0.46 3.67 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC 16.7 16.72 16.71 16.59 16.02 15.97 15.88 15.72 Impact Impact Impact Impact Impact Impact Impact - - PBKDF2, RIPEMD,SHA-2, SHA-3, SHA, SHA-512 SHA-1, MD2, MD5, MD6 GOST, MD5,SHA-3, SHA, SHA-256, SHA-512, SHA-1, Streebog SHA-2, SHA, SHA-1 MD2, MD5,SHA-1, PBKDF2, scrypt,SHA-512 SHA-2, SHA, SHA-3, SHA-256, Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - Turing Turing - - Turing Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript AES, DEAL DEAL AES, DES,SEED DEAL, M8, PRESENT, AES, ARIA, CAST,PRESENT, DEAL, SEED M6, M8, AES, AES-128,DES, GOST, AES-192, M6, PRESENT, AES-256, SEED AES, AES-256 AES, AES-128,DES, AES-192, DEAL,SEED, AES-256, PRESENT, 3DES RC, RC2, EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name runtime-node-cryp to HMAC cryptozoa - webcrypto-crypt HMAC node-cryptojs-aes HMAC crypto HMAC wechat-dingding-c ryptor - obsolete.cifre HMAC cryptonic ID ID ID ID ID ID ID 522 515 555 475 435 567 579 517

152/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL CSR, EKE,HTTPS, PE, EST, PEM, PGP, SEND, SSH, EST, MSE, SEND EST,PEM HTTPS, EST, SEND CSR, EST,SSH, HT- SSL, TLS, HTTPS, SEND HTTPS HTTPS TLS, X.509 TPS, PEM, SEND, X.509 https://github.com/msotoo deh/WhiteBoxCrypto https://github.com/safebas h/OpenCrypto https://github.com/ezeoleaf https://github.com/whiteo ut-io/crypto-lib https://github.com/streem bit/streembitlib https://github.com/fenivan a/CryptoCookie https://github.com/tswater s/hashifier https://github.com/pocesar /Cryptor-Eof /node-nxt-api PKI PKI PKI PKI PKI PKI PKI PKCS, SET, X.509 - - SET PKCS, SET, X.509 SET SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates DH, DSS, RSA DH - - DSS, RSA - - - 2015-07-01 2016-12-24 2016-07-31 2017-02-26 2015-04-21 2015-04-22 2013-05-16 2015-04-23 2016-03-29 2016-12-12 2014-08-09 2015-06-12 2014-10-05 2016-10-02 2014-09-01 2015-03-24 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - - - HMAC - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 1 2 0 1 1 1 2 1 2 1 0 1 2 People People People People People People People People A C A C A C A C A C A C A C A C 82 10 1.24 0.54 4.68 0.42 0.09 6.87 Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 15.6 15.6 15.6 15.19 15.16 15.15 15.15 15.08 Impact Impact Impact Impact Impact Impact Impact Impact MD2, MD5, MD6, SHA, SHA-1, SHA- - - - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 SHA, SHA-1 PBKDF2, SHA, SHA-2, SHA-3 PBKDF2, SHA, SHA-2, SHA-3,512 SHA- 2, SHA-3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - RC - - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript AES,DEAL, ARIA, IDEA,RC2 M6, CRYPTON, M8, NDS, DES, RC, ARIA, M6, M8 DEAL DEAL AES, AES-128,DES, AES-192, DEAL,SEED, AES-256, PRESENT, TEA, 3DES RC, RC2, IDEA,SEED MAGENTA, PRESENT, AES, AES-256 DEAL EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name HMAC WhiteBoxCrypto - OpenCrypto - Cryptor-Eof - crypto-lib HMAC streembitlib - CryptoCookie HMAC hashifier - node-nxt-api ID ID ID ID ID ID ID ID 482 500 553 463 539 527 560 490

153/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL AKA, EST, HT- AKA, HTTPS EST, HTTPS EST, HTTPS HTTPS EST, HTTPS, IKE EST,IKE,PHE, PE, SEND, HTTPS, TLS PEM, AKA, DCII,HTTPS, EST, IKE,PEM, PE, SEND, SSH TPS, IKE,TLS SEND, https://github.com/crypto- browserify/createECDH https://github.com/yarabey https://github.com/Pageba kers/meteor-crypto-sha256 https://github.com/nolanla https://github.com/cyphrd/ crypto https://github.com/wwwty ro/cryptico https://github.com/ad-l/dj cl https://github.com/anchorj s/crypto wson/crypto-pouch /node-hashit PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET - SET SET SET SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - DH, ECDH - - DH RSA DH, DSS, RSA DH, RSA 2014-11-02 2015-12-11 2017-02-20 2017-04-19 2013-12-12 2014-08-13 2014-11-24 2016-06-20 2012-07-24 2015-05-15 2012-07-28 2013-03-31 2014-06-02 2015-01-29 2012-12-27 2015-03-02 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - HMAC - HMAC - HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 0 1 1 1 1 1 0 1 0 1 1 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 45 7.1 0.19 0.72 0.21 0.18 6.93 0.17 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 15.05 14.92 14.92 14.88 14.74 14.71 14.64 14.63 Impact Impact Impact Impact Impact Impact Impact Impact PBKDF2 - MD5, SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-256 PBKDF2 MD5,SHA-1, PBKDF2,SHA-512, SHA-2, RIPEMD, WHIRLPOOL SHA-3, SHA, SHA-256, MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, SHA, SHA-1, SHA-2, SHA-3, SHA- 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. SEAL, Vernam - - - ChaCha Dragon, RC LEX, NLS, Turing LEX, Turing Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript CAST, DEAL, PRESENT - - - - AES, AES-128,PRESENT, SEED AES-192, AES-256, AES, DES, M6,RC2, M8, RC5, PRESENT, SEED RC, AES, CAST, DEAL,PRESENT, IDEA, SAFER, SEED, M6, TEA M8, EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name - createECDH - node-hashit - meteor-crypto-sha HMAC crypto-pouch - crypto HMAC cryptico - djcl HMAC crypto 256 ID ID ID ID ID ID ID ID 488 484 486 544 444 578 472 470

154/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS AKA,SEND HTTPS, CMS, DPV, DCII,EST, HTTPS, I2P, IES,SSH PE, PEM, HTTPS - HTTPS HTTPS HTTPS EST, HTTPS https://github.com/alax/fo rward-secrecy https://github.com/mychae lgo/crypto-js https://github.com/digitale dgeit/easy-encryption https://github.com/segmen tio/crypto-token https://github.com/ajsb85/ https://github.com/michael rhodes/subtle-digest https://github.com/Skeptic alHippo/crypto-random https://github.com/wi2/ma chinepack-aes256 WebCrypto.js PKI PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET - SET SET SET - SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - DH DH, DSS - - RSA - - - 2015-08-31 2016-07-14 2013-01-15 2013-02-24 2015-08-07 2016-08-29 2014-10-01 2015-06-19 2014-10-18 2015-04-20 2016-04-21 2017-01-03 2017-04-16 2017-04-18 2015-03-20 2016-08-02 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC HMAC HMAC ------Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 0 1 1 1 1 1 1 1 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 17 1.38 0.34 0.08 0.33 0.18 0.11 0.37 Hash Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.6 14.4 14.62 14.44 14.34 14.18 14.17 14.11 Impact Impact Impact Impact Impact Impact Impact Impact MD5 PBKDF2, SHA, SHA-2, SHA-3, SHA- MD5,SHA, MD6, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- PBKDF2, SHA, SHA-1 - SHA, SHA-1, SHA-2, SHA-3, SHA- SHA, SHA-1 - - 256 256, SHA-512 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - NLS, Rabbit, RC, ------Turing Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL PRESENT AES, AES-256, CAST,IDEA DES, DEAL, PRESENT, SM4, NXT, UES M6, M8, MMB, DEAL DEAL AES, IDEA, PRESENT PRESENT DEAL AES, AES-256, DEAL EAM EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name HMAC forward-secrecy HMAC crypto-js HMAC easy-encryption - crypto-token - WebCrypto.js - subtle-digest - crypto-random - machinepack-aes2 56 - ID ID ID ID ID ID ID ID 513 508 550 499 557 561 506 565

155/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL HTTPS HTTPS HTTPS HTTPS HTTPS HTTPS EST,SEND HTTPS, HTTPS https://github.com/nelfin/l ibnatrium.js https://github.com/behdad ahmadi/jscrypt https://github.com/cbourg ois/cryptoJsPasswordEncod er https://github.com/James MGreene/node-aes256 https://github.com/mingch en/node-crypto-gcm https://github.com/roryrjb/ crypto-json https://github.com/neoatla ntis/neoatlantis-crypto-js https://github.com/Nummi norihSF/crypt-maker PKI PKI PKI PKI PKI PKI PKI PKI - - - - SET - SET SET Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates Dates - DSS - - - - ECDSA - 2015-01-16 2015-01-18 2017-03-01 2017-04-03 2015-03-07 2015-09-29 2015-04-04 2015-12-17 2017-03-03 2017-03-31 2015-01-20 2016-05-16 2014-07-26 2015-04-27 2015-04-27 2015-11-03 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC - - - - Poly1305 HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 1 People People People People People People People People People A C A C A C A C A C A C A C A C 8.9 0.13 0.04 0.07 0.69 0.22 0.14 0.74 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.9 14.08 14.03 13.99 13.97 13.89 13.87 13.84 Impact Impact Impact Impact Impact Impact Impact Impact Impact - MD5, scrypt,SHA-3, SHA, SHA-256 SHA-1, SHA-2, SHA, SHA-2, SHA-3, SHA-512 SHA, SHA-2, SHA-3, SHA-256 PBKDF2, SHA, SHA-2, SHA-3, SHA- - PBKDF2, scrypt, WHIRLPOOL SHA, SHA-1 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - RC - - - - ChaCha, Salsa - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL, PRESENT AES, AES-128,Blowfish, AES-192,IDEA, Camellia, AES-256, PRESENT, RC, RC2, CAST, SEED DES, DEAL AES, AES-256, DEAL, IDEA AES, AES-128,DEAL AES-192, AES-256, AES, AES-256, Camellia, DEAL DEAL, PRESENT, SEED AES, AES-128,DEAL AES-192, AES-256, EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name Name libnatrium.js - jscrypt HMAC cryptoJsPassword Encoder - node-aes256 - node-crypto-gcm - crypto-json - neoatlantis-crypto- js Poly1305 crypt-maker HMAC ID ID ID ID ID ID ID ID ID 564 566 547 568 512 525 521 570

156/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST,PoSE HTTPS, HTTPS EST, HTTPS, PE HTTPS HTTPS HTTPS, PEM HTTPS EST, GSI,PEM, HT- SFTP RMA, TPS, I2P, PE, https://github.com/pose/w ebcrypto-jwt https://github.com/Storj/s torj-crypto https://github.com/zMotiv at0r/cryptopeer-crypto https://git.daplie.com/cool aj86/secret-utils https://github.com/borschi k/borschik-hash https://github.com/execmd https://github.com/microst ar-db/microstar-crypto https://github.com/artjom b/cryptojs-extension /crypto-rc4 PKI PKI PKI PKI PKI PKI PKI PKI - SET SET - - - - SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - - ECDH, RSA - - RSA - DH, YAK 2015-04-25 2015-07-21 2017-03-06 2017-03-13 2016-11-17 2017-02-23 2014-10-13 2015-07-30 2017-03-09 2017-03-10 2015-07-02 2015-11-06 2014-12-06 2015-01-22 2015-06-05 2016-06-09 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - Poly1305 - - - - HMAC, OMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 12 0.45 0.25 2.49 0.14 0.17 0.12 0.21 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.78 13.76 13.71 13.71 13.58 13.58 13.53 13.51 Impact Impact Impact Impact Impact Impact Impact Impact - PBKDF2, SHA, SHA-2, SHA-3, SHA- PBKDF2, SHA, SHA-2, SHA-3,512 SHA- MD5, scrypt,SHA-3, SHA, SHA-256, SHA-512 SHA-1, SHA-2, SHA, SHA-1 - - GOST, SHA, SHA-1,SHA-256, SHA-2, Streebog SHA-3, 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha - - RC - MAG Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL AES, PRESENT DEAL PRESENT DEAL DEAL M6 AES,DFC, AES-128, GOST,RC2, Blowfish, M6, TEA M8, DEAL, MMB, RC, EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name webcrypto-jwt HMAC storj-crypto - cryptopeer-crypto Poly1305 secret-utils - borschik-hash - crypto-rc4 - microstar-crypto - cryptojs-extension HMAC, OMAC ID ID ID ID ID ID ID ID 504 532 492 559 495 519 535 496

157/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS EST, HTTPS AKA, EST, HT- HTTPS, SEND EST, HTTPS HTTPS HTTPS EST, HTTPS TPS, IKE, SEND https://github.com/DavidA nson/crc-hash https://github.com/lostway s/crypto-classic-otp https://github.com/ahvone nj/cryptoanalysis https://github.com/Doctor McKay/node-crypto https://github.com/joeban denburg/libaxolotl-crypto-n ode https://github.com/yutent/ crypto.js https://github.com/jsonma ur/node-crypto-extra https://github.com/wieldo/ crypto https://github.com/heap/cr yptohat PKI PKI PKI PKI PKI PKI PKI PKI SET - SET - SET - SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - - DH, DSS - - - - - 2014-12-18 2015-03-14 2015-01-07 2015-01-16 2015-07-29 2015-08-01 2016-02-18 2016-10-27 2015-02-05 2015-02-07 2017-02-17 2017-03-12 2016-02-19 2016-10-10 2016-02-22 2016-07-28 2016-03-30 2016-04-09 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - HMAC HMAC HMAC HMAC HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 2 People People People People People People People People A C A C A C A C A C A C A C A C A C 0.2 0.53 0.09 8.17 0.21 0.36 0.33 0.94 0.88 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 13.5 13.43 13.41 13.36 13.35 13.25 13.15 13.12 12.99 Impact Impact Impact Impact Impact Impact Impact Impact MD5 - MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, SHA, SHA-1, SHA-2, SHA-3, SHA- SHA, SHA-2, SHA-3, SHA-256 MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5, SHA,SHA-256 SHA-1, SHA-2, SHA-3, - 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - LEX, Rabbit,SNOW RC, - - - - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL - AES,PRESENT, ARIA, SEED DES, MAGENTA, AES, AES-256, IDEA NXT, IDEA AES, AES-256, PRESENT AES, AES-128, PRESENT AES, AES-256, DEAL - EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name crc-hash - crypto-classic-otp - cryptoanalysis HMAC node-crypto HMAC libaxolotl-crypto-n ode HMAC crypto.js HMAC node-crypto-extra HMAC crypto - cryptohat ID ID ID ID ID ID ID ID 563 545 518 534 498 487 505 460 469

158/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS HTTPS HTTPS - EST, HTTPS HTTPS, SSH CSR, CMS,GPG, EST, IKE, OCSP, PEM, PGP, HTTPS, TSP, X.509 EST, HTTPS https://github.com/aluxian https://github.com/calvin metcalf/crypto-stream https://github.com/gungun febrianza/awesome-cryptogr aphy https://github.com/giovan niRodighiero/node-passwor d-encrypter https://github.com/indutny https://github.com/richard anaya/cryptoidentity https://github.com/jeescu/ meteor-server-encryption https://github.com/Psychic Cat/random-crypto /node-acrypto /minimalistic-crypto-utils PKI PKI PKI PKI PKI PKI PKI PKI PKI SET - SET - SET - OCSP, SET, X.509 SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates ------DSA,ECDSA, RSA DSS, - 2015-06-23 2015-06-23 2015-06-26 2015-06-26 2016-08-25 2016-12-22 2017-02-28 2017-02-28 2017-02-22 2017-02-22 2016-03-07 2016-03-07 2016-05-02 2016-09-21 2015-12-05 2016-04-03 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - HMAC HMAC - - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 0.02 0.28 1.14 0.63 0.08 0.53 0.43 0.06 Hash Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 12.4 12.87 12.86 12.85 12.68 12.55 12.43 12.42 Impact Impact Impact Impact Impact Impact Impact Impact - PBKDF2, SHA, SHA-2, SHA-3, SHA- SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-512 MD5, PBKDF2, SHA, SHA-2,SHA-512 SHA-3, - MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- - 256 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------Crypto1 - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript DEAL, PRESENT, SEED M6, PRESENT AES, AES-128, AES-192, AES-256 DEAL DEAL DEAL AES, DES, DEAL, PRESENT, SEED AES EAM EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name - node-acrypto - crypto-stream HMAC awesome-cryptogr aphy HMAC node-password-enc rypter - minimalistic-crypt o-utils - cryptoidentity HMAC meteor-server-encr - random-crypto yption ID ID ID ID ID ID ID ID 569 528 554 493 523 478 551 529

159/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS HTTPS HTTPS HTTPS, SEND HTTPS - CSR, CMS,GPG, EST, IKE, OCSP,PEM, PGP, HTTPS, SEND, PE, EST, HTTPS EST, HTTPS TSP, X.509 https://github.com/elastic/ node-crypto https://github.com/emarte ch/node-easy-crypto https://github.com/saulsha nabrook/react-native-webvi ew-crypto https://github.com/thomas champagne/crypto-xor https://github.com/mushta t/des https://github.com/lifesrea son/SM2 https://github.com/Oaken- Innovations/zymkey https://github.com/kelvin- martin/crypt PKI PKI PKI PKI PKI PKI PKI PKI - SET SET SET - - LDAP,PKCS,SET, X.509 OCSP, PKIX, SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - - - - - DSS DH,ECDSA, DSA, RSA DSS, - - 2016-09-06 2016-10-12 2016-05-05 2016-08-23 2016-06-17 2016-09-20 2016-02-10 2016-04-15 2016-01-10 2016-01-10 2016-12-15 2017-01-04 2017-01-04 2017-01-04 2016-05-03 2016-05-11 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. ------HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 58 0.3 0.4 0.27 0.15 0.08 0.72 0.36 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 12.25 12.13 12.05 12.03 12.02 11.99 11.76 11.55 Impact Impact Impact Impact Impact Impact Impact Impact - PBKDF2, SHA, SHA-2, SHA-3,512 SHA- PBKDF2, SHA, SHA-2, SHA-3, SHA- - - MD5 MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- SHA, SHA-2, SHA-3, SHA-256 SHA, SHA-2, SHA-3, SHA-256 256 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------Crypto1 - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript - AES, AES-256 AES, AES-256, DEAL CAST DEAL DES AES, DES, PRESENT, SEED PRESENT AES, AES-256, DEAL, IDEA EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name - node-crypto - node-easy-crypto - react-native-webvi ew-crypto - crypto-xor - des - SM2 HMAC zymkey - crypt - ID ID ID ID ID ID ID ID 531 548 491 533 556 511 524 571

160/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS EST,SSH HTTPS, - HTTPS EST, HTTPS, PE - AS2, CMS,DCII, DPV, EKE,GSI, EST, HTTPS, I2P, IES,PEM, IKE, PHE,SSL, SSH, PE, TSP, TLS, VBR, WPS https://github.com/gonzalo https://github.com/magicw ing/cryptojs https://github.com/nyraxle https://github.com/sindres orhus/crypto-random-string https://github.com/alperta yfun/crypto-aes 123/crypt /hmac-file-stream https://storage.googleapis.co m/google-code-archive-sourc e/v2/code.google.com/jscryp tolib/source-archive.zip https://storage.googleapis.co m/google-code-archive-source s/source-archive.zip /v2/code.google.com/crypto-j PKI PKI PKI PKI PKI PKI PKI SET SET SET - SET - SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates - - Dates - - Dates - DH - - DH DH, ECDSA DH, DSS 2016-05-15 2016-05-15 2016-12-01 2016-12-03 2016-11-29 2016-11-30 2016-11-14 2016-11-14 2016-08-15 2016-08-26 Doc. Com. Doc. Com. Doc. Com. MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC HMAC - HMAC HMAC HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind - - - - 1 0 1 0 1 0 1 0 1 0 People People People A C A C People People People People People A C A C A C A C A C 0.0 189 0.18 6.11 0.05 0.02 6.36 Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC - - 11.48 11.47 11.44 11.35 11.31 Impact Impact Impact Impact Impact Impact Impact Impact - MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, SHA, SHA-1 - - scrypt MD2,RIPEMD, MD5,SHA-3, SHA, SHA-256, SHA-512 MD6, SHA-1, SHA-2, PBKDF2, Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Rabbit, RC - - - - LEX, NLS, Rabbit, RC, Turing Related Related Related Related Related Related Related Related ------Type Type Type Wrap. Wrap. Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. - M.L. JS M.L. M.L. JS M.L. JS M.L. JS M.L. JS M.L. JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript AES AES, PRESENT DEAL DEAL AES, M6, M8, PRESENT SEED AES, AES-256, CAST,IDEA DES, DEAL, PRESENT, NXT, RC, RC2, M6, RC5, SM4, M8, MMB, TEA, UES Name Name Name EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name crypt - cryptojs HMAC hmac-file-stream HMAC crypto-random-str ing - crypto-aes HMAC jscryptolib HMAC crypto-js HMAC ID ID ID ID ID ID ID ID 537 503 572 481 509 581 582

161/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL EST,SEND HTTPS, AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR HTTPS EST, SEND CMP, CMS,HTTPS, EST, OCSP, PE,SEND, PEM, TSP, IES, TLS, X.509 https://github.com/cossac klabs/themis https://github.com/tancre d/tweetnacl-objc https://github.com/aeroge ar/aerogear-cordova-crypto https://github.com/ideawu /Objective-C-RSA https://download.microsoft.c om/download/C/A/C/CAC B6F6B-4855-4ED2-935F-A3D B277E6B3D/msrCrypto.1.4.z ip PKI PKI PKI PKI PKI PKCS, SET CMP, LDAP, RD- BMS, SET SET SET CMP,PKCS, OCSP, SET, X.509 Licence Licence Licence Licence Licence Apache-2.0 - Apache-2.0 BSD-3-Clause - PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates - - DH,ECDSA, RSA ECDH, DH,ECDSA, RSA ECDH, RSA - DH,Gamal, RSA DSA, El- 2014-09-13 2017-08-16 2014-01-15 2017-05-30 2013-11-08 2017-04-07 2015-02-03 2017-07-18 MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Examples Doc. Com. Examples Doc. Com. Apis, Examples Apis, Examples, Explanations HMAC HMAC - Poly1305 - Doc. Kind Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website Doc. Kind Readme, Website, Download - - 1 0 1 5 1 2 1 19 A C People People A C People People A C A C People A C 74 47 1.65 1.21 0.68 Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC - 23.53 23.48 24.64 31.05 Impact Impact Impact Impact Impact SHA, SHA-1, SHA-2, SHA-3, SHA- MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, scrypt, SHA,512 SHA-2, SHA-3, SHA- SHA, SHA-2, SHA-3,512 SHA-256, SHA- PBKDF2 256, SHA-512 Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - LEX,SEAL, Rabbit, SNOW, - Salsa - Turing Related Related Related Related Related - http://tweet nacl.cr.yp.to https://aero gear.org/doc s/specs/aero gear-js/Aero Gear.Crypto. html - - Type Stan. Type Type Type Type Stan. Reim. Wrap. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. I.Lvl. High High, Low M.L. C M.L. M.L. ObjC ObjC M.L. M.L. C JS Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. JavaScript AES, CAST,PRESENT, IDEA SEED NXT, M6, M8, AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, - DEAL M6, M8, PRESENT, RC, RC6 Objective-C ARIA, CAST, DEAL, IDEA, M6, M8, Objective-C Objective-C C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go EAM EAM EAM EAM EAM Name Name Name Name Name msrCrypto1.4 HMAC themis HMAC Objective-C-RSA - tweetnacl-objc Poly1305 aerogear-cordova- crypto - ID ID ID ID ID 583 070 616 584 612

162/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL EST, PE, PEM, EST, HTTPS EST, HTTPS, PE EST, HTTPS HTTPS X.509 https://github.com/aeroge ar/aerogear-crypto-ios https://github.com/ameing ast/cryptokit https://github.com/Daniat e/INBSecurityCrypto https://github.com/tectiv3 https://github.com/alex-ch an/swift-sodium /react-native-aes PKI PKI PKI PKI PKI SET, X.509 SET SET - SET Licence Licence Licence Licence Licence Apache-2.0 BSD-3-Clause MIT GPL-3.0 ISC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates DH, RSA - DH - - 2013-10-09 2016-02-11 2008-08-30 2017-04-29 2015-05-18 2017-07-22 2017-02-10 2017-06-05 2014-12-27 2016-07-28 MAC MAC MAC MAC MAC Doc. Com. Apis Doc. Com. Doc. Com. Apis, Examples Doc. Com. Doc. Com. Apis, Examples Apis, Examples, Explanations HMAC - HMAC, Poly1305 Poly1305 HMAC Doc. Kind Readme Readme Doc. Kind Readme Doc. Kind Doc. Kind Readme Doc. Kind Readme, Website 1 0 1 0 1 1 1 1 8 13 People A C People People People A C A C A C People A C 3.9 2.35 0.46 4.48 1.71 Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC 22.39 22.98 18.69 20.28 18.83 Impact Impact Impact Impact Impact MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD2, MD5,SHA-3, SHA-512 SHA, SHA-1, SHA-2, BLAKE2, PBKDF2,SHA-2, SHA-3, scrypt,SipHash SHA-256, SHA, SHA-512, PBKDF2 PBKDF2, SHA, SHA-1, SHA-2, SHA- 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha,Salsa, SEAL LEX, Salsa - Related Related Related Related Related https://deve loper.apple.c om/docume ntation/ https://open source.apple. com/source/ CommonCry pto , https:// developer.ap ple.com/doc umentation/ corefoundati on https://open source.apple. com/source/ CommonCry pto , https:// docs.oracle.c om/javase/7 package-sum mary.html https://dow nload.libsodi um.org/doc vax/crypto/ http://nacl. cr.yp.to /docs/api/ja Type Wrap. Type Type Type Wrap. Wrap. Wrap. Type Wrap. I.Lvl. High High I.Lvl. High I.Lvl. I.Lvl. High I.Lvl. High, Low M.L. ObjC M.L. M.L. M.L. C ObjC ObjC M.L. ObjC Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. AES, DEAL, M8 DEAL, PRESENT, SAFER AES, AES-128,PRESENT, SEED AES-256, M6, M8, PRESENT, SEED AES, IDEA, PRESENT Swift, Objective-C Objective-C Objective-C Objective-C, Swift Objective-C EAM EAM EAM EAM EAM Name Name Name Name Name INBSecurityCrypt o HMAC cryptokit - swift-sodium HMAC, Poly1305 aerogear-crypto-io s Poly1305 react-native-aes HMAC ID ID ID ID ID 600 614 621 603 586

163/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST, HTTPS EST, HTTPS, I2P EST, HTTPS CMP, EST, HT- EST, PEM EST, HTTPS TPS, PEM https://github.com/remobi le/react-native-des https://github.com/tradle/ react-native-ecc https://github.com/Fardad Co/LaraCryptObjC https://github.com/hohl/ MIHCrypto https://github.com/edward https://github.com/Takahi koKawasaki/nv-ios-digest 1985/RSA_crypto PKI PKI PKI PKI PKI PKI SET SET SET CMP, SET SET SET Licence Licence Licence Licence Licence Licence MIT MIT - MIT - - PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates DSS ECDSA - DH,RSA DSA, DSS, RSA - 2015-11-04 2017-03-30 2015-12-27 2017-02-15 2017-06-21 2017-06-21 2014-04-11 2016-03-17 2017-07-04 2017-07-04 2013-04-09 2016-07-15 MAC MAC MAC MAC MAC MAC Apis, Examples Doc. Com. Examples Doc. Com. Doc. Com. Apis, Examples Doc. Com. Doc. Com. Doc. Com. - - - - HMAC - Readme Doc. Kind Readme Doc. Kind Doc. Kind Readme, Website Doc. Kind Doc. Kind Doc. Kind 1 0 1 2 1 0 1 3 1 0 1 1 People People People People People People A C A C A C A C A C A C 1.7 1.13 2.21 5.65 0.64 1.36 Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC 16.0 18.04 17.42 16.36 16.25 16.14 Impact Impact Impact Impact Impact Impact MD5 SHA, SHA-2, SHA-3, SHA-256 - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5, SHA, SHA-2, SHA-3, SHA-256 MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------Related Related Related Related Related Related https://open source.apple. com/source/ CommonCry pto , https:// docs.oracle.c om/javase/7 package-sum mary.html https://docs. oracle.com/j avase/7/doc s/api/java/s ecurity/pack age-summar s://opensour ce.apple.com monCrypto - 137 - - vax/crypto/ y.html , http /docs/api/ja /source/Com Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. M.L. M.L. M.L. M.L. M.L. M.L. ObjC ObjC ObjC ObjC ObjC ObjC Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. DES, DEAL, PRESENT DEAL, PRESENT AES, AES-128, DEAL, PRESENT AES, AES-128,DES, DEAL, AES-192, NDS, PRESENT AES-256, AES PRESENT Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name react-native-des - react-native-ecc - LaraCryptObjC - MIHCrypto - RSA_crypto HMAC nv-ios-digest - ID ID ID ID ID ID 598 597 591 617 588 609

164/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL - EST, PEM EST - EST, SSL EST CMP, CSR,HTTPS, EST, SEND, SSL, X.509 PEM, EST, HTTPS https://github.com/Alexan derBirks/Encryption-Key https://github.com/cstaylo r/iOS-Crypto-API https://github.com/alexleh n/ObjC-PyCrypto https://github.com/st3fan/ cocoa-crypto https://github.com/timbur ks/NuCrypto https://github.com/cantin ac/CommonCrypto-module- clang https://github.com/nulang https://github.com/nickloc kwood/CryptoCoding /nu-crypto PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET SET SET SET CMP, SET, X.509 SET Licence Licence Licence Licence Licence Licence Licence Licence MIT ------PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - RSA - - RSA - DH, DSS, RSA - 2017-05-27 2017-05-27 2013-07-08 2015-08-25 2013-01-20 2013-01-22 2008-11-03 2008-11-22 2010-11-20 2011-01-27 2015-12-03 2016-03-24 2013-05-17 2016-04-03 2012-09-24 2014-09-17 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - - HMAC - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 2 1 1 1 0 1 0 2 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C 0.08 1.22 5.85 1.18 0.65 0.45 3.05 0.89 Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 15.8 15.93 15.27 14.98 14.91 14.88 14.86 14.68 Impact Impact Impact Impact Impact Impact Impact Impact - - scrypt MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - SNOW - - - - - Related Related Related Related Related Related Related Related https://open source.apple. com/source/ CommonCry pto ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. M.L. M.L. M.L. M.L. M.L. M.L. M.L. M.L. ObjC ObjC ObjC ObjC ObjC ObjC ObjC ObjC Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. DEAL PRESENT AES, NDS, PRESENT - AES, NUSH, PRESENT PRESENT AES, AES-256, DES, M8,SEED PRESENT, AES, PRESENT Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name Encryption-Key - iOS-Crypto-API - ObjC-PyCrypto - cocoa-crypto - NuCrypto HMAC CommonCrypto- module-clang - nu-crypto HMAC CryptoCoding - ID ID ID ID ID ID ID ID 596 606 611 607 604 592 589 601

165/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS CMP, CSR,HTTPS, EST, SEND, SSL, X.509 PEM, HTTPS HTTPS, SEND CMP, EST, HT- EST,SEND HTTPS, EST HTTPS, SEND TPS https://github.com/mateh at/CommonCrypto https://github.com/timbur ks/RadCrypto https://github.com/tparry/ NSData-Crypto https://github.com/thinkcl ay/crypto https://github.com/ricmoo https://github.com/kompo zer/cryptobox-ios https://github.com/willbet ter/LFCommonCrypto https://github.com/nixplay https://github.com/ndougl as/ReactiveCryptor /GMEllipticCurveCrypto /crypto PKI PKI PKI PKI PKI PKI PKI PKI PKI SET CMP, SET, X.509 - SET CMP, SET SET SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates Dates Dates Dates - DH, DSS, RSA - - ECDH, ECDSA - RSA - 2013-05-12 2013-05-22 2013-05-17 2013-05-28 2014-02-05 2014-12-02 2015-02-21 2016-01-22 2014-04-07 2014-12-12 2015-07-31 2015-08-25 2016-08-23 2016-08-23 2014-10-27 2014-10-28 2014-11-26 2015-08-20 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC - HMAC - Poly1305 - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 0 1 1 1 0 1 2 2 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C A C 2.3 2.5 0.65 3.05 0.37 1.65 1.13 0.29 1.23 Hash Hash Hash Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.5 14.49 14.18 14.16 14.07 14.03 13.71 13.63 13.61 Impact Impact Impact Impact Impact Impact Impact Impact - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, PBKDF2 - BLAKE2, scrypt, SHA, SHA-2, SHA- - MD5 3, SHA-256, SHA-512, SipHash Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - ChaCha, Salsa - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. M.L. M.L. M.L. M.L. M.L. M.L. M.L. ObjC ObjC ObjC ObjC ObjC ObjC ObjC ObjC ObjC Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. - AES, AES-256, DES, M8,SEED PRESENT, PRESENT DEAL - AES, AES-128, PRESENT PRESENT - Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C Objective-C EAM EAM EAM EAM EAM EAM EAM EAM EAM Name Name Name Name Name Name Name Name CommonCrypto - RadCrypto HMAC NSData-Crypto - crypto HMAC GMEllipticCurve Crypto - cryptobox-ios Poly1305 LFCommonCrypt o - crypto - ReactiveCryptor ID ID ID ID ID ID ID ID 610 608 605 585 602 594 599 613 615

166/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST,SEND HTTPS, EST, PEM EST, HTTPS EST, PE EST AS2, AKA,CMP, CMC, CSR,EST, DK, IES, OCSP,PE, PCT, HTTPS, PEM,PGP, SCP, SEND, PHE, SFTP, SSH, SSL, EST, PE TLS, WPS, X.509 https://github.com/Double REW/EasyCrypto https://github.com/ivRodr iguezCA/IRCrypto https://github.com/Renan Diaz/Cryptos https://github.com/origina lix/iOS-and-Java-AES-Cry ptor https://netcologne.dl.sourcef orge.net/project/objc-crypto- lib/objc-crypto-lib/0.5Alpha https://chilkatdownload.co m/9.5.0.68/chilkat-9.5.0-ios. zip https://ayera.dl.sourceforge. net/project/bdangerous/bda ngerous-crypto/bdangerous-c rypto-0.1a/crypto-0.1a.tar.g z /objc-crypto-lib.tgz PKI PKI PKI PKI PKI PKI SET SET SET SET SET CMP,PKCS,SET, X.509 OCSP, PKIX, SET Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC Dates Dates Dates Dates Dates - - Dates - - Dates - - - - RSA - - DH,ECDH, DSA,RSA DSS, ECDSA, DH 2015-09-15 2015-09-23 2016-06-25 2016-10-25 2016-05-27 2016-06-10 2016-09-21 2016-09-21 Doc. Com. Doc. Com. Doc. Com. MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC HMAC - - HMAC, Poly1305, UMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind ------1 1 1 0 1 0 1 0 People People People A C A C A C People People People People A C A C A C A C 149 1.36 4.38 1.8 2.51 4.14 0.28 kLOC kLOC kLOC Hash Hash Hash Hash Hash Hash kLOC kLOC kLOC kLOC - - - 13.21 12.42 11.49 11.21 Impact Impact Impact Impact Impact Impact Impact - MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, scrypt - - GOST, HAVAL,PBKDF2, MD2, MD5, RIPEMD,SHA-2, SHA-3, MD6, SHA, SHA-256, SHA-512 SHA-1, MD5, scrypt, SHA, SHA-1 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - ChaCha,MAG, RC,ZUC SEAL, LEX, - Related Related Related Related Related Related Related ------Type Type Type Wrap. Wrap. Wrap. Type Type Type Type Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. M.L. C M.L. C ObjC M.L. M.L. M.L. M.L. ObjC ObjC ObjC ObjC Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher I.L. I.L. I.L. I.L. I.L. I.L. I.L. Objective-C Objective-C Objective-C PRESENT - AES, DEAL, PRESENT - DEAL AES, AES-128,Blowfish, AES-192, CAST,IDEA AES-256, DES, NXT,PRESENT, DFC, IDEA, RC, FPE, M6, RC2, M8, RC5, NDS, SEED, M8, PRESENT, SEED 3DES, Twofish Objective-C Objective-C Objective-C Objective-C Name Name Name EAM EAM EAM EAM EAM EAM Name Name Name Name - EasyCrypto HMAC IRCrypto HMAC Cryptos - iOS-and-Java-AE S-Cryptor - chilkat HMAC, Poly1305, UMAC objc-crypto-lib - bdangerous-crypto ID ID ID ID ID ID ID 590 595 587 593 618 619 620

167/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL CMP - AKA, EST, HT- EST, HTTPS, PE, S-HTTP, SEND AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR EST, HTTPS TPS, TLS https://github.com/cossac klabs/themis - https://github.com/iosdevzo ne/IDZSwiftCommonCrypto https://github.com/krzyzano https://github.com/vapor/cr ypto wskim/CryptoSwift PKI PKI PKI PKI PKI PKI CMP, SET - SET SET CMP, LDAP, RD- BMS, SET - Licence Licence Licence Licence Licence Apache-2.0 Own License MIT Zlib MIT PKC PKC PKC PKC PKC PKC Dates Dates - - DH,RSA DSA, DSS, - - DH, DSS DH,ECDSA, RSA ECDH, DSS, ECDSA 2014-09-13 2017-08-16 Dates Dates Dates 2014-09-20 2017-06-20 2014-07-06 2017-08-11 2016-08-05 2017-08-12 Doc. Com. Apis, Examples, Explanations MAC MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Apis, Examples Doc. Com. Apis, Examples Doc. Com. HMAC, UMAC - HMAC, Poly1305 HMAC HMAC HMAC Doc. Kind Website Doc. Kind Readme, Website, Download - - 1 Doc. Kind Readme Doc. Kind Readme Doc. Kind 19 2 1 1 8 11 54 People A C People A C - People A C People People A C A C 47 Hash Hash Hash Hash Hash Hash kLOC 1.2 kLOC - 3.19 6.97 kLOC kLOC kLOC 31.05 Impact Impact 31.55 33.65 24.54 Impact Impact Impact MD2, MD5, SHA, SHA-1 - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512,POOL WHIRL- Depen. Depen. - - Depen. Depen. Depen. - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - ChaCha, Rabbit - LEX,SEAL, Rabbit, SNOW, RC Turing Related Related - - Related Related Related https://opens ource.apple.c om/source/C ommonCrypt o - - Type Stan. Type Stan. Type Type Stan. Type Stan. Wrap. I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low M.L. - M.L. C Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Swift M.L. Swift M.L. Swift I.L. I.L. I.L. I.L. I.L. Swift Swift Swift Swift, Objective-C DES, PRESENT - AES, AES-128,NOEKEON, PRESENT, AES-192, SEED AES- AES, Blowfish,IDEA CAST, NXT, DES, M6, M8,RC2 DEAL, PRESENT, RC, AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, AES, AES-128,Blowfish, Camellia, AES-192, DES, IDEAPRESENT, AES-256, NXT, RC, RC2 256, Blowfish, CAST, IDEA NXT, ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name Name EAM EAM EAM EAM EAM EAM Name HMAC, UMAC Security(S) - CryptoSwift HMAC, Poly1305 IDZSwiftCommonC rypto HMAC themis HMAC crypto HMAC ID ID ID ID ID 622 625 627 070 624

168/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST, HTTPS EST, HTTPS EST, HTTPS, SSL EST, HTTPS EST,PEM, SEND, SSL HTTPS, EST, HTTPS EST, HTTPS, PE https://github.com/ameing ast/cryptokit https://github.com/alex-ch an/swift-sodium https://github.com/IBM-Swi ft/BlueSSLService https://github.com/soffes/Cr https://github.com/etienne- martin/CryptoJS.swift https://github.com/IBM-Swi ft/BlueCryptor ypto https://github.com/OpenKitt en/CryptoKitten PKI PKI PKI PKI PKI PKI PKI SET - SET - SET SET SET Licence Licence Licence Licence Licence Licence Licence BSD-3-Clause ISC Apache-2.0 MIT MIT Apache-2.0 - PKC PKC PKC PKC PKC PKC PKC Dates Dates - - DSS - - - DH 2008-08-30 2017-04-29 2014-12-27 2016-07-28 Dates Dates Dates Dates Dates 2016-05-26 2017-08-14 2015-04-21 2017-05-08 2015-07-30 2017-04-20 2016-04-20 2017-08-14 2016-08-05 2017-08-09 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Apis Doc. Com. Apis, Examples Doc. Com. Apis, Examples Doc. Com. Apis, Examples Doc. Com. Examples Doc. Com. Doc. Com. Apis, Examples, Explanations - HMAC HMAC - HMAC - HMAC, Poly1305 Doc. Kind Readme Doc. Kind Readme 1 0 1 Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind 13 Doc. Kind Readme 1 5 2 2 1 4 2 2 1 4 People A C People A C People People A C A C People People A C A C 3.9 People A C 4.48 Hash Hash Hash Hash Hash Hash Hash kLOC 1.3 kLOC 1.5 0.37 1.16 3.38 kLOC kLOC kLOC kLOC kLOC 22.39 20.28 Impact Impact 23.94 23.38 23.57 24.08 23.31 Impact Impact Impact Impact Impact - MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD2, MD5,SHA-3, SHA-256, SHA, SHA-512 SHA-1, SHA-2, MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 MD5 MD2, MD5,SHA-3, SHA-512 SHA, SHA-1, SHA-2, BLAKE2, PBKDF2,SHA-2, SHA-3, scrypt,SipHash SHA-256, SHA, SHA-512, Depen. Depen. - - Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ------ChaCha,Salsa, SEAL LEX, Related Related https://deve loper.apple.c om/docume ntation/core foundation https://dow nload.libsodi um.org/doc Related Related Related Related Related https://githu b.com/soffes/ CommonCryp to 438 627 - - Type Wrap. Type Wrap. Type Type Type Type Stan. Reim. Wrap. Wrap. Type Stan. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low M.L. ObjC M.L. C Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift I.L. I.L. I.L. I.L. I.L. I.L. I.L. Swift Swift Swift Swift Swift IDEA NXT, PRESENT, SAFER DEAL AES, AES-128,Blowfish, AES-192, CAST,PRESENT, AES-256, DES, RC, RC2 IDEA NXT, AES, AES-256, DEAL, PRESENT PRESENT DEAL, PRESENT, SAFER AES, AES-128,PRESENT, SEED AES-256, M6, M8, Swift, Objective-C Objective-C, Swift Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM Name Name CryptoKitten - Crypto HMAC BlueCryptor HMAC CryptoJS.swift - BlueSSLService HMAC cryptokit - swift-sodium HMAC, Poly1305 ID ID ID ID ID ID ID 642 623 629 632 657 614 621

169/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS EST,PEM HTTPS, EST, HTTPS HTTPS EST EST EST https://github.com/desmond mcnamee/SwiftCommonCryp to https://github.com/Perfectly Soft/Perfect-Crypto https://github.com/alexaubr https://github.com/saiyuujo b/CryptoWithSwift https://github.com/DigitalLe aves/AsymmetricCrypto https://github.com/etienne- martin/WebCrypto.swift y/CommonCrypto https://github.com/chrisama nse/CryptoKit https://github.com/verbeeck kristof/crypto PKI PKI PKI PKI PKI PKI PKI SET SET SET - - SET - Licence Licence Licence Licence Licence Licence Licence Licence - Apache-2.0 MIT - - MIT MIT - PKC PKC PKC PKC PKC PKC PKC - DSS, ECDSA - - - - - Dates Dates Dates Dates Dates Dates Dates Dates 2017-06-09 2017-06-09 2017-02-07 2017-07-08 2017-04-14 2017-08-14 2017-07-18 2017-07-19 2015-10-04 2017-02-07 2017-04-13 2017-06-18 2016-08-28 2017-07-04 2017-02-13 2017-05-15 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Apis, Examples Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis Doc. Com. Examples Doc. Com. Examples HMAC HMAC - - - - - Doc. Kind Doc. Kind Readme Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme 1 0 1 2 1 1 1 1 1 0 1 0 1 0 1 1 People People People People People A C A C A C A C A C People People People A C A C A C Hash Hash Hash Hash Hash Hash Hash 0.03 2.27 1.53 0.32 0.55 1.13 1.31 0.32 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 16.56 19.58 18.08 16.58 16.31 17.41 20.08 17.27 Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5, RIPEMD, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512,POOL WHIRL- MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - - SHA, SHA-1 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - RC - - - - - Related Related Related Related Related Related Related Related https://opens ource.apple.c om/source/C ommonCrypt o 137 https://opens ource.apple.c om/source/C ommonCrypt o - - 632 - - Type Type Type Type Type Type Type Stan. Type Stan. Wrap. Reim. Wrap. Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Swift M.L. Swift M.L. Swift M.L. M.L. Swift M.L. Swift M.L. Swift M.L. Swift ObjC I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Swift Swift Swift Swift Swift Swift Swift Swift DEAL, IDEA NXT, PRESENT AES, AES-128,Camellia, DES, AES-192, PRESENT, RC,SEED AES-256, RC2, DEAL, PRESENT AES, DEAL, PRESENT - DEAL M6, PRESENT Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM CryptoKit HMAC Perfect-Crypto HMAC CommonCrypto - WebCrypto.swift - crypto - CryptoWithSwift - SwiftCommonCrypt o - AsymmetricCrypto ID ID ID ID ID ID ID ID 640 638 647 644 626 653 658 628

170/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL AKA, CMS,EST, EKE, PE, VBR EST, HTTPS EST, HTTPS EST, HTTPS EST, HTTPS EST, HTTPS, EST, I2P, PE, EST EST,PEM, SSL HTTPS, TLS VBR https://github.com/venj/Co mmonCrypto https://github.com/CryptoK itten/CryptoEssentials https://github.com/tattn/Cr https://github.com/SwiftP2P https://github.com/hanamic hi07/CryptoSwift https://github.com/pentateu https://github.com/rhodgkin s/RDHCommonCrypto https://github.com/ankittha kur/SwiftCrypto ypto /SwiftSSL /SwiftCrypt PKI PKI PKI PKI PKI PKI PKI PKI PKI SET - SET SET - SET SET SET - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC PKC DH - - RSA - - DH - RSA Dates Dates Dates Dates Dates Dates Dates Dates 2015-12-14 2017-01-05 2016-04-04 2016-09-01 2017-04-26 2017-04-26 2014-10-06 2016-01-02 2016-12-16 2017-02-13 2014-10-17 2015-04-19 2014-09-21 2014-09-21 2016-04-26 2016-11-11 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - - HMAC Poly1305 - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 5 1 1 1 1 1 2 1 1 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash Hash 0.01 1.68 0.44 0.41 4.91 1.03 1.82 0.46 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 15.71 15.36 15.08 14.53 14.36 14.35 13.72 13.12 Impact Impact Impact Impact Impact Impact Impact Impact MD5 - - - - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - - MD2, MD5 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - ChaCha LEX - Crypto1 Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Swift Swift Swift Swift Swift Swift Swift Swift AES, DEAL, M6, M8, PRESENT, - AES, DEAL, PRESENT AES, DEAL, PRESENT DEAL AES, AES-128,CAST, AES-192,SEED AES-256, NOEKEON, PRESENT, DEAL, M6, M8, PRESENT DEAL DEAL 3DES, UES Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM EAM - CommonCrypto - CryptoEssentials - Crypto - SwiftSSL HMAC CryptoSwift Poly1305 SwiftCrypt - RDHCommonCrypt o - SwiftCrypto - ID ID ID ID ID ID ID ID 639 633 636 630 648 643 645 649

171/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL URL EST, HTTPS, IKE EST, HTTPS HTTPS, TLS EST, HTTPS HTTPS EST, HTTPS EST, HTTPS EST,PEM HTTPS, https://github.com/noppoMa n/Crypto https://github.com/yinhaofr ancis/Crypto https://github.com/zhengrf2 https://github.com/xhhuang o/TomatoCrypto https://github.com/ungacy/ UTSwiftCrypto https://github.com/ttkien/T extCrypto https://github.com/banxi198 8/SwiftCrypto https://github.com/ccsteam/ Crypto https://github.com/CryptoK itten/CryptoKitten 25/CryptoSwift PKI PKI PKI PKI PKI PKI PKI PKI - SET SET SET - - SET SET Licence Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC - - - DSS, RSA - - - RSA Dates Dates Dates Dates Dates Dates Dates Dates Dates 2016-04-12 2016-08-18 2016-11-17 2016-11-25 2015-10-13 2015-12-19 2016-11-21 2016-12-08 2016-04-12 2016-04-13 2016-12-07 2016-12-12 2016-05-04 2016-05-04 2016-08-07 2016-10-15 2016-04-24 2016-05-19 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - Poly1305 HMAC - - - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 1 1 2 1 0 1 1 1 1 1 1 1 1 1 0 1 0 People People People People People People People People People A C A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 0.4 0.24 0.43 3.04 3.68 0.28 0.16 0.34 3.13 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 11.9 12.93 12.79 12.48 12.36 12.28 12.25 12.19 11.64 Impact Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, SHA, SHA-1 MD5 - MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - LEX ChaCha - - Rabbit - - Related Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift M.L. Swift I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Swift Swift Swift Swift Swift Swift Swift Swift Swift - - AES, AES-128,CAST, PRESENT AES-192, AES-256, AES, DES, SEED AES, DEAL Blowfish, PRESENT DEAL, IDEA NXT PRESENT Name Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM Crypto - Crypto - CryptoSwift Poly1305 TomatoCrypto HMAC UTSwiftCrypto - TextCrypto - SwiftCrypto - Crypto - CryptoKitten ID ID ID ID ID ID ID ID ID 637 641 646 650 655 656 654 634 651

172/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST, HTTPS EST, HTTPS, PE EST EST - CMP, CSR,DTLS, CMS, DPD, EST, GPG,IKE, OCSP,PEM, HTTPS, PGP, PE, SCEP, RTD, SSH, SSL, SEND, TLS, WPA, X.509 https://github.com/wolfssl/ wolfssl - https://github.com/mlachmis h/Cryptography https://github.com/chrisama nse/CommonCryptoSwift https://github.com/skylarsch /Crypto https://github.com/onovotny /bc-csharp PKI PKI PKI PKI PKI PKI PKI SET SET - - - CMP,PKCS,RTCS,SET, OCSP, X.509 PKIX, SCEP, Licence Licence Licence Licence Licence Licence GPL-2.0, commerci al Own License - - - MIT, Apache-2.0 PKC PKC PKC PKC PKC PKC PKC Dates ------DH,ECDH, DSA,NTRUEncrypt, DSS, ECDSA, RSA Dates Dates Dates Dates 2011-02-05 2017-08-16 Dates 2016-07-05 2016-08-07 2016-08-15 2016-08-25 2016-08-25 2016-08-26 2013-06-28 2017-08-12 Doc. Com. Apis, Examples, Explanations MAC MAC MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - - - - HMAC, Poly1305 Doc. Kind Website - - Doc. Kind Readme, Website, Download Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme, Website 4 1 0 1 0 1 0 49 1 People A C 12 - People A C People People People A C A C A C People A C Hash Hash Hash Hash Hash Hash Hash kLOC 259 0.2 - 1.84 0.68 330 kLOC kLOC kLOC kLOC kLOC Impact 11.3 38.94 30.1 11.51 11.22 Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, SHA, SHA-2 - - - BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, 2, SHA-3, SHA-256, SHA-512 Depen. - Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - - ChaCha,MAG, Rabbit, RC, LEX, Vernam Related - Related Related Related Related https://www .wolfssl.com/ ducts-wolfcry pt.html wolfSSL/Pro Related - - - https://www. bouncycastle. org/java.html Type Stan. Type Wrap. Type Type Type Wrap. Wrap. Wrap. Type Reim. I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low M.L. - I.Lvl. Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. Swift M.L. Swift M.L. Swift M.L. C# I.L. I.L. I.L. I.L. I.L. I.L. C# Swift Swift Swift Swift, Objective-C C, Java, C#, Python, PHP, Perl AES, AES-128,DEAL, PRESENT AES-192, AES-256, DEAL, IDEA NXT, M8, PRESENT DEAL, PRESENT PRESENT - AES, AES-128,Camellia, AES-192, CAST,DEAL, AES-256, CRYPTON, IDEA, DES, RC, M6, RC2, SEED, M8, 3DES PRESENT, Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM Name - Cryptography - CommonCryptoSwi ft - Crypto - Security(S) - wolfssl HMAC, Poly1305 bc-csharp ID ID ID ID ID ID 631 652 635 622 136 692

173/186 A. Detailed Library Table Protocol Protocol Protocol Protocol URL URL URL URL AS1, AKA,CSR, CMP, CMS, DTLS, DPD, DPV,GPG, EST, I2P,ISAKMP, HTTPS, IES,MSE, OTR, IPsec, OCSP, IKE, PE, PEM,PGP, RTD, SCVP, PHE, SEND,SSH, SSL, SRTP, TSP, AS1, AKA,CSR, CMP, CMS, DTLS, DPD, DPV,GPG, EST, I2P,ISAKMP, HTTPS, IES,MSE, OTR, IPsec, OCSP, IKE, PE, PEM,PGP, RTD, SCVP, PHE, SEND,SSH, SSL, SRTP, TSP, EKE, EST,PE, HT- SEND, SSH CGA, EST,HTTPS, GSI, SEND PE, AS2, EST,PE, HT- SEND, RMA, TSP SCP, TLS, VBR, WPA, TLS, VBR, WPA, TPS, MSE, PCT, TPS, IES, IKE, WPS, X.509 WPS, X.509 https://github.com/bcgit/bc- csharp https://github.com/AArnott/ PCLCrypto https://github.com/BcryptNe t/bcrypt.net https://github.com/Capgemi ni/Cauldron PKI PKI PKI PKI CMP,OCSP,PKIX, SET, X.509 LDAP, PKCS, CMP,OCSP,PKIX, SET, X.509 LDAP, PKCS, SET SET SET Licence Licence Licence Licence - MS-PL MIT MIT PKC PKC PKC PKC DH,ECDH, DSA,LUC, DSS, RSA, ECDSA, YAK DH,ECDH, DSA,LUC, DSS, RSA, ECDSA, YAK DH, DSA, DSS DH,ECDSA, RSA ECDH, DH, DSS, RSA Dates Dates Dates Dates 2013-06-28 2017-08-14 2014-02-22 2017-06-19 2010-12-14 2017-08-25 2016-03-21 2017-08-17 MAC MAC MAC MAC Doc. Com. Doc. Com. Examples Doc. Com. Examples Doc. Com. Apis, Examples HMAC,Poly1305 OMAC, HMAC,Poly1305 OMAC, - - - Doc. Kind Doc. Kind Readme, Website Doc. Kind Readme Doc. Kind Readme, Website 1 1 6 1 6 2 6 10 People People A C A C People People A C A C Hash Hash Hash Hash 23 58 330 4.41 kLOC kLOC kLOC kLOC 29.45 27.54 28.31 27.28 Impact Impact Impact Impact BLAKE2, FSB,MD6, GOST, RIPEMD, MD2, scrypt, MD5, SHA,SipHash, SHA- Skein, WHIRLPOOL BLAKE2, FSB,MD6, GOST, RIPEMD, MD2, scrypt, MD5, SHA,SipHash, SHA- Skein, WHIRLPOOL Tiger MD5, PBKDF2 FSB, MD5,SHA, MD6, SHA-2, PBKDF2, SHA-3,512 SHA-256, scrypt, SHA- 1, SHA-2, SHA-3, SHA-256, SHA-512, 1, SHA-2, SHA-3, SHA-256, SHA-512, Depen. Depen. Depen. Depen. - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha,LEX,RC, MAG, Salsa, eS- ZUC Py, ChaCha,LEX,RC, MAG, Salsa, eS- ZUC Py, Dragon,MICKEY, Rabbit FISH, MAG, NLS, RC Turing, Vernam TREAM, ISAAC, TREAM, ISAAC, Related Related Related Related - operationsyst emscrypto http://www. mindrot.org/ projects/jBCr - ypt Type Type Type Type Stan. Reim. Wrap. Wrap. I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher M.L. C# M.L. C# M.L. C# M.L. C# I.L. C# I.L. C# I.L. C# I.L. C# 3-Way, AES, AES-128,DES, DEAL,NXT, AES-192, IDEA, DFC,NOEKEON, M6, GOST, M8, PRESENT,RC5, IDEA MMB, RC, RC6, NDS, RC2, Serpent, SEED, SM4, 3-Way, AES, AES-128,DES, DEAL,NXT, AES-192, IDEA, DFC,NOEKEON, M6, GOST, M8, PRESENT,RC5, IDEA MMB, RC, RC6, NDS, RC2, Serpent, SEED, SM4, Blowfish, DES,M8, MESH, DEAL, NDS, PRESENT,SAFER, IDEA, Prince, UES M6, AES, CAST,NDS, DEAL, PRESENT, FPE, SM4 M6, M8, AES, CAST, DES, DEAL,M8, IDEA, M6, MAGENTA,SEED NDS, PRESENT, Threefish, TEA, 3DES, Twofish, UES Threefish, TEA, 3DES, Twofish, UES AES-256, Blowfish, Camellia, CAST, AES-256, Blowfish, Camellia, CAST, Name Name Name Name EAM EAM EAM EAM HMAC,Poly1305 OMAC, bc-csharp HMAC,Poly1305 OMAC, bcrypt.net - PCLCrypto - Cauldron - ID ID ID ID 693 695 661 694

174/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL EST, HTTPS EST, HTTPS CMS, EST, HT- EST,SEND HTTPS, CMP, EST, HT- TPS, X.509 TPS, PE https://github.com/sdrapkin/ SecurityDriven.Inferno https://github.com/Peter-Ju hasz/Science.Cryptography.C iphers https://github.com/mheyman https://github.com/Chainers/ Cryptography.ECDSA https://github.com/AlexMAS https://github.com/henkmoll ema/CryptoHelper /Isopoh.Cryptography.Argon2 /GostCryptography PKI PKI PKI PKI PKI SET SET SET, X.509 SET CMP, SET Licence Licence Licence Licence Licence Licence MIT MIT Public Domain MIT mit MIT PKC PKC PKC PKC PKC - ECDH DSA, RSA - ECDH, ECDSA Dates Dates Dates Dates Dates Dates 2015-07-10 2017-08-15 2015-01-15 2017-06-21 2016-07-31 2017-08-13 2017-05-24 2017-06-24 2015-03-05 2017-03-22 2015-07-24 2017-05-05 MAC MAC MAC MAC MAC Doc. Com. Examples Doc. Com. Examples Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Apis Apis, Examples, Explanations - HMAC HMAC - HMAC Doc. Kind Readme, Website, Download Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme Doc. Kind Website 1 3 1 1 2 2 2 1 1 0 1 1 People A C People People People People A C A C A C A C People A C Hash Hash Hash Hash Hash 21 2.8 4.55 6.95 8.48 0.24 kLOC kLOC kLOC kLOC kLOC kLOC 21.0 20.6 21.9 20.4 25.27 23.43 Impact Impact Impact Impact Impact Impact - - GOST BLAKE2 SHA, SHA-2, SHA-3, SHA-256 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Vigenere cipher - LEX - - Related Related Related Related Related Related https://githu b.com/dotnet https://githu b.com/P-H-C rgon2 , https:/ BLAKE2/BL https://githu b.com/warner - https://msdn. microsoft.com ty.cryptograp hy(v=vs.110) .aspx , https:/ ft.com/en-us/ aspnet/core/a pi/microsoft.a spnetcore.cry ptography.ke /standard AKE2 yderivation /phc-winner-a /github.com/ /python-ecdsa - /de-de/library /system.securi /docs.microso Type Type Type Type Stan. Type Stan. Reim. Reim. Wrap. Type Stan. I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# DEAL, IDEA NXT, PRESENT AES, DEAL, PRESENT DEAL,SEED GOST, NDS, PRESENT, M6, M8, PRESENT CAST, DEAL,SAFER, M6, SEED M8, PRESENT, Name Name Name Name Name Name EAM EAM EAM EAM EAM Science.Cryptograp hy.Ciphers - SecurityDriven.Infe rno HMAC GostCryptography HMAC Isopoh.Cryptograph - Cryptography.ECD SA HMAC CryptoHelper y.Argon2 ID ID ID ID ID ID 681 662 665 687 673 688

175/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST, HTTPS AS2, CMP,HTTPS, PE, EST, SSH EST, HTTPS EST, HTTPS EST, HTTPS EST, HTTPS AKA, CMC, CMP, CMS, DPD,EST, DPV, GPG, HT- OCSP, PE,PHE, PEM, PGP, RMA, RTD, SCP, SEND, SSL, TLS, WPA, TPS, IKE, IPsec, WPS, X.509 https://github.com/ektrah/n sec https://github.com/KalixHea lth/Kalix.ApiCrypto https://github.com/kmarago n/Konscious.Security.Cryptog raphy https://github.com/odalet/D elta.Cryptography https://github.com/Thashizn ets/PWDTK.NET https://github.com/libp2p/cs- libp2p-crypto https://github.com/bitbeans/ StreamCryptor PKI PKI PKI PKI PKI PKI PKI PKI - CMP, SET SET PKIX, SET SET SET CMP,PKCS,SET, X.509 OCSP, PKIX, Licence Licence Licence Licence Licence Licence Licence MIT - - - - MIT MIT PKC PKC PKC PKC PKC PKC PKC PKC - DH RSA DSA ECDSA, RSA - DH,RSA DSA, DSS, Dates Dates Dates Dates Dates Dates Dates 2017-01-01 2017-08-17 2013-12-23 2016-12-28 2016-06-29 2017-02-21 2013-05-14 2016-07-31 2014-12-17 2016-04-29 2016-11-07 2017-08-15 2014-09-13 2017-03-10 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis Apis, Examples, Explanations - - HMAC HMAC, Poly1305 - HMAC - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme Doc. Kind Readme Doc. Kind Readme, Website 1 1 1 2 1 1 1 3 1 0 1 2 1 0 People People People People A C A C A C A C People People A C A C People A C Hash Hash Hash Hash Hash Hash Hash Hash 79 13 1.0 3.21 3.25 1.02 3.41 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 17.8 16.32 16.08 15.81 19.38 20.07 18.74 Impact Impact Impact Impact Impact Impact Impact - BLAKE2, MD6, SHA, SHA-2,SHA-256 SHA-3, - BLAKE2, SHA, SHA-2, SHA-3, SHA- SHA, SHA-1, SHA-2, SHA-3, SHA- BLAKE2 MD2, MD5, RIPEMD,SHA-2, SHA-3, SHA, SHA-256, SHA-1, SHA-512 256, SHA-512 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - eSTREAM, ZUC - ChaCha - - RC, SEAL, Turing, ZUC Related Related Related Related Related Related Related - - - - 345 132 - Type Type Type Type Type Type Stan. Reim. Wrap. Wrap. Wrap. Wrap. Type Wrap. I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# DEAL, PRESENT DEAL, M6, M8, PRESENT, RC,SM4 RC2, AES, DEAL, PRESENT, SEED AES,PRESENT, SEED AES-256, DEAL, M8, AES, PRESENT DEAL, NDS, SEED CAST, DES, DEAL,MAGENTA, IDEA, NDS, M6,RC2, M8, PRESENT, RC6, SEED RC, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM - StreamCryptor - cs-libp2p-crypto HMAC nsec HMAC, Poly1305 Kalix.ApiCrypto - Konscious.Security. Cryptography HMAC Delta.Cryptography - PWDTK.NET ID ID ID ID ID ID ID 660 680 666 674 668 670 689

176/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL HTTPS AS1, CMP,CMS, CSR, EST,PEM, HT- SEND, SSL, EST AKA,CSR, CMS,EST, DPD, GPG, CMP, HT- ISAKMP,OCSP, IPsec, PE,PGP, RTD, PEM, SEND, SSH, SSL, TSP, EST, HTTPS, IES, PE, RMA EST, HTTPS EST, HTTPS TPS, IKE,TLS, X.509 PE, TPS, IES, IKE, TLS, WPA, X.509 https://github.com/Panagioti sDrakatos/Lightweight_IoT_ Crypto_Library https://github.com/galmeida/ crypto https://github.com/WolfeRei ter/BouncyCastleCrypto https://github.com/aliencube https://github.com/stanac/E asyCrypto https://github.com/sshnet/C ryptography https://github.com/acschmit/ cryptography.Net /CryptoService PKI PKI PKI PKI PKI PKI PKI SET CMP, SET, X.509 SET CMP,OCSP,PKIX, SET, X.509 LDAP, PKCS, SET SET SET Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC - DH, RSA, YAK - DH,ECDH, DSA,RSA, DSS, YAK ECDSA, DH, DSS, RSA - - Dates Dates Dates Dates Dates Dates Dates 2016-09-14 2017-03-03 2013-02-03 2014-08-04 2013-06-06 2015-10-06 2013-04-09 2015-05-04 2016-06-26 2016-12-24 2016-03-12 2016-07-13 2015-06-27 2015-08-12 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - HMAC HMAC HMAC, OMAC - HMAC HMAC Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 0 1 0 1 0 1 1 1 3 1 1 People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 1.3 123 236 0.53 4.84 5.32 2.42 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.1 14.66 14.59 14.57 14.56 14.11 13.54 Impact Impact Impact Impact Impact Impact Impact SHA, SHA-2, SHA-3, SHA-512 MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 PBKDF2 FSB,RIPEMD, GOST, SHA, SHA-1, SHA-2, MD2, SHA- MD5, MD6, MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, PBKDF2 MD5, RIPEMD, SHA, SHA-1, SHA-2 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - RC, Turing - ISAAC,MAG,Salsa, Py, ZUC LEX, RC, - - - Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# PRESENT AES, AES-128,M6, CAST, FPE, M8,RC, IDEA, RC2, MESH, RC5, RC6, NDS, SEED, UES PRESENT, AES 3-Way, AES, AES-128,DES, DEAL, GOST,MMB, AES-192, IDEA, M6, NDS,RC5, M8, PRESENT, RC6, RC, RC2, Serpent, SEED, SM4, AES, DES, DEAL,RC, NDS, RC2 PRESENT, AES, AES-256, DEAL, PRESENT DEAL, PRESENT, RC, RC2 TEA, 3DES, Twofish, UES AES-256, Blowfish, Camellia, CAST, Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM - Lightweight_IoT_ Crypto_Library HMAC crypto HMAC BouncyCastleCrypt o HMAC, OMAC CryptoService - EasyCrypto HMAC Cryptography HMAC cryptography.Net ID ID ID ID ID ID ID 678 664 676 671 667 663 683

177/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL EST, HTTPS, IES, OCSP, PE,PGP, RTD, PEM, SEND, AKA EST, HTTPS EST, SEND EST,PEM HTTPS, CMP, EST, IKE EST, PE EST, PE TLS, X.509 https://github.com/shintado no/Free.Crypto https://github.com/tamimsal em/CryptoN https://github.com/bartduist ers/CryptoProgram https://github.com/VirgilSec urity/virgil-crypto-net https://github.com/oznetmas ter/SSMonoCryptographyLibr ary https://github.com/jtenos/N oEdgeSoftware.Cryptography https://github.com/verd710/ CryptoLibrary https://github.com/smoy/Xa marin.Droid.AesCrypto PKI PKI PKI PKI PKI PKI PKI PKI OCSP,SET, X.509 PKIX, SET SET SET SET CMP, PKCS, SET SET SET Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC PKC DH, DSA,ECDSA, ECDH, RSA - - DSS, RSA - DSA, DSS, RSA DH, RSA DH, DSS, RSA Dates Dates Dates Dates Dates Dates Dates Dates 2015-07-11 2015-07-11 2016-02-05 2016-02-07 2016-03-25 2016-05-27 2016-11-25 2016-12-12 2016-05-12 2016-05-12 2016-02-24 2016-02-24 2016-12-22 2016-12-24 2016-06-15 2016-06-16 MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC - - - Poly1305 HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 People People People People People People People People A C A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash Hash 10 24 2.5 9.57 0.67 5.91 2.07 7.09 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 12.81 12.57 12.56 12.41 12.15 11.81 11.65 11.37 Impact Impact Impact Impact Impact Impact Impact Impact MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, - - SHA, SHA-1 PBKDF2, SHA, SHA-2, SHA-3,512 SHA- RIPEMD, SHA, SHA-1, SHA-2, SHA- MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5 3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ISAAC,Salsa MAG, - - - Salsa - - - Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# M.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# I.L. C# AES, AES-128,Camellia, AES-192, DEAL,PRESENT, AES-256, RC, RC2, SAFER, M6, SEED, M8, NDS, DEAL, IDEA, PRESENT, TEA AES, DEAL AES, DES, NDS, PRESENT AES, IDEA NXT,RC, IDEA, RC2, PRESENT, SEED AES, DES,RC2, DEAL, SEED PRESENT, RC, M8, NDS, PRESENT, SAFER, SEED DES, M6, M8, PRESENT TEA Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM HMAC Free.Crypto - CryptoN - CryptoProgram - virgil-crypto-net Poly1305 SSMonoCryptograp hyLibrary HMAC NoEdgeSoftware.Cr - CryptoLibrary - Xamarin.Droid.Aes Crypto yptography ID ID ID ID ID ID ID ID 686 669 691 679 685 684 690 682

178/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL EST, HTTPS EST,SEND HTTPS, - - - - CMP, CSR,DTLS, CMS, DPD, EST, GPG,IKE, OCSP,PEM, HTTPS, PGP, PE, SCEP, RTD, SSH, SSL, SEND, TLS, WPA, X.509 https://github.com/wolfssl/ wolfssl https://github.com/Legrand in/pycryptodome [email protected]:anilhakanyari ci/next-generation-crypto-.NE https://github.com/aligoren/ CryptoNet https://github.com/aduwillie/ cryptography T.git - - PKI PKI PKI PKI PKI PKI SET SET SET - - - CMP,PKCS,RTCS,SET, OCSP, X.509 PKIX, SCEP, Licence Licence Licence Licence Licence Licence Licence GPL-2.0, commerci al BSD-2-Clause, Pub licDomain - - - PKC PKC PKC PKC PKC PKC MS-RSL - - DSA - DSS, RSA - - DH,ECDH, DSA,NTRUEncrypt, DSS, ECDSA, RSA Dates Dates Dates - - 2011-02-05 2017-08-16 Dates Dates Dates Dates - - 2014-05-02 2017-08-16 2016-07-03 2016-07-03 2016-09-30 2016-09-30 2016-08-22 2016-08-22 MAC MAC MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Apis, Examples, Explanations Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. - HMAC - HMAC - - HMAC, Poly1305 Doc. Kind Website, Download Doc. Kind Doc. Kind Readme, Website, Download Doc. Kind Readme, Website, Download - - Doc. Kind Doc. Kind Doc. Kind - - 4 3 49 1 0 1 0 1 0 41 People A C People A C People A C People A C - People People People A C A C A C - Hash Hash Hash Hash Hash Hash 55 259 5.83 1.04 0.37 kLOC kLOC kLOC kLOC - kLOC kLOC kLOC - 38.94 37.18 11.31 11.21 11.21 Impact Impact Impact Impact Impact Impact Impact scrypt - PBKDF2, SHA, SHA-2, SHA-3, SHA- MD5 - - BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, 256 2, SHA-3, SHA-256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. MAG - - - - - ChaCha,MAG, Rabbit, RC, LEX, Vernam Related Related Related Related https://www .wolfssl.com/ ducts-wolfcry pt.html wolfSSL/Pro Related Related Related 731 - - - - - Type Wrap. Type Fork Type Stan. Type Wrap. Type Type Type Wrap. Wrap. Wrap. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. Py M.L. - M.L. - M.L. C# M.L. C# M.L. C# I.L. I.L. I.L. C# I.L. C#, C++, VB I.L. C# I.L. C# I.L. C# Python C, Java, C#, Python, PHP, Perl AES, CAST, DEAL, M8, PRESENT AES, DEAL, SEED AES, AES-256 AES, DES - - AES, AES-128,Camellia, AES-192, CAST,DEAL, AES-256, CRYPTON, IDEA, DES, RC, M6, RC2, SEED, M8, 3DES PRESENT, Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM Name - next-generation-cry pto-.NET.git HMAC CryptoNet - cryptography HMAC DotNet(S) - netcologne - wolfssl HMAC, Poly1305 pycryptodome ID ID ID ID ID ID ID 677 672 675 659 696 136 699

179/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL AKA,CMP, EST,HTTPS, GPG, CCMP, PCT, PE,PGP, RTD, SEND, IKE, PEM, SSH, TLS, X.509 AKA, CMP,CMS, CSR, DPD, DCII,GSI, EST, GPG, DTLS, OCSP, HT- PE,PGP, PEM, RMA, RTD, SEND, SSH, SSL, EST, HTTPS CMP, CSR,EST, DCII, OCSP, PE,RTD, PEM, SEND, HTTPS, SSL, CMP, CMS,HTTPS, EST, SCP, SEND, SSH IKE, TPS, IKE, MSE, TLS, WPS, X.509 TLS, X.509 https://github.com/pyca/py openssl https://github.com/pyca/py nacl https://github.com/pyca/cr yptography https://github.com/stef/pys odium https://github.com/msoos/c ryptominisat PKI PKI PKI PKI PKI PKI CMP,OpenCA,SET, X.509 PKCS, LDAP, CMP,OCSP,PKCS, OpenCA, LDAP, SET, X.509 PKIX, - CMP, OCSP, SET, CMP, SET X.509 Licence Licence Licence Licence Licence Apache-2.0 Apache-2.0 Apache-2.0, BSD-3 e -Clause, PSFLicens BSD MIT PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,LUC, DSS, RSA ECDSA, DH,ECDH, DSA,RSA DSS, ECDSA, - DH, DSA,ECDSA, ECDH, RSA DH Dates Dates Dates Dates Dates 2008-02-18 2017-08-07 2013-02-21 2017-08-10 2013-08-06 2017-08-15 2013-08-25 2017-08-11 2009-08-10 2017-08-17 MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Apis Doc. Com. Doc. Com. Examples Apis, Explanations Apis, Examples, Explanations Apis, Examples, Explanations HMAC,Poly1305, XCBC OMAC, HMAC, Poly1305 Poly1305 - - Doc. Kind Readme Doc. Kind Readme, Website Doc. Kind Readme, Website, Download Doc. Kind Readme, Website, Download Doc. Kind Readme, Website, Download 4 1 1 1 2 21 30 55 26 151 People A C People A C People People A C A C People A C 61 Hash Hash Hash Hash Hash Hash 15 47 49 1.08 kLOC kLOC kLOC kLOC kLOC 36.43 33.71 34.77 32.92 36.91 Impact Impact Impact Impact Impact BLAKE2,RIPEMD, MD2, scrypt, SHA, SHA-1, MD5, SHA- PBKDF2, BLAKE2, MD2,KDF2, RIPEMD, MD5, scrypt, SHA, MD6, SHA- PB- BLAKE2, scrypt, SHA, SHA-2, SHA- MD5, SHA,SHA-256, SHA-1, SHA-512 SHA-2, SHA-3, MD5, SHA, SHA-1 2, SHA-3, SHA-256, SHA-512, Tiger, 3, SHA-256, SHA-512 WHIRLPOOL 1, SHA-2, SHA-3, SHA-256,WHIRLPOOL SHA-512, Depen. Depen. Depen. Depen. Depen. - - - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha,Salsa, Turing RC, ChaCha, Crypto1, Dragon,MAG, NLS, LEX, RC, ChaCha,SEAL Salsa, LEX, Vernam FISH, VMPC Vernam, ZUC Related Related Related Related Related 132 137 132 - - Type Type Stan. Wrap. Type Type Type Stan. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. C++ M.L. Py M.L. Py M.L. Py M.L. C I.L. I.L. I.L. I.L. I.L. C++, C, Python Python Python Python Python AES, AES-128, AES-192,DES, AES-256, KHAZAD, M6, DEAL, M8,NOEKEON, MARS, MULTI2, PRESENT, IDEA,RC5, RC6, RC, SAFER, SEED, KASUMI, RC2, Skipjack, AES, AES-128,Camellia, AES-192,IDEA AES-256, CAST, NXT,PRESENT, IDEA, RC, DES, RC2, M6,SEED, RC5, 3DES M8, SAFER, NDS, DEAL, SEED Blowfish, CAST,PRESENT, RC, DEAL, RC6, SEED M6, M8, AES, AES-128, ARIA,IDEA, CAST, DEAL, PRESENT, SEED, Simon 3DES, Twofish, XTEA Anubis, ARIA, Blowfish, CAST, Name Name Name Name Name EAM EAM EAM EAM EAM EAM HMAC,Poly1305, XCBC OMAC, cryptography HMAC, Poly1305 pysodium Poly1305 pyopenssl - cryptominisat - pynacl ID ID ID ID ID 702 708 732 004 700

180/186 A. Detailed Library Table Protocol Protocol Protocol Protocol URL URL URL URL URL AKA, CMP,HTTPS, EST, IKE,RTD, PE, SEND AKA, CMP, DPV, DCII, EST,HTTPS, GPG, MSE, OTR,PEM, PGP, SEND, IKE, PE, SSH, SSL, VBR DPD, EST, HT- SEND, X.509 EST,IKE, OCSP, RTD, SEND, TLS HTTPS, CMP, EST, HT- SEND, TLS TPS, IKE, PE, TPS, IKE, PE, https://github.com/cossac klabs/themis https://github.com/miracl/ milagro-crypto-c https://github.com/python- tls/tls https://github.com/tahoe-laf s/pycryptopp PKI PKI PKI PKI CMP, SET CMP, LDAP, RD- BMS, SET PKCS, SET, X.509 OCSP, SET CMP,PKIX, SET PKCS, Licence Licence Licence Licence Licence Apache-2.0 Apache-2.0 Apache-2.0, BSD-3- Clause GPL-2.0, MIT, TG PPL-1.0, SPL-1.0 PKC PKC PKC PKC Dates ECDH DH,ECDSA, RSA ECDH, DH,ECDH, DSA,RSA DSS, ECDSA, DH DH,ECDSA, DSA, ElGamal, LUC, DSS, RSA 2014-09-13 2017-08-16 Dates Dates Dates Dates 2016-03-10 2017-08-03 2014-06-17 2017-06-14 2007-10-30 2017-03-21 MAC MAC MAC MAC Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples, Explanations Apis, Examples, Explanations HMAC, Poly1305 HMAC - HMAC HMAC, Poly1305, VMAC Doc. Kind Readme, Website, Download Doc. Kind Readme, Website Doc. Kind Readme, Download 1 Doc. Kind Readme Doc. Kind 19 2 2 1 10 11 11 People A C People A C People A C People People A C 47 59 47 Hash Hash Hash Hash kLOC 4.88 kLOC kLOC kLOC kLOC 31.05 27.97 29.28 Impact 29.26 Impact Impact Impact Impact BLAKE2, PBKDF2,SHA-2, SHA-3, scrypt,SipHash SHA-256, SHA, SHA-512, MD2, MD5,SHA-1, MD6,SHA-512 SHA-2, PBKDF2, SHA, SHA-3, SHA-256, SHA, SHA-2, SHA-3,512 SHA-256, SHA- SHA, SHA-1, SHA-2, SHA-3, SHA- BLAKE2,RIPEMD, MD2, SHA, SHA-1, SHA-2, MD5, SHA- POOL PBKDF2, 256, SHA-512 3, SHA-256, SHA-512, Tiger, WHIRL- Depen. - Depen. Depen. Depen. Depen. - - - Stream Ci. Stream Ci. Stream Ci. Stream Ci. ChaCha,eSTREAM, Dragon, Salsa, LEX, SEAL, LEX,SEAL, Rabbit, SNOW, MAG, RC, ZUC - ChaCha, Panama, Salsa, SEAL, Sose- manuk, WAKE Turing Turing Related - Related Related Related Related - - - Type Stan. Type Stan. Type Wrap. Type Stan. Type I.Lvl. High I.Lvl. High, Low I.Lvl. High I.Lvl. High I.Lvl. M.L. C Block Cipher Block Cipher Block Cipher Block Cipher M.L. C M.L. C++ M.L. Py M.L. I.L. I.L. I.L. I.L. I.L. Python Python C, Python, Go AES,DEAL, AES-128, IDEA NXT,PRESENT, AES-256, RC, IDEA, RC2, M6, SEED CAST, M8, AES, AES-128, AES-192,MAGENTA, AES-256, NDS,RC5, PRESENT, TEA RC, AES, CAST, CRYPTON, DES, IDEA, M6, M8, Mercy, PRESENT, SEED DEAL, IDEA, PRESENT, SEED AES, AES-128,Blowfish, AES-192,DEAL, Camellia, AES-256, M8, IDEA CAST, MARS,RC5, NXT, DES, PRESENT, RC6, SAFER,SHACAL, IDEA, RC, Serpent, SHARK, RC2, SEED, M6, Skipjack, TEA, Twofish ARIA, CAST, DEAL, IDEA, M6, M8, C, C++, Swift, Objective-C, Java, Ruby, Python, PHP, C++, JavaScript, Go Name Name Name Name EAM EAM EAM EAM Name HMAC, Poly1305 themis HMAC milagro-crypto-c - tls HMAC pycryptopp HMAC, Poly1305, VMAC ID ID ID ID ID 070 074 711 697

181/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL AKA, CMP,GPG, EST, PCT, PE,PGP, HTTPS, SEND, SSH, PEM, SSL EST, HTTPS EST, HTTPS EST, HTTPS CMS, DPD,HTTPS, EST, IPsec, OCSP,PEM, PE, SEND, IKE, SSL, SEND TLS, X.509 https://github.com/dlitz/py crypto https://github.com/wbond/ oscrypto https://github.com/berlinco de/sjcl https://github.com/hasherez ade/crypto_utils https://github.com/openwis p/django-x509 https://github.com/thomdix on/pysha2 https://github.com/ricmoo/ pyaes PKI PKI PKI PKI PKI PKI PKI CMP,PKCS, SET LDAP, SET SET - OCSP, SET, X.509 SET Licence Licence Licence Licence Licence Licence Public Domain, Py thon2.2License MIT BSD-3-Clause GPL - MIT MIT PKC PKC PKC PKC PKC PKC PKC DSA, DSS, RSA - - - DH,ECDSA, DSA, RSA DSS, - Dates Dates Dates Dates Dates Dates 1998-12-13 2016-04-02 2015-06-03 2017-05-09 2016-05-17 2017-08-08 2015-09-06 2017-05-23 2016-07-08 2017-07-04 2012-11-24 2017-06-20 2014-05-12 2017-04-04 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Doc. Com. Examples Doc. Com. Apis, Examples Apis, Examples, Explanations Apis, Explanations HMAC, OMAC, - - - HMAC HMAC XCBC Doc. Kind Readme Doc. Kind Readme Doc. Kind Doc. Kind Readme Doc. Kind Readme Readme, Website Doc. Kind Readme 2 2 1 1 1 1 1 2 1 5 2 1 2 32 People People People A C A C A C People People A C A C People A C A C Hash Hash Hash Hash Hash Hash Hash 43 29 0.46 0.81 1.75 0.35 1.29 kLOC kLOC kLOC kLOC kLOC kLOC 21.2 24.75 22.02 25.93 23.04 26.77 22.21 Impact Impact Impact Impact Impact Impact MD2,SHA, MD5, SHA-1, PBKDF2, SHA-2, SHA-3, RIPEMD, SHA- MD5, SHA, SHA-2,SHA-512 SHA-3, SHA-256, - PBKDF2, scrypt, SHA, SHA-2, SHA- MD2, MD5,SHA-1, PBKDF2, scrypt,SHA-512 SHA-2, SHA, SHA-3, SHA-256, PBKDF2, SHA, SHA-2, SHA-3,512 SHA- 256, SHA-512, Tiger, WHIRLPOOL 3, SHA-256 Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Dragon, LEX, RC, - - - Crypto1, RC RC Turing Related Related Related Related Related Related 731 https://docs. python.org/2 lib.html - - - /library/hash - cryptography primitivesfro mthehostoper atingsystem Type Type Type Type Stan. Type Stan. Wrap. Wrap. Wrap. Stan. Type Stan. I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High I.Lvl. High, Low High, Low I.Lvl. Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py Py M.L. Py I.L. I.L. I.L. I.L. I.L. I.L. Python Python Python Python Python Python Python AES, AES-128,Blowfish, CAST, DES, AES-192,KASUMI, DEAL, KHAZAD, IDEA, MULTI2, Anubis, NOEKEON, NDS, PRESENT,RC5, RC6, RC, SAFER, SEED, RC2, Skipjack, DEAL AES AES, DEAL, PRESENT AES, AES-128,CAST, AES-192, DES, DEAL,PRESENT, AES-256, IDEA, RC, M6, M8, RC2, RC5, SEED, AES, PRESENT 3DES, Twofish, XTEA 3DES Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM pycrypto HMAC, OMAC, pysha2 - sjcl - pyaes - oscrypto HMAC crypto_utils HMAC django-x509 XCBC ID ID ID ID ID ID 731 706 717 701 710 704 725

182/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL ACME, EST, HT- DPV, HTTPS, PE EST, HTTPS, IKE CMP, HTTPS HTTPS AKA,DPD, DPV,HTTPS, EST, PE, CMP, PEM,SEND, SSL, IKE, PGP, TLS, - TPS, PEM, X.509 X.509 https://github.com/marcsan tiago/CryptographyKit https://github.com/doegox/ python-cryptoplus https://github.com/bdcht/cr https://github.com/zachary https://github.com/eventbri te/m2crypto https://github.com/wamacd onald89/mcrypt https://github.com/edevil/ M2Crypto ysp voase/python-csiphash PKI PKI PKI PKI PKI PKI PKI SET, X.509 - PKCS, SET CMP, SET SET CMP, SET, X.509 - Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC - DH DSS, RSA DSS - DH,ECDH, DSA,RSA DSS, ECDSA, - Dates Dates Dates Dates Dates Dates Dates 2015-03-26 2017-02-27 2008-08-28 2016-10-28 2011-12-19 2016-12-31 2016-09-22 2017-04-27 1999-08-16 2015-05-26 2015-10-29 2016-03-17 2013-04-18 2015-07-06 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Examples Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Apis, Explanations - - HMAC, OMAC - - HMAC, RMAC - Doc. Kind Readme Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Readme 1 5 1 0 1 0 1 2 2 1 1 0 2 0 People People People People People People A C A C A C A C A C A C People A C 14 31 31 Hash Hash Hash Hash Hash Hash Hash 1.2 137 4.48 0.22 kLOC kLOC kLOC kLOC kLOC kLOC kLOC 19.7 20.3 17.75 17.07 16.33 15.72 14.57 Impact Impact Impact Impact Impact Impact Impact SHA, SHA-1, SHA-2, SHA-3, SHA- - MD5,RIPEMD,SHA-256, PBKDF2, SHA, SHA-512, WHIRLPOOL SHA-2, RadioGatun, SHA-3, BLAKE2, MD5,SHA-2, MD6, SHA, SHA-3,Skein SHA-1, SHA-256, SHA-512, SipHash MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, - 256, SHA-512 Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - Vigenere cipher RC ChaCha,Salsa eS- - RC, Turing - TREAM, RC, Related Related Related Related Related Related Related ------Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Type Stan. I.Lvl. High I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py I.L. I.L. I.L. I.L. I.L. I.L. I.L. Python Python Python Python Python Python Python M6, PRESENT M6, M8 AES, AES-128,Blowfish, AES-192, DES,IDEA, AES-256, DEAL, NOEKEON, IDEASerpent, PRESENT, NXT, 3DES, RC, Twofish DES, NOEKEON,pent, Threefish, PRESENT, 3DES Ser- DEAL, IDEA, PRESENT AES, AES-128,CAST, AES-192, DES, DEAL,PRESENT, AES-256, IDEA, RC, RC2, M6, RC5, M8, SEED - Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM - CryptographyKit - python-cryptoplus HMAC, OMAC crysp - python-csiphash - m2crypto HMAC, RMAC mcrypt - M2Crypto ID ID ID ID ID ID ID 716 705 712 714 707 720 718

183/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL AKA,DPD, DPV,HTTPS, EST, PE, CMP, PEM,SEND, SSL, IKE, PGP, TLS, PE, SEND EST, GPG, HT- - EST,RTD HTTPS, EST,SRTP HTTPS, - HTTPS, IKE, PE, TPS, PGP X.509 WPS https://github.com/iCHAIT hy https://github.com/chrissim pkins/crypto https://github.com/anarcod er/cypher https://github.com/georgem arshall/django-cryptography https://github.com/tchar/cr https://github.com/Tobegia ntgod/Rabin_cryptogram https://github.com/RylanSc haeffer/adver-neural-crypto yptodev-python /Elliptical-Curve-Cryptograp PKI PKI PKI PKI PKI PKI PKI CMP, SET, X.509 SET SET - SET SET - - Licence Licence Licence Licence Licence Licence Licence Licence ------PKC PKC PKC PKC PKC PKC PKC DH,ECDH, DSA,RSA DSS, ECDSA, DH, DSA,ElGamal ECDH, DH - - - - DH Dates Dates Dates Dates Dates Dates Dates Dates 2015-04-02 2015-06-12 2014-11-07 2016-01-04 2016-03-20 2016-03-20 2016-03-02 2016-12-06 2014-06-24 2015-03-09 2016-10-09 2016-10-09 2016-11-08 2017-01-23 MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. HMAC, RMAC - - - HMAC HMAC - - Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind 1 2 1 1 2 0 1 0 1 0 2 0 1 1 People People People People People People People People A C A C A C A C A C A C A C Hash Hash Hash Hash Hash Hash Hash 0.76 3.37 0.13 2.31 2.85 0.12 0.29 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC 14.2 14.48 14.45 13.94 13.93 13.73 13.56 Impact Impact Impact Impact Impact Impact Impact Impact MD5,SHA-1, PBKDF2,SHA-512 SHA-2, RIPEMD, SHA-3, SHA, SHA-256, MD5 SHA, SHA-2, SHA-3, SHA-256, Tiger - MD5, PBKDF2, SHA, SHA-1,SHA-3, SHA-2, SHA-256, SHA-512 scrypt, SHA, SHA-1 - - Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. RC, Turing ------Related Related Related Related Related Related Related Related ------Type Type Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Python Python Python Python Python Python Python AES, AES-128,CAST, AES-192, DES, DEAL,PRESENT, AES-256, IDEA, RC, RC2, M6, RC5, M8, SEED M6, M8, PRESENT DEAL, M6, M8, PRESENT PRESENT PRESENT AES, CAST, PRESENT - IDEA, M6, M8 Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM HMAC, RMAC Elliptical-Curve-Cr - crypto - cypher - django-cryptograp hy HMAC cryptodev-python HMAC Rabin_cryptogram - adver-neural-crypt o - yptography ID ID ID ID ID ID ID ID 715 703 730 709 727 728 719

184/186 A. Detailed Library Table Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol URL URL URL URL URL URL URL URL HTTPS EST EST,SEND HTTPS, AKA, GPG, HT- EST, HTTPS HTTPS, SEND HTTPS - TPS, OTR, PGP https://github.com/getsenic/ senic.cryptoyaml https://github.com/Serafim- End/cryptosystem-RSA https://github.com/manolog ab/python-ifalg https://github.com/flipchan/ otw https://github.com/Antidot e1911/cryptoshop https://github.com/davidcar boni/Cryptopie https://github.com/NoxTool s/noxcrypt - https://master.dl.sourceforge. net/project/pyaes/OldFiles/p yAES-1.0-win32.zip PKI PKI PKI PKI PKI PKI PKI PKI PKI SET SET SET SET SET - - - Licence Licence Licence Licence Licence Licence Licence Licence ------PSFL PKC PKC PKC PKC PKC PKC PKC PKC PKC - - - DSS DH, DSA DH RSA - - Dates - - Dates Dates Dates Dates Dates Dates Dates - - 2016-12-19 2017-02-27 2015-02-20 2015-02-20 2015-04-11 2015-05-13 2016-10-16 2016-12-05 2016-04-11 2016-05-05 2016-03-17 2016-04-06 2016-08-22 2016-08-27 MAC MAC MAC MAC MAC MAC MAC MAC MAC Doc. Com. Doc. Com. Apis, Examples, Explanations Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. Doc. Com. - - HMAC HMAC - - - HMAC Doc. Kind Doc. Kind Readme, Website Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind Doc. Kind - - - - 1 0 1 0 1 0 1 1 1 1 1 0 1 0 People A C People A C People People People People People People A C A C A C A C A C A C A C - 0.15 Hash Hash Hash Hash Hash Hash Hash Hash Hash 0.34 1.38 1.35 0.64 0.74 0.64 1.46 kLOC kLOC kLOC kLOC kLOC kLOC kLOC kLOC - - 13.5 13.3 12.7 13.14 12.35 11.77 11.26 Impact Impact Impact Impact Impact Impact Impact Impact - - SHA, SHA-1, SHA-2, SHA-3, SHA- BLAKE2, SHA, SHA-2, SHA-3, SHA- - - - - 256, SHA-512 256 Depen. Depen. Depen. Depen. Depen. Depen. Depen. Depen. ------Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. Stream Ci. - - - - eSTREAM - - - Related Related Related Related Related Related Related Related ------Type Wrap. Type Stan. Type Type Type Type Type Type Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. Wrap. I.Lvl. High, Low I.Lvl. High High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low I.Lvl. High, Low Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher Block Cipher M.L. Py M.L. Py Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py M.L. Py I.L. I.L. I.L. I.L. I.L. I.L. I.L. I.L. Python Python Python Python Python Python Python Python Python AES, PRESENT SEED AES, AES-256, CAST,IDEA DES, DEAL, AES AES, IDEA, M6, M8,pent, PRESENT, SM4, Ser- Twofish DEAL, IDEA, PRESENT Blowfish - Name Name Name Name Name Name Name Name EAM EAM EAM EAM EAM EAM EAM EAM EAM senic.cryptoyaml - cryptosystem-RSA - python-ifalg HMAC otw HMAC cryptoshop - Cryptopie - noxcrypt - CryptographicServi ces(S) HMAC pyAES ID ID ID ID ID ID ID ID 726 721 722 724 713 729 723 698 733

185/186 A. Detailed Library Table AKA SET - - SHA, SHA-2, SHA-3, SHA-256 Table 30 : Detailed library overview - AES, PRESENT, SEED -

186/186