<commit_before># A collection of the most common cryptographic operations

1. Publick Key Encryption with a Public Key Infrastructure
2. Digital Signature with a Public Key Infrastructure
3. Private Symmetric Encryption
4. Nonce Generation
5. Authenticated Message Transmission: an authenticated channel to a server
6. Secure Authenticated Message Transmission: an encrypted and authenticated channel to a server

## Dependencies

* Java JDK (tested with both openjdk-7 and oraclejdk-8).
* Java Cryptography Extension (only for oraclejdk).<commit_msg>first version of the README<commit_after># A collection of the most common cryptographic operations written in Java

1. Publick Key Encryption with a Public Key Infrastructure
2. Digital Signature with a Public Key Infrastructure
3. Private Symmetric Encryption
4. Nonce Generation
5. Authenticated Message Transmission: an authenticated channel to a server
6. Secure Authenticated Message Transmission: an encrypted and authenticated channel to a server

## Dependencies

* Java JDK (tested with both `openjdk-7` and `oraclejdk-8`).
* Java Cryptography Extension (only for oraclejdk).
* Bouncy Castle Cryptographic API and Test Classes (tested with `{bcprov | bctest}-jdk15on-147.jar`)
* SQLJet (tested with `sqljet-1.1.6.jar`)
* JUnit (tested with `junit-4.8.2.jar`)
* JavaParser (tested with `javaparser-1.0.8.jar`)
* Apache Ant (tested with `apache-ant-1.8.4.jar`)


The peculiarity of this implementation is that, for each cryptographic
functionality, there exists a corresponding ideal version (see branch
`ideal`) in such a way that each ideal functionality *realizes* the
corresponding real functionality in the spirit of the simulation-based
security.
See, for instance:
  - <NAME>.,
    Universally Composable Security : A New Paradigm for Cryptographic Protocols
    (https://eprint.iacr.org/2000/067)
  - <NAME>. and <NAME>.,
    The IITM Model: a Simple and Expressive Model for Universal Composability
    (https://eprint.iacr.org/2013/025)

Formal proofs of the realization results for these functionalities can be found in:
  - <NAME>. and <NAME>. and <NAME>. and <NAME>.,
    Extending and Applying a Framework for the Cryptographic Verification of Java Programs
    (https://eprint.iacr.org/2014/038)
{'fraction_non_alphanumeric': 0.0744821507271926, 'fraction_numerical': 0.02379903040987219, 'mean_word_length': 4.632754342431761, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 10, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3034770', 'n_tokens_mistral': 682, 'n_tokens_neox': 612, 'n_words': 278}