firmware | ❄️ Firmware and simulator for Coldcard Hardware Wallet | Cryptography library

 by   Coldcard C Version: 2023-02-27T2106-v5.1.1 License: Non-SPDX

kandi X-RAY | firmware Summary

kandi X-RAY | firmware Summary

firmware is a C library typically used in Security, Cryptography, Bitcoin applications. firmware has no bugs, it has no vulnerabilities and it has high support. However firmware has a Non-SPDX License. You can download it from GitHub.

Coldcard is a Cheap, Ultra-secure & Opensource Hardware Wallet for Bitcoin. Get yours at ColdcardWallet.com. Follow @COLDCARDwallet on Twitter to keep up with the latest updates and security alerts.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              firmware has a highly active ecosystem.
              It has 387 star(s) with 131 fork(s). There are 31 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              firmware has no issues reported. There are 7 open pull requests and 0 closed requests.
              OutlinedDot
              It has a negative sentiment in the developer community.
              The latest version of firmware is 2023-02-27T2106-v5.1.1

            kandi-Quality Quality

              firmware has no bugs reported.

            kandi-Security Security

              firmware has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              firmware has a Non-SPDX License.
              Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.

            kandi-Reuse Reuse

              firmware releases are not available. You will need to build from source code and install.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi has reviewed firmware and discovered the below as its top functions. This is intended to give you an instant insight into firmware implemented functionality, and help decide if they suit your requirements.
            • Start Cold Card Simulator
            • Wait until a key is pressed
            • Add a value to the history
            • Open a libvirt library
            • Handle PIN change events
            • Interactively interact with keyboard
            • Get a new PIN
            • Invokes a method oneway
            • Interact the PSBT file
            • Make a sighash - encoded sighash
            • Start cloning a MicroSD card
            • Render the backup contents
            • Dump the contents of a secel block
            • Validate that the given output is valid
            • Split the seed phrase into multiple words
            • Export a multisig wallet
            • Approve a transaction
            • Add a new PIN code
            • Create a menu from a file
            • Import an XPRV file
            • This method is called when a file is ready to sign
            • Make a sighash - shig hash
            • Interactively interact with the firmware
            • Upgrade a MicroSD card
            • Load the contents of the cache
            • Create a ComboConfig for a given part number
            • Main entry point
            Get all kandi verified functions for this library.

            firmware Key Features

            No Key Features are available at this moment for firmware.

            firmware Examples and Code Snippets

            No Code Snippets are available at this moment for firmware.

            Community Discussions

            QUESTION

            Determine which variable use at runtime in Embedded C
            Asked 2022-Mar-06 at 03:44

            There are two different makefiles for this firmware that I am working on. Data Version 1 and Data Version 2. Both versions are using the same file called ble_communication.c in each own make file.

            To differentiate between the two versions, we have two variables declared inside ble_communication.c

            ...

            ANSWER

            Answered 2022-Mar-06 at 03:44

            To be honest, I would prefer to use the #ifdef, but here is a workaround for you.

            Create two files with the desired data and select the required file at build time, using the makefile.

            First, prepare two C files, ble_communication_data1.c and ble_communication_data2.c. Feel free to choose a clearer name.

            Place the required data in each C file, but keep the names the same.

            ble_communication_data1.c

            Source https://stackoverflow.com/questions/71367311

            QUESTION

            STM32 embedded memory overflow/leak detection
            Asked 2022-Feb-23 at 12:37

            I've been bitten in the ass a few times where I would write to an array out of scope. I have been working on a particular firmware for over 2 years and suspect an overflow which by now is close to impossible to find - for example:

            ...

            ANSWER

            Answered 2022-Feb-21 at 09:02

            Recent versions of GCC with the flag -Wall will detect simple errors like the problem in your example, and print a warning.

            The tool Valgrind is more advanced, but also more work to configure and use correctly.

            There is no tool in the universe that can detect every possible mistake, so start with the easiest to use.

            Source https://stackoverflow.com/questions/71203483

            QUESTION

            LLVM linker places stack in the wrong place
            Asked 2022-Feb-08 at 09:57

            I am trying to link Cortex-M4 firmware with clang + lld. The gcc build works fine. I am using the stock CMSIS linker script with only RAM & ROM size adjusted (bases are the same). Beginning of the script (without comments):

            ...

            ANSWER

            Answered 2022-Feb-08 at 09:57

            I fixed it by removing COPY and adding NOLOAD to the stack section. It builds and runs fine both with gcc and clang.

            Source https://stackoverflow.com/questions/70097305

            QUESTION

            JavaScript: Await for a recursive tree to finish, where each recursive level is an API call
            Asked 2022-Jan-28 at 08:18

            I'm trying to build a JSON tree using recursive API calls but I am having issues with flow control of the data structure. How can I block the flow until the BuildTree function stack ends?

            Here is the partial code. Thanks in advance.

            ...

            ANSWER

            Answered 2022-Jan-28 at 08:18

            You are using the async keyword for no reason, because you are not using await inside your function. You might as well use it :)

            Source https://stackoverflow.com/questions/69642817

            QUESTION

            Is it possible to compute a hash by small chunks?
            Asked 2021-Nov-19 at 14:44

            I am currently working on a firmware update mechanism for embedded system with low memories.

            Part of the system requires to hash (with SHA-256) the binary file before sending the file (other security features are added but do not impact this question). The device must verify this hash before validating it, but is pretty low on memory. It will receive the data in small chunks, and I am wondering if it is possible to compute partial hash "on the fly", to avoid loading the whole binary again after the full transfer.

            As an example, let's say the data to hash is "part1part2part3". The hash of the full data is "hash", the hash of "part1" is "hash1", the hash of "part2" is "hash2" and the hash of "part3" is "hash3".

            Is there any mathematical operation I can do to convert partial hashes to the full one? Something like

            ...

            ANSWER

            Answered 2021-Nov-19 at 14:43

            The way you've described this is not possible. You cannot combine "subhashes" to determine a full hash. If you could do that, the hash would be subject to length-extension attacks and not be secure. ("Secure" here is defined in a fairly precise and technical way. See the link from Stef about other hashing approaches that loosen this requirement.)

            But, as the question's comments note, it is completely possible to stream data into SHA256 without ever holding all the data in memory. That is the normal way that hash functions are computed. SHA256 works on a block size of 64 bytes. That is all the data you need to hold at a time, plus 32 bytes of state.

            Most common hashing libraries have this as part of the API. It generally looks something like:

            Source https://stackoverflow.com/questions/70035486

            QUESTION

            Why does nvidia-smi return "GPU access blocked by the operating system" in WSL2 under Windows 10 21H2
            Asked 2021-Nov-18 at 19:20
            Installing CUDA on WSL2

            I've installed Windows 10 21H2 on both my desktop (AMD 5950X system with RTX3080) and my laptop (Dell XPS 9560 with i7-7700HQ and GTX1050) following the instructions on https://docs.nvidia.com/cuda/wsl-user-guide/index.html:

            1. Install CUDA-capable driver in Windows
            2. Update WSL2 kernel in PowerShell: wsl --update
            3. Install CUDA toolkit in Ubuntu 20.04 in WSL2 (Note that you don't install a CUDA driver in WSL2, the instructions explicitly tell that the CUDA driver should not be installed.):
            ...

            ANSWER

            Answered 2021-Nov-18 at 19:20

            Turns out that Windows 10 Update Assistant incorrectly reported it upgraded my OS to 21H2 on my laptop. Checking Windows version by running winver reports that my OS is still 21H1. Of course CUDA in WSL2 will not work in Windows 10 without 21H2.

            After successfully installing 21H2 I can confirm CUDA works with WSL2 even for laptops with Optimus NVIDIA cards.

            Source https://stackoverflow.com/questions/70011494

            QUESTION

            Efficiently iterating through a database row (libpqxx), assigning values to a struct
            Asked 2021-Nov-12 at 16:39

            I'm grabbing a row from a database using libpqxx and assigning the fields within the pqxx::row to a struct specifically designed to hold those values:

            ...

            ANSWER

            Answered 2021-Aug-24 at 14:18

            If all else fails, you can always go old school to avoid tedious and error prone repetition:

            Source https://stackoverflow.com/questions/68899042

            QUESTION

            Downloading large files using nodejs piped stream causes huge memory usage and OOM Error
            Asked 2021-Nov-08 at 13:32

            I am using node js to download large files(300MB) from a server and pipe the response to a file write stream. As far as I understand pipes in nodejs, the data flow is managed by node and I don't have to consider draining and other events. The issue I face is that the memory usage of the docker where my application is running increases in the same amount as the file being downloaded (i.e It seems the file is being saved in memory). This memory usage persists even when I delete the file in the docker. I am attaching the code used for creating request and piping, below for reference. The code is running fine but causing performance issues like huge memory/CPU usage and crashes with OOM error. I am not able to understand what I am doing wrong.

            ...

            ANSWER

            Answered 2021-Nov-08 at 13:32

            The problem is that you are using the requestretry package, which does not really support streaming. It does always call request with a callback and will provide a promise that is resolved with the full response. The request library will read the entire response body when such a callback is provided, which indeed does buffer the complete response in memory. This is not what you want.

            I don't see a way to do streaming-only with requestretry, so you should use the request package directly (or, given its deprecation, one of its successor libraries) and handle the retry logic yourself.

            Source https://stackoverflow.com/questions/69882436

            QUESTION

            Regex to find missing quote
            Asked 2021-Nov-06 at 19:20

            I need a perl regular expression to select content only if the content is missing either the begining quote or ending quote. The begining quote will always be precedded by an equal symbol =. The ending quote can be followed by a space, more text or carriage return. In one given line there can be many attributes (quote pairs) to check.

            I tried (? but that was a disaster. I thought maybe I could just do a simple regex find the equle symbol, look at next character and check if it's a quote followed by text and an end quote. But if there is no quote on the begining or end of the text add it.

            Things to note the text in between the quotes will always be character data. There will be no symbols or spaces.

            ...

            ANSWER

            Answered 2021-Oct-28 at 01:15

            Using a Branch Reset (?| ... ) (Perl) you can match informative forms
            and use a simple replacement.
            This will match one of the two missing forms.

            Source https://stackoverflow.com/questions/69560870

            QUESTION

            How can I run Python on my HP Prime graphing calculator?
            Asked 2021-Oct-04 at 16:34

            According to this firmware post, the HP Prime graphing calculator supports Python. However, I cannot find any guide as to how to run python files in the calculator (even within HP's own 700 page long user manual). Does anyone know how to execute these files?

            • For reference, I have HP Prime's connectivity kit (CK) installed, so I am somewhat able to transfer python code (by copy-pasting into CK's "Programs" section). However, I think it's reading it as Prime Programming Language instead, as it does not run.

            Edit: HP Prime has rebooted and now there is a Python app, allowing me to run some files. Unfortunately, I cannot access any Python libraries. That is, I can only run files that do not have "import _____" in them. This seems like a problem; anyone know how to resolve?

            Also a further problem is that the files are not actually saved in my calculator, as far as I can tell.

            ...

            ANSWER

            Answered 2021-Sep-08 at 06:44

            I couldn't really find a good source to read about Python support in this particular brand, but in general, graphing calculators have much more limited memory than personal computers, so they do not choose CPython or any of the heftier implementations of the Python language. They will instead use lightweight implementations like MicroPython or CircuitPython (not these ones exactly but maybe a derivation).

            These implementations don't have the full standard library of CPython and can have different modules particular to their intended contexts. There probably ARE some modules you can use, but without proper documentation it's hard to say which. It may go without saying but you are certainly restricted from downloading arbitrary Python libraries.

            Source https://stackoverflow.com/questions/69096752

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install firmware

            Do a checkout, recursively to get all the submodules:.
            cd firmware
            git submodule update --init (if needed?)
            brew install autogen
            virtualenv -p python3 ENV (Python > 3.5 is required)
            source ENV/bin/activate (or source ENV/bin/activate.csh based on shell preference)
            pip install -r requirements.txt
            cd unix; make setup && make; ./simulator.py
            cd ../cli; pip install --editable .
            cd ../stm32; make setup && make; make firmware-signed.dfu
            The resulting file, firmware-signed.dfu can be loaded directly onto a Coldcard, using this command (already installed based on above)
            ckcc upgrade firmware-signed.dfu

            Support

            Found a bug? Email: support@coinkite.com.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/Coldcard/firmware.git

          • CLI

            gh repo clone Coldcard/firmware

          • sshUrl

            git@github.com:Coldcard/firmware.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Reuse Pre-built Kits with firmware

            Consider Popular Cryptography Libraries

            dogecoin

            by dogecoin

            tink

            by google

            crypto-js

            by brix

            Ciphey

            by Ciphey

            libsodium

            by jedisct1

            Try Top Libraries by Coldcard

            ckcc-protocol

            by ColdcardPython

            ckbunker

            by ColdcardJavaScript

            wordlist-paper

            by ColdcardPython

            modcryptocurrency

            by ColdcardC

            psbt_faker

            by ColdcardPython