status-go/api
Samuel Hawksby-Robinson c8f9dad554
Feature/key compression (#1990)
## What has changed?

I've introduced to the public binding functionality that will compress and decompress public keys of a variety of encoding and key types. This functionality supports all major byte encoding formats and the following EC public key types:

- `secp256k1` pks
- `bls12-381 g1` pks
- `bls12-381 g2` pks

## Why make the change?

We want shorter public (chat) keys and we want to be future proof and encoding agnostic. See the issue here https://github.com/status-im/status-go/issues/1937

---

* Added basic signature for compresspk and uncompresspk

* Added basic encoding information

* make vendor

* formatted imports for the linter

* Reformatted imports hoping linter likes it

* This linter is capricious

* Added check that the secp256k1 key is valid

* Added test for valid key

* Added multiformat/go-varint dep

* Added public key type handling

* Added key decompression with key type handling

* Added handling for '0x' type indentifying

* Added more robust testing

* Less lint for the linting gods

* make vendor for bls12_381

* Added bls12-381 compression tests

* Added decompress key expected results

* Refactor of typed and untyped keys in tests

* Lint god appeasment

* Refactor of sample public keys

* Implemented bls12-381 decompression

* gofmt

* Renamed decode/encode funcs to be more descriptive

* Added binary bindings for key de/compression

* Refactor of func parameters

gomobile is a bit tempermental using raw bytes as a parameter, so I've decided to use string only inputs and outputs

* gofmt

* Added function documentation

* Moved multiformat de/compression into api/multiformat ns

* Moved multiformat de/compression into api/multiformat ns

* Changed compress to serialize on API
2020-06-23 11:47:17 +01:00
..
multiformat Feature/key compression (#1990) 2020-06-23 11:47:17 +01:00
app_state.go Clean api package (#1055) 2018-06-27 10:11:45 +02:00
app_state_test.go Clean api package (#1055) 2018-06-27 10:11:45 +02:00
backend.go Initialize protocol when waku active (#1832) 2020-02-17 15:38:59 +01:00
backend_subs_test.go Use goimports instead of gofmt 2020-01-06 10:17:23 +01:00
backend_test.go Use goimports instead of gofmt 2020-01-06 10:17:23 +01:00
connection.go Clean api package (#1055) 2018-06-27 10:11:45 +02:00
connection_test.go Clean api package (#1055) 2018-06-27 10:11:45 +02:00
geth_backend.go Make sure WakuEnabled is respected on upgrade 2020-03-30 15:28:16 +02:00
nimbus_backend.go Initialize protocol when waku active (#1832) 2020-02-17 15:38:59 +01:00
utils.go Migrate more files to eth-node/crypto 2019-12-20 11:24:26 +01:00
utils_test.go Use goimports instead of gofmt 2020-01-06 10:17:23 +01:00