Giter Club home page Giter Club logo

crypto3-codec's Introduction

Encoding for =nil; Foundation's Cryptography Suite

Build Status

Encoding for =nil; Foundation's cryptography suite.

Building

This library uses Boost CMake build modules (https://github.com/BoostCMake/cmake_modules.git). To actually include this library in a project it is required to:

  1. Add CMake Modules as submodule to target project repository.
  2. Add all the internal dependencies using CMake Modules as submodules to target project repository.
  3. Initialize parent project with CMake Modules (Look at crypto3 for the example)

Dependencies

Internal

External

crypto3-codec's People

Contributors

a1falcon avatar andreymlashkin avatar martun avatar nemothenoone avatar nkaskov avatar zerg1996 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crypto3-codec's Issues

Review return-value converter

Return-value converter seems to work now only for explicit type-initialized variables:

std::string out = encode<codec::base64>(in.begin(), in.end());

The same construction fails if the variable was initialized earlier:

std::string str = "123";
str = encode<codec::hex>(str.begin(), str.end());

This leads to ambiguous operator= selection.

Implement range adaptor

Range adaptor implementation would allow to use encoding as follows:

std::string src = "abc", res = src | encoded<bech<32>>;

Introduce "Inspectable" concept usage

Inspectable concept is required for recursive type marshalling support to be done. Example of such a requirement - generic type serialization to Integral concept-complying type (or sequence of ones).

Factor out implementations

Implementation from language-specific constructions separation allows to implement FFI to codecs itself with no redundant preprocessing.

Consider std::iostream adoption

Algorithm-like interface looks fine, but the standard proposes one more way to work with the data streams - iostream library. Adoption should be considered.

Update pack

Pack was rewritten in hashes and requires an update here.

Implement data-driven testing

Current testing implementation relies on runtime initialization of pre-generated data in runtime data structures.

This requires to be refactored to file-driven and random-generated data sources.

Factor out commons

Commonly used functions (e.g. pack or exploder/imploder) are duplicated in various crypto3 libraries. Factoring them out to become a detail directory of the whole crypto3 suite seems legit.

Implement Bech32 encoding

Bech32 is a string encoding format.

The output consists of a human-readable part (alphanumeric), a separator character (1), and a base32 data section, the last 6 characters of which are a checksum.

For more information, see BIP-0173.

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.