Tag Archives: cryptography

Awesome Swift: A collaborative list of awesome swift resources.

via matteocrippa/awesome-swift · GitHub.

A collaborative list of awesome Swift resources,inspired by awesome-python and listed on awesome-awesomeness.

Feel free to contribute!

Demo Apps

Some interesting demo/poc apps written in swift.


A list of iOS swift demo apps

  • 2048 – 2048 demo game in swift.
  • Alarm – an alarm app in swift.
  • Chat – chat like app implementation in swift.
  • CloudKit-To-Do-List – a cloudkit based to do list.
  • DeckRocket – deckrocket porting in swift.
  • Edhita – text edit app.
  • Eidolon – The Artsy auction kiosk app.
  • firefox-ios – firefox for iOS being developed by Mozilla.
  • Federal Open Data – Get federal Open Data using the Federal Data SDK
  • FlappySwift – flappy bird clone in swift.
  • HackerNews – hackernews reader app written in swift.
  • HausClock – chess stile clock app in swift.
  • HomeKitDemo – homekit demo app;
  • iContactU – delivered on Apple Store: reminds you to contact people you ought to.
  • KeychainDemo – keychain sharing between an App and it’s share extension
  • LayerPlayer – explores CALayer and subclasses; written in Swift; also on App Store
  • MyAwesomeChecklist – checklist app in swift.
  • Pocket Forecast – typhoon weather example
  • ReactiveSwiftFlickrSearch – an MVVM & ReactiveCocoa Flickr search app in swift.
  • Round & Split – a tip calculator in swift
  • SwiftDemo – a collection of demo for swift.
  • SwiftFlickrApp – flickr app written in swift.
  • SwiftHN – hacker news app in swift.
  • SwiftWeather – a nice weather app written in swift.
  • TextEthan – a clone of TextEthan, a messaging app that allows anyone to message you
  • Task – a task app written in Swift that is published in the app store.
  • The Oakland Post – a full-fledged, 100%-Swift (minus dependencies) news reader.
  • Valio – event time table app in swift.


A list of OSX swift demo apps

  • clock-saver – a clock screen saver for osx written in swift.
  • dshb – OS X system monitor in Swift

Dependency Managers

Dependency manager software for swift.

  • acli – downloads repos from command line listed in awesome-swift readme.
  • carthage – a new dependency manager for swift.
  • cocoapods – the most used dependency manager for Objective-C (swift is still in porting).


An awesome list of swift related guides.

Editor Support

Support for your favorite editors.


  • swift-vim – play swift with vim editor.
  • vim-swift – adds swift support to vim. It covers syntax, indenting, and more.
  • vim-polyglot – language pack for vim that includes vim-swift.


Here you can find a list of snippets and libs for your swift projects.


Quick libs to get access to third party API services

Auto Layout

Bored of using storyboard? Give a try to declarative auto layout libs.

  • Cartography – declarative auto layout lib for your project.
  • Snappy – a light-weight layout framework which wraps AutoLayout with nicer syntax.
  • SwiftBox – Flexbox in Swift, using Facebook’s css-layout.
  • SwiftAutoLayout – a small DSL for autolayout.
  • Tails – declarative autolayout for ios app written in swift.
  • VFLToolbox – fancy Swift implementation of the Visual Format Language


Interesting snippets related to color management and utility.


Deal with cryptography method easily in swift

Data Management

Core Data

No more pain with Core Data, here listed some interesting lib to handle data management.

  • AERecord – super awesome Core Data wrapper library for iOS written in Swift.
  • AlecrimCoreData – a simple CoreData wrapper library written in Swift.
  • SugarRecord – an easy with to work with coredata and realm.
  • SuperRecord – A small set of utilities to make working with CoreData and Swift a bit easier.
  • QueryKit – an easy way to play with coredata filtering within your swift projects.


Struggling using json data? Here you are some interesting way to handle it.

  • Argo – Json parsing library
  • json-swift – A basic library for working with JSON in swift.
  • JSONHelper – lightning fast JSON deserialization and value conversion library for iOS & OS X written in swift.
  • ObjectMapper – JSON object mapper.
  • Pistachio – Generic model framework for Swift.
  • SwiftyJSON – A lib for JSON in swift with error handling.
  • SwiftMapper – JSON Mapper.
  • SwiftJSONParser – JSON parser.


Are you interested in storing your app data using SQLite? Here some interesting resources.

  • SQLite.swift – A pure Swift framework wrapping SQLite3. Small. Simple. Safe.
  • SQLiteDB – sqlite wrapper for swift.
  • SwiftData – simple and Effective SQLite Handling in Swift.


If you prefer to manage XML data formatted entries, here some helpful libs


