Git Product home page Git Product logo

ecdsa's Introduction

ECDSA in Go

This repository contains a set of tools to compute operations on an elliptic curve.

Elliptic Curve

An elliptic curve is defined by the equation:

Elliptic Curve Equation

It looks something like this:
secp256k1 curve
secp256k1 curve used by Bitcoin
a
b

Point operations

See ECDSA point operations.

Point at infinity

Point at infinity is defined by
O

  • O + O = O
  • P + O = P

Point negation

  • P - P = O
  • P - Q = 0

Point addition

P + Q = R
Where R is the negation of the intersection of the straight line defined by P and Q, and the curve.

Illustration

lambda

R

Point doubling

P + P = R
Where R is the negation of the intersection of the curve's tangent at P, and the curve.

lambda

R

Point multiplication

Point multiplication is the repetition of point addition.
Equation

Montgomery ladder algorithm

R00
  R1P
  for i from m downto 0 do
     if di = 0 then
        R1point_add(R0, R1)
        R0point_double(R0)
     else
        R0point_add(R0, R1)
        R1point_double(R1)
  return R0

ecdsa's People

Contributors

aureleoules avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

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.