Skip to content
This repository has been archived by the owner on Jul 5, 2023. It is now read-only.

Commit

Permalink
Merge with upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
notatestuser committed Apr 11, 2019
1 parent eda2956 commit 3e49202
Show file tree
Hide file tree
Showing 35 changed files with 3,352 additions and 1,282 deletions.
10 changes: 6 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#*******************************************************************************
# Ledger App
# (c) 2017 Ledger
# (c) 2018 ZondaX GmbH
# (c) 2019 Binance
# (c) 2018 ZondaX GmbH
# (c) 2017 Ledger
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -28,7 +28,7 @@ SCRIPT_LD:=$(CURDIR)/script.ld
include $(BOLOS_SDK)/Makefile.defines

# Main app configuration
APPNAME = "Binance Chain"
APPNAME="Binance Chain"
APPVERSION_M=1
APPVERSION_N=0
APPVERSION_P=2
Expand All @@ -41,6 +41,8 @@ ICONNAME=$(CURDIR)/icon.gif

DEFINES += UNUSED\(x\)=\(void\)x

DEFINES += APPNAME=\"$(APPNAME)\"

APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)
DEFINES += APPVERSION=\"$(APPVERSION)\"

Expand Down Expand Up @@ -122,4 +124,4 @@ dep/%.d: %.c Makefile.genericwallet


listvariants:
@echo VARIANTS COIN cosmos
@echo VARIANTS COIN binance_chain
27 changes: 16 additions & 11 deletions src/pubkey.c → deps/ledger-zxlib/include/bech32.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* (c) 2019 Binance
* (c) 2019 ZondaX GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -13,15 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/
#include "pubkey.h"
#pragma once

int secp256k1_pubkey_serialize(uint8_t *pubkey, size_t *size, int compress) {
if (compress) {
*size = PK_COMPRESSED_LEN;
pubkey[0] = pubkey[64] & 1 ? SECP256K1_TAG_PUBKEY_ODD : SECP256K1_TAG_PUBKEY_EVEN;
} else {
*size = PK_UNCOMPRESSED_LEN;
pubkey[0] = SECP256K1_TAG_PUBKEY_UNCOMPRESSED;
}
return 1;
#ifdef __cplusplus
extern "C" {
#endif

// the following function encodes directly from bytes
// it will internally convert from 8 to 5 bits and return a
// zero-terminated string in output
void bech32EncodeFromBytes(char *output,
const char *hrp,
const uint8_t *data,
size_t data_len);

#ifdef __cplusplus
}
#endif
37 changes: 37 additions & 0 deletions deps/ledger-zxlib/include/bittools.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// This code has been adapted from:
/* Copyright (c) 2017 Pieter Wuille
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#pragma once

#ifdef __cplusplus
extern "C" {
#endif

int convert_bits(uint8_t *out,
size_t *outlen,
int outbits,
const uint8_t *in,
size_t inlen,
int inbits, int pad);

#ifdef __cplusplus
}
#endif
101 changes: 101 additions & 0 deletions deps/ledger-zxlib/include/segwit_addr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/* Copyright (c) 2017 Pieter Wuille
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

#ifndef _SEGWIT_ADDR_H_
#define _SEGWIT_ADDR_H_ 1

#include <stdint.h>

/** Encode a SegWit address
*
* Out: output: Pointer to a buffer of size 73 + strlen(hrp) that will be
* updated to contain the null-terminated address.
* In: hrp: Pointer to the null-terminated human readable part to use
* (chain/network specific).
* ver: Version of the witness program (between 0 and 16 inclusive).
* prog: Data bytes for the witness program (between 2 and 40 bytes).
* prog_len: Number of data bytes in prog.
* Returns 1 if successful.
*/
int segwit_addr_encode(
char *output,
const char *hrp,
int ver,
const uint8_t *prog,
size_t prog_len
);

/** Decode a SegWit address
*
* Out: ver: Pointer to an int that will be updated to contain the witness
* program version (between 0 and 16 inclusive).
* prog: Pointer to a buffer of size 40 that will be updated to
* contain the witness program bytes.
* prog_len: Pointer to a size_t that will be updated to contain the length
* of bytes in prog.
* hrp: Pointer to the null-terminated human readable part that is
* expected (chain/network specific).
* addr: Pointer to the null-terminated address.
* Returns 1 if successful.
*/
int segwit_addr_decode(
int* ver,
uint8_t* prog,
size_t* prog_len,
const char* hrp,
const char* addr
);

/** Encode a Bech32 string
*
* Out: output: Pointer to a buffer of size strlen(hrp) + data_len + 8 that
* will be updated to contain the null-terminated Bech32 string.
* In: hrp : Pointer to the null-terminated human readable part.
* data : Pointer to an array of 5-bit values.
* data_len: Length of the data array.
* Returns 1 if successful.
*/
int bech32_encode(
char *output,
const char *hrp,
const uint8_t *data,
size_t data_len
);

/** Decode a Bech32 string
*
* Out: hrp: Pointer to a buffer of size strlen(input) - 6. Will be
* updated to contain the null-terminated human readable part.
* data: Pointer to a buffer of size strlen(input) - 8 that will
* hold the encoded 5-bit data values.
* data_len: Pointer to a size_t that will be updated to be the number
* of entries in data.
* In: input: Pointer to a null-terminated Bech32 string.
* Returns 1 if succesful.
*/
int bech32_decode(
char *hrp,
uint8_t *data,
size_t *data_len,
const char *input
);

#endif
Loading

0 comments on commit 3e49202

Please sign in to comment.