Handle data formatting easily.


Alternatives to NSNotificationCenter, Key-Value-Observation, or delegation.

  • EmitterKit – an implementation of event emitters and listeners in swift.
  • Signals – replaces delegates and notifications.
  • SwiftEventBus – A publish/subscribe event bus optimized for iOS.


A collection of font related snippets.


Interested in using iBeacon in your swift project? Here some interesting resources.

  • iBeacon – iBeacon implementation in swift.


An interesting list of image related libs..

  • CYFastImage – display images from web.
  • gifu – highly performant animated GIF support for iOS in Swift.
  • ImageScout – a Swift implementation of fastimage. supports PNG, GIF, and JPEG.
  • PASImageView – async remote download your image and round them. automatically.
  • SwiftColorArt – font schema generator according image colours.
  • SwiftGif – A small UIImage extension with gif support
  • Toucan – Image processing api
  • UIImageView-BetterFace-Swift – autoresize images and if any face discovered refine the position of the image.


Do you want to create your own customized keyboard? Here some interesting resources


  • Surge – Accelerate framework for swift.
  • swix – A general matrix language.


A list of libs that allow you to decrease the amount of time spent to deal with http requests.


  • iOS-TouchID-Swift – TouchID for Swift.
  • JMEasyTouchID – TouchID one line wrapper.
  • KeychainAccess – Simple Swift wrapper for Keychain that works on iOS and OS X.
  • KeyClip – Keychain framework for iOS written in Swift.
  • SwiftKeychainWrapper – a simple static wrapper for the iOS Keychain to allow you to use it in a similar fashion to user defaults.


Manage your device sensors in a faster and easier way


  • SMCKit – Apple SMC library in Swift
  • SystemKit – OS X system library in Swift


A collection of testing frameworks.

  • Quick – Quick is a behavior-driven development framework for Swift and Objective-C.
  • Sleipnir – BDD-style framework for Swift.
  • Swiftest – experimental BDD-style framework.


A collection of pre-packaged transitions & cool ui stuffs.


Some interesting utilities that help you in your projects

  • __ – Underscore.js power in your swift projects.
  • Async – Syntactic swift sugar for Grand Central Dispatch
  • Async.legacy – Syntactic swift sugar for Grand Central Dispatch (iOS 7 and OS X 10.9 Mavericks compatible fork)
  • AwesomeCache – manage cache easy in your swift project.
  • BrightFutures – promise and future lib for swift.
  • CLIKit – a way to create cli with swift.
  • Collection Each – add each func to collections.
  • CommandLine – A pure Swift library for creating command-line interfaces
  • Dispatcher – Queues, timers, and task groups in Swift
  • Dollar – a lib similar to Lo-Dash or Underscore in Javascript.
  • ExSwift – a set of swift extensions for standard types and classes.
  • LlamaKit – Collection of must-have functional Swift tools.
  • Mendel – Swift miliframework for implementing evolutionary/genetic algorithms.
  • PromiseKit – async promise programming lib.
  • Prototope – Swift library of lightweight interfaces for prototyping, bridged to JS.
  • Pythonic.swift – Pythonic tool-belt for Swift: a Swift implementation of selected parts of Python standard library.
  • Runes – Functional operators for Swift – flatMap, map, apply, pure
  • SpecificationPattern – chainable rules useful for form validation.
  • SwiftBitmaskBitmask<T> type intended as a replacement for RawOptionSet.
  • SwiftColors – HEX color handling as an extension for UIColor.
  • SwiftForms – form are now easy as 1.2.3!
  • SwiftyUserDefaults — a cleaner, nicer syntax for NSUserDefaults
  • Swiftz – a lib for functional programming.
  • Swift Sugar – objsugar ported to swift.
  • Wyrd – Asynchronous programming in Swift made easy. Wyrd is inspired by Promises/A+.
  • XCGLogger – a lib that help you handling better debug logging.
  • Swell – a logging utility for Swift.


Do you wanna host a webserver in your device? Here you can find some tricks to do it.

  • swifter – Http server written in Swift with routing handler.


Miscellaneous Swift related projects

  • swift-compiler-crashes – A collection of test cases crashing the Swift compiler
  • SwiftInFlux — List of things that are “in flux” in Swift + changelog of the language


Tools for Swift development


Generate documentation for Swift code

  • jazzy – Soulful docs for Swift & Objective-C
  • swiftdoc-parser – Header parsing and HTML generating utilities for SwiftDoc.org

The exercises for Crypto 101.


These are the exercises for Crypto 101, the introductory course on cryptography.

Crypto 101

An introduction to applied cryptography and information security suitable for programmers of all ages and skill levels.

Message Security Layer

