profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/jibeee/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.

jibeee/app-avalanche 0

Ledger app providing an AVAX wallet

jibeee/app-ethereum 0

Ethereum wallet application for Ledger Blue and Nano S

jibeee/app-iotex 0

Ledger wallet app for IoTeX blockchain

jibeee/app-monero 0

Monero wallet application for Ledger Nano S & X

jibeee/app-near 0

Ledger repo for Near app

jibeee/app-sia-x 0

(WIP, Untested) Sia App for Ledger Nano X

PullRequestReviewEvent
PullRequestReviewEvent

create barnchLedgerHQ/ledger-app-builder

branch : update-arm-toolchain

created branch time in 4 days

PullRequestReviewEvent

push eventLedgerHQ/app-stellar

Jean-Baptiste Bédrune

commit sha ad6601de6df4eae2fd19013dcddcb25a623f7c03

CI: add workflow for Coverity Scan

view details

push time in 8 days

PR opened LedgerHQ/app-stellar

Add workflow for Clang Static Analyzer
+27 -4

0 comment

2 changed files

pr created time in 8 days

create barnchLedgerHQ/app-stellar

branch : scan-build

created branch time in 8 days

pull request commentLedgerHQ/app-stellar

feat: add support for Stellar Protocol 18

Good PR. Thanks for having added tests!

overcat

comment created time in 8 days

Pull request review commentLedgerHQ/app-stellar

