Giter Club home page Giter Club logo

encaya's Introduction

Namecoin

Namecoin is a decentralized key/value registration and transfer system based on Bitcoin technology (a decentralized cryptocurrency).

It can be used for multiple purposes, for example a secure and censorship resistant replacement for DNS.

Ownership of a name is based on ownership of a coin, which is in turn based on public key cryptography. The namecoin network reaches consensus every few minutes as to which names have been reserved or updated.

There is a FAQ.md to answer some general questions.

See http://namecoin.info or http://dot-bit.org for more information.

Technical

The Bitcoin protocol is augmented with namecoin operations, to reserve, register and update names. In addition to DNS like entries, arbitrary name/value pairs are allowed and multiple namespaces will be available. This will include a personal handle namespace mapping handles to public keys and personal address data.

The protocol differences from bitcoin include:

  • Different blockchain, port, IRC bootstrap and message header
  • New transaction types: new, first-update, update
  • Validation on the new transaction types
  • RPC calls for managing names
  • Network fees to slow down the initial rush

Please read DESIGN-namecoind.md for details.

BUILDING

Building is supported on Linux, Windows and Mac. For building on windows you can use the scripts in ./contrib/easywinbuilder. Find build instructions on https://wiki.namecoin.info/index.php?title=Build_Namecoin_From_Source.

encaya's People

Contributors

jeremyrand avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

encaya's Issues

Stop() should actually stop the HTTP/HTTPS servers

Currently server.Stop() doesn't actually do anything. This doesn't matter in practice since the process will exit imminently, which will shut down the HTTP/HTTPS listeners, but we really should stop those listeners explicitly.

Pass context parameter to qlib

When we call Do from qlib, we trigger this linter warning:

Function `Do->sigCheck->sectionCheck->getKey->Exchange->Dial` should pass the context parameter (contextcheck)

We should fix this. It may require patches to qlib.

Cirrus: test TLS handshakes

It would be useful to have Cirrus tests for various TLS implementations to make sure they accept certificates given by Encaya.

  • Windows CryptoAPI (presumably PowerShell will work fine like what we do in certinject)
  • GNU/Linux Chromium
  • macOS Chromium
  • macOS Safari
  • Android/Linux Chromium
  • iOS Safari

Listen on HTTP over Unix socket and Windows named pipes

It would be helpful to support listening on non-IP socket types like HTTP over Unix domain sockets and HTTP over Windows named pipes (we currently only support HTTP over TCP and HTTP over TLS). This would facilitate better sandboxing via ACL's and AppArmor. It obviously wouldn't work for standard AIA use cases since no mainstream web browsers will do non-IP sockets, but ncp11 would be fine.

  • HTTP over Unix domain sockets
  • HTTP over Windows named pipes

Synthesize certificates from public key TLSA records

If a TLSA record contains a public key rather than a certificate, we should synthesize a certificate with name constraints set appropriately and return that. The generate_nmc_cert source code in ncdns's repo as well as the crosssignnameconstraint source code should be a pretty good guide to this.

Set caching HTTP response headers

We are still running into occasional issues where an AIA Parent certificate will be loaded from the CryptNet cache (as opposed to the network) on Windows even though the cached cert has expired. This causes cert validation to fail when revisiting a site that was previously visited some days/weeks ago. This doc insinuates that the cache keeps track of the following response headers:

  • Last-Modified
  • max-age in Cache-Control
  • ETag

This means we might be able to fix this breakage by including those response headers in Encaya. (Right now, none of them are included by Encaya.)

Don't save private key of root CA

The root CA cert's private key is more dangerous than the TLD CA's private key, because not all TLS implementations honor name constraints for root CA's. We should avoid ever writing the root CA private key to storage; instead we should export a root CA cert, a TLD CA cert, and a TLD CA private key.

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.