.idea Add IntelliJ IDEA project files. 3 months ago
.settings Merge branch ‘BurpExtender’ 11 days ago
src Fixing bug in MslControl.js, SynchronizedClock#getTime. Now using thi… 2 days ago
.classpath Remove duplicate examples build path from Eclipse project. 8 days ago
.gitignore Add test-output to .gitignore. 12 days ago
.project Add Gradle build files and Eclipse Gradle integration. 20 days ago
README.md Add mention of external review. 23 hours ago
build.gradle Burp example requires the test classes to compile. 8 days ago
findbugs-exclude.xml Exclude charset findbugs from Burp code; there is no way to extract t… 8 days ago
java2js_regexes.rtf Initial commit of Java and JavaScript MSL stacks and unit tests. 4 months ago
msl.iml Integration Tests 18 days ago
overview-public.html Point Javadoc overview HTML to GitHub documentation. a month ago
overview.html Point Javadoc overview HTML to GitHub documentation. a month ago
settings.gradle Add Gradle build files and Eclipse Gradle integration. 20 days ago

Message Security Layer (MSL) is an extensible and flexible secure messaging protocol that can be used to transport data between two or more communicating entities. Data may also be associated with specific users, and treated as confidential or non-replayable if so desired.


The MSL Protocol provides a complete description of the protocol and implementation requirements. TheConfiguration Guide presents some common client and server MSL configurations. The protocol and configuration guide were reviewed by an external security firm. No issues were identified.

The set of public interfaces and classes an application must implement and use is documented in thePublic Javadoc. Documentation on all of the code, including internal classes and private methods, can be found in the full Javadoc.

For questions and support please contact Wesley Miaw directly. Bugs and feature requests should be filed in the Issue Tracker.

Third-Party Libraries

The Java MSL code base requires the org.json and Bouncy Castle libraries. The unit tests require JUnit 4and the integration tests require TestNG.

The JavaScript MSL code base includes some third-party libraries within the lib/ directory, most notably the Clarinet parser. The jsrsasign and crypto-js libraries are currently included but are planned for removal.

All third-party libraries are subject to their respective license agreements.

Getting Started

To build an application that uses MSL for communication, you must read through and understand the MSL Protocol. This is necessary because unlike other security protocols and libraries, you must make choices about how to secure your communication and authenticate your entities and users. The Configuration Guide can help you make those decisions.

The application interface to the MSL stack is MslControl. The application configuration for a single MSL network is an instance of MslContext. Your application may participate in multiple MSL networks and therefore have multiple instances of MslContext but only one MslControl should be used. Message-specific configuration, such as the user or security properties of that message, are specified in individual instances of MessageContext.


The Java MSL code base includes project files for Eclipse and IntelliJ IDEA.

An example server is provided under src/examples/java/server/. The Eclipse project is a web project that can be deployed onto a Tomcat server. The example server is a J2EE servlet that will respond to requests from the example JavaScript client. The example server MSL configuration is specific to this server and should not be used to configure your application, but it can be used as the basis for doing so.

You may need to install the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files to use cryptographic keys above a certain size.


The JavaScript MSL code base assumes a JavaScript execution environment that supports the latestWeb Crypto API specification. If you are using a web browser you may need to enable experimental features or feature flags to enable Web Crypto.

  • Chrome Browser 37+
    For earlier versions: chrome://flags/#enable-experimental-web-platform-features
    On Linux libnss 3.16.2+ must be separately installed.
  • Firefox 34+
    For earlier versions: about:config dom.webcrypto.enabled
  • Internet Explorer 11+
  • Safari 8+

Your browser may not support all Web Crypto API algorithms, key sizes, and features. If you encounter a problem with a Web Crypto operation please check the release notes for your browser version to determine if it supports what you are trying to do.

To include the JavaScript MSL stack in your JavaScript application you must include all of the MSL JavaScript source files required by your MSL configuration. An example list of the required source files can be found in src/test/javascript/msltests.html.

An example client is provided under src/examples/javascript/client/. The example client is a web page that will send requests to the example Java server. The example client MSL configuration is specific to this client and should not be used to configure your appplication, but it can be used as the basis for doing so.


Copyright 2014 Netflix, Inc.

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Video: Keeping secrets with JavaScript

With the web slowly maturing as a platform the demand for cryptography in the browser has risen, especially in a post-Snowden era. Many of us have heard about the upcoming Web Cryptography API but at the time of writing there seem to be no good introductions available. We will take a look at the proposed W3C spec and its current state of implementation, talk about the good parts and the pitfalls to avoid. I will share my vision of a simpler and safer NaCl-inspired API, and hopefully leave you excited about experimenting further with cryptography in the browser.