feat: add support for Stellar Protocol 18

 static void format_set_trust_line_flags(tx_context_t *txCtx) {     push_to_formatter_stack(&format_set_trust_line_trustor); } -static const format_function_t formatters[] = {-    &format_create_account,-    &format_payment,-    &format_path_payment_strict_receive,-    &format_manage_sell_offer,-    &format_create_passive_sell_offer,-    &format_set_options,-    &format_change_trust,-    &format_allow_trust,-    &format_account_merge,-    &format_inflation,-    &format_manage_data,-    &format_bump_sequence,-    &format_manage_buy_offer,-    &format_path_payment_strict_send,-    &format_create_claimable_balance,-    &format_claim_claimable_balance,-    &format_begin_sponsoring_future_reserves,-    &format_end_sponsoring_future_reserves,-    &format_revoke_sponsorship,-    &format_clawback,-    &format_clawback_claimable_balance,-    &format_set_trust_line_flags,-};+static void format_liquidity_pool_deposit_max_price(tx_context_t *txCtx) {+    strcpy(detailCaption, "Max Price");+    uint64_t price =+        ((uint64_t) txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxPrice.n * 10000000) /+        txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxPrice.d;+    print_amount(price, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_operation_source);+}++static void format_liquidity_pool_deposit_min_price(tx_context_t *txCtx) {+    strcpy(detailCaption, "Min Price");+    uint64_t price =+        ((uint64_t) txCtx->txDetails.opDetails.liquidityPoolDepositOp.minPrice.n * 10000000) /+        txCtx->txDetails.opDetails.liquidityPoolDepositOp.minPrice.d;+    print_amount(price, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_liquidity_pool_deposit_max_price);+}++static void format_liquidity_pool_deposit_max_amount_b(tx_context_t *txCtx) {+    strcpy(detailCaption, "Max Amount B");+    print_amount(txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxAmountB,+                 NULL,+                 txCtx->network,+                 detailValue,+                 DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_liquidity_pool_deposit_min_price);+}++static void format_liquidity_pool_deposit_max_amount_a(tx_context_t *txCtx) {+    strcpy(detailCaption, "Max Amount A");+    print_amount(txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxAmountA,+                 NULL,+                 txCtx->network,+                 detailValue,+                 DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_liquidity_pool_deposit_max_amount_b);+}++static void format_liquidity_pool_deposit_liquidity_pool_id(tx_context_t *txCtx) {+    strcpy(detailCaption, "Liquidity Pool ID");+    print_binary_summary(+        (uint8_t *) &txCtx->txDetails.opDetails.liquidityPoolDepositOp.liquidityPoolID,

For readability, (uint8_t *) &txCtx->txDetails.opDetails.liquidityPoolDepositOp.liquidityPoolID shoud be replaced with txCtx->txDetails.opDetails.liquidityPoolDepositOp.liquidityPoolID

(Pattern should be replaced 3 other times in this file)

overcat

comment created time in 8 days

Pull request review commentLedgerHQ/app-stellar

feat: add support for Stellar Protocol 18

 typedef struct { } MuxedAccount;  typedef struct {-    AssetType type;     const char *assetCode;     AccountID issuer;+} AlphaNum4;++typedef struct {+    const char *assetCode;+    AccountID issuer;+} AlphaNum12;++typedef struct {+    AssetType type;+    union {+        AlphaNum4 alphaNum4;+        AlphaNum12 alphaNum12;+    }; } Asset; +typedef enum { LIQUIDITY_POOL_CONSTANT_PRODUCT = 0 } LiquidityPoolType;++typedef struct {+    Asset assetA;+    Asset assetB;+    int32_t fee;  // Fee is in basis points, so the actual rate is (fee/100)%+} LiquidityPoolConstantProductParameters;++typedef struct {+    LiquidityPoolType type;+    union {+        LiquidityPoolConstantProductParameters+            constantProduct;  // type == LIQUIDITY_POOL_CONSTANT_PRODUCT+    };+} LiquidityPoolParameters;++typedef struct {+    AssetType type;+    union {+        AlphaNum4 alphaNum4;+        AlphaNum12 alphaNum12;+        LiquidityPoolParameters liquidityPool;+    };+} ChangeTrustAsset;++typedef struct {+    AssetType type;+    union {+        AlphaNum4 alphaNum4;+        AlphaNum12 alphaNum12;+        uint8_t liquidityPoolID[32];

Maybe you could defined LIQUIDITY_POOL_ID_SIZE to avoid using 32 in various places.

overcat

comment created time in 8 days

PullRequestReviewEvent

Pull request review commentLedgerHQ/app-stellar

feat: add support for Stellar Protocol 18

 static void format_set_trust_line_flags(tx_context_t *txCtx) {     push_to_formatter_stack(&format_set_trust_line_trustor); } -static const format_function_t formatters[] = {-    &format_create_account,-    &format_payment,-    &format_path_payment_strict_receive,-    &format_manage_sell_offer,-    &format_create_passive_sell_offer,-    &format_set_options,-    &format_change_trust,-    &format_allow_trust,-    &format_account_merge,-    &format_inflation,-    &format_manage_data,-    &format_bump_sequence,-    &format_manage_buy_offer,-    &format_path_payment_strict_send,-    &format_create_claimable_balance,-    &format_claim_claimable_balance,-    &format_begin_sponsoring_future_reserves,-    &format_end_sponsoring_future_reserves,-    &format_revoke_sponsorship,-    &format_clawback,-    &format_clawback_claimable_balance,-    &format_set_trust_line_flags,-};+static void format_liquidity_pool_deposit_max_price(tx_context_t *txCtx) {+    strcpy(detailCaption, "Max Price");+    uint64_t price =+        ((uint64_t) txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxPrice.n * 10000000) /+        txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxPrice.d;+    print_amount(price, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_operation_source);+}++static void format_liquidity_pool_deposit_min_price(tx_context_t *txCtx) {+    strcpy(detailCaption, "Min Price");+    uint64_t price =+        ((uint64_t) txCtx->txDetails.opDetails.liquidityPoolDepositOp.minPrice.n * 10000000) /+        txCtx->txDetails.opDetails.liquidityPoolDepositOp.minPrice.d;+    print_amount(price, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_liquidity_pool_deposit_max_price);+}++static void format_liquidity_pool_deposit_max_amount_b(tx_context_t *txCtx) {+    strcpy(detailCaption, "Max Amount B");+    print_amount(txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxAmountB,+                 NULL,+                 txCtx->network,+                 detailValue,+                 DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_liquidity_pool_deposit_min_price);+}++static void format_liquidity_pool_deposit_max_amount_a(tx_context_t *txCtx) {+    strcpy(detailCaption, "Max Amount A");+    print_amount(txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxAmountA,+                 NULL,+                 txCtx->network,+                 detailValue,+                 DETAIL_VALUE_MAX_SIZE);+    push_to_formatter_stack(&format_liquidity_pool_deposit_max_amount_b);+}++static void format_liquidity_pool_deposit_liquidity_pool_id(tx_context_t *txCtx) {+    strcpy(detailCaption, "Liquidity Pool ID");+    print_binary_summary(

From what I understand, liquidity pool IDs are a very sensitive field. I suggest to display the whole value of this field, using print_binary instead for print_binary_summary.

(Same apply to all the liquidity pool IDs in format_liquidity_pool_withdraw_liquidity_pool_id etc.)

overcat

comment created time in 8 days

Pull request review commentLedgerHQ/app-stellar

feat: add support for Stellar Protocol 18

 void print_asset_t(const Asset *asset, uint8_t network_id, char *out, size_t out     char asset_name[12 + 1];      print_asset_name(asset, network_id, asset_name, sizeof(asset_name));-    print_public_key(asset->issuer, issuer, 3, 4);++    switch (asset->type) {+        case ASSET_TYPE_CREDIT_ALPHANUM4:+            print_public_key(asset->alphaNum4.issuer, issuer, 3, 4);

It seems a break is missing here.

overcat

comment created time in 8 days

PullRequestReviewEvent

push eventLedgerHQ/app-boilerplate

Jean-Baptiste Bédrune

commit sha 2127506bbade601e8e18b9a298b1d6a3767176e7

Remove autobuild

view details

push time in 10 days

IssuesEvent

issue commentLedgerHQ/developer-portal

Removed link

This does not fix anything. It just creates an empty link that points to nothing.

You can create a link like this:

diff --git a/_docs/nano-app/psd-keys.md b/_docs/nano-app/psd-keys.md
index 4ef9cc2..c16c767 100755
--- a/_docs/nano-app/psd-keys.md
+++ b/_docs/nano-app/psd-keys.md
@@ -50,7 +50,7 @@ For example, this model can be used to facilitate the process of auditing an HD

 For a more detailed list and explanation of some of the use-cases made possible by this model, see [this section](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#use-cases) of the BIP 32 specification.

-In the next section, `hd_use_cases`, we'll talk about how all of these features are used by HD wallets and other applications.
+In the [next section]({% link _docs/nano-app/psd-applications.md %}), we'll talk about how all of these features are used by HD wallets and other applications.

 <!--  -->
 {% include alert.html style="primary" text="If you'd like to play with BIP 39 mnemonics or BIP 32 derivation on a computer, take a look at this tool: <a href='https://iancoleman.io/bip39/' class='alert-link'> iancoleman.io/bip39 </a> " %}

Reference: https://jekyllrb.com/docs/liquid/tags/#linking-to-posts

Thanks!

jibeee

comment created time in 18 days

issue openedLedgerHQ/developer-portal

Removed link

Link has been removed during migration from RTD: https://github.com/LedgerHQ/developer-portal/blob/79f13be5a820238ea7c312497dcab7887f7cf2a3/_docs/nano-app/psd-keys.md#L53

hd_use_cases should point to https://developers.ledger.com/docs/nano-app/psd-applications/.

created time in 18 days

issue openedLedgerHQ/developer-portal

How to locally build the portal?

Build instructions have been removed in https://github.com/LedgerHQ/developer-portal/commit/859e1b6d66a495d14d6335cee6a013ad48b4ddf6. It was useful to run a test platform and check if documentation was correctly rendered.

Is it possible to revert this commit?

created time in 19 days

PR closed LedgerHQ/app-boilerplate

WIP: CodeQL
+74 -0

0 comment

1 changed file

jibeee

pr closed time in 19 days

pull request commentnode-usb/libusb

[Backport] Windows: Restrict path for dynamic library loading

Do you need more information for the review?

jibeee

comment created time in 25 days

push eventjibeee/app-stellar

Jean-Baptiste Bédrune

commit sha 1d73dbb3b3d0831c059d799bacc2a728856141a8

Create codeql-analysis.yml

view details

push time in a month

PR opened LedgerHQ/app-boilerplate

WIP: CodeQL
+74 -0

0 comment

1 changed file

pr created time in a month

create barnchLedgerHQ/app-boilerplate

branch : codeql

created branch time in a month

pull request commentLedgerHQ/ledgerctl

Relax construct version bounds again

Thanks!

Ericson2314

comment created time in a month

push eventLedgerHQ/ledgerctl

John Ericson

commit sha fd23d0e14721b93789071e80632e6bd9e47c1256

Relax construct version bounds again `iterints` is actual trivial: https://github.com/construct/construct/commit/8915512f53552b1493afdbce5bbf8bb6f2aa4411#diff-51115802926a071de160de5506d64046f1acefcad6d6df20dfdd6d08c3c6ded4L36-L38

view details

push time in a month

PR merged LedgerHQ/ledgerctl

Relax construct version bounds again

iterints is actual trivial: https://github.com/construct/construct/commit/8915512f53552b1493afdbce5bbf8bb6f2aa4411#diff-51115802926a071de160de5506d64046f1acefcad6d6df20dfdd6d08c3c6ded4L36-L38

+2 -3

0 comment

2 changed files

Ericson2314

pr closed time in a month

push eventLedgerHQ/ledgerctl

Jean-Baptiste Bédrune

commit sha 3011791e9c5a565f469a67ffb06d50341d81d4b5

Fix #20 ecdsa 0.17 does not set point order after a multiplication. Group order is now retrieved using curve, not point.

view details

push time in a month

issue closedLedgerHQ/ledgerctl

ledgerwallet/crypto/ecc.py", line 65, in exchange cause Exception in ecdsa/util.py", line 63 TypeError: %x format: an integer is required, not NoneType

Because the ledgerctl/ledgerwallet/crypto/ecc.py", line 65 object point.order is not set , it causes a failure in ecdsa/util.py", line 63

use of python 3.9 ,ecdsa 0.17.0, ledgerctl cd30a2e on Apr 23

Full error stack:

[2021-09-24 09:56:30,265] ubuntu/ERROR/locust.user.task: %x format: an integer is required, not NoneType Traceback (most recent call last): File "/home/ubuntu/hsm-scriptrunner-load-test/venv/lib/python3.9/site-packages/locust/user/task.py", line 290, in run self.execute_next_task() File "/home/ubuntu/hsm-scriptrunner-load-test/venv/lib/python3.9/site-packages/locust/user/task.py", line 315, in execute_next_task self.execute_task(self._task_queue.pop(0)) File "/home/ubuntu/hsm-scriptrunner-load-test/venv/lib/python3.9/site-packages/locust/user/task.py", line 327, in execute_task task(self) File "/home/ubuntu/hsm-scriptrunner-load-test/run_scriptrunner_test.py", line 198, in delete_apps self.device.delete_remote_app(app["delete"], app["delete_key"]) File "/home/ubuntu/hsm-scriptrunner-load-test/run_scriptrunner_test.py", line 152, in delete_remote_app return self.install_remote_app( File "/home/ubuntu/hsm-scriptrunner-load-test/run_scriptrunner_test.py", line 140, in install_remote_app return self.__run_websocket_session( File "/home/ubuntu/hsm-scriptrunner-load-test/run_scriptrunner_test.py", line 121, in __run_websocket_session response_length, script_runner_session = run() File "/home/ubuntu/hsm-scriptrunner-load-test/run_scriptrunner_test.py", line 90, in run apdu_response = self.raw_exchange(apdu_data) File "/home/ubuntu/hsm-scriptrunner-load-test/ledgerctl/ledgerwallet/client.py", line 183, in raw_exchange output_data = bytes(self.device.exchange(data)) File "/home/ubuntu/hsm-scriptrunner-load-test/softdevice.py", line 31, in exchange self.write(data) File "/home/ubuntu/hsm-scriptrunner-load-test/softdevice.py", line 21, in write self.response = self.device.process_apdu(data) File "/home/ubuntu/hsm-scriptrunner-load-test/basedevice.py", line 193, in process_apdu response = self.apdu_handlers[ins](self, data) File "/home/ubuntu/hsm-scriptrunner-load-test/basedevice.py", line 170, in mutual_authenticate shared_secret = self.ephemeral_key.exchange(self.server_pubkey) File "/home/ubuntu/hsm-scriptrunner-load-test/ledgerctl/ledgerwallet/crypto/ecc.py", line 65, in exchange msg = b"\x03" + ecdsa.util.number_to_string(point.x(), point.order()) File "/home/ubuntu/hsm-scriptrunner-load-test/venv/lib/python3.9/site-packages/ecdsa/util.py", line 202, in number_to_string l = orderlen(order) File "/home/ubuntu/hsm-scriptrunner-load-test/venv/lib/python3.9/site-packages/ecdsa/util.py", line 63, in orderlen return (1 + len("%x" % order)) // 2 # bytes TypeError: %x format: an integer is required, not NoneType

closed time in a month

emmanuel-guisse-ledger