Giter Club home page Giter Club logo

joanne-coder's Introduction

Joanne Coder

What is it?

Joanne Coder is a cryptography agnostic rolling code implementation. It is also platform agnostic, hardware agnostic, and will run anywhere as long as C language works. It is here to stay to the end of the world.

What is a rolling code?

A remote controller can be implemented in many ways; using a fixed code is one way to do it. The issue with a fixed code is that somebody can eavesdrop the signal and recreate them later, effectively duplicating the controller.

A way to prevent that is to change the code every time it has been used. And the method to do that is called the "rolling code".

This library implements the receiver side of the rolling code.

Agnostic implementation

This library is not just agnostic to hardware; it also agnostic to the transmission layer. Whether you use UDP on an ESP8266, a web browser on your iPhone, a signal from an infrared LED, this library made no assumption on that, effectively make it a timeless library lasting longer than any iPhone or ESP8266.

What about the security and encryption?

This library made no assumption on the security you choose too. It will work with any block cipher like the AES or any authenticated encryption at your hand.

The only caveat here is that it does not work solely on its own and depends on an external encryption scheme to function. However, if you look for a ready-made solution optimized for microcontrollers, look no further than Embeddable SPARX by the same author of this library.

Porting?

No need; the code is hardware and platform agnostic. It will run everywhere as long as C language works. You can even run the test on your PC.

However, since the rolling counter used is 32-bit, a 32-bit processor like Arm Cortex-M0 is recommended.

Usages

See the test for an example.

There are only 3 simple APIs.

  • joanne_coder__init(&config, &state, &tracking_state);
  • joanne_coder__push_command(&config, &state, slot, access_code, command);
  • joanne_coder__sync(&config, &state, slot, access_code);

Autoinit mode is possible; simply supply NULL pointer as a tracking_state to the init function.

Most of other usage details can be obtained from the test.

Prerequisites

Testing

Just clone the repository with submodules and make run.

What is in the name?

It is a pun.

License

Joanne Coder is released under the BSD 3-Clause License. ๐ŸŽ‰

joanne-coder's People

Contributors

midnight-wonderer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

joanne-coder's Issues

Could be of use

if only there were some documentation regarding the API calls. Unfortunately it is useless as it is now and it is easier to roll my own rolling conde implementation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.