Pull-mirror of github.com/Sulkta-Coop/pallas. Canonical lives on GitHub; this is a LAN-fast read-only cache.
Find a file
Nicolas Di Prima 46197734a2
Merge pull request from GHSA-wr2p-64gm-8x2c
This allowed users to create invalid Ed25519 Extended Secret Keys
with potentially cryptographically weak ECDSA Signatures.

However we still allow to have an _unsafe_ version to construct
a `SecretKeyExtended` from bytes without performing checks.
This is in order to allow a compatibility path without breaking
codes too much.

allow the direct conversion from XPrv from ed25519_bip32 crates to pallas-crypto's SecretKeyExtended without performing the bit tweaks check

While it is unsafe to call the SecretKeyExtended::from_bytes_unchecked
(unsafe in the cryptographic sense, not in the rust memory management
sense) we know this is going to be okay because the XPrv was already
safely created.

We previously removed the direct conversion of byte arrays into SecretKeyExtended

This has been replaced with a `TryFrom` and a `from_bytes() -> Result<Self>` function.
This allows us to perform the recovery of the wrapped private keys
without losing the security of performing the checks of the validity
of the Ed25519 Extended structure.

This should be safe to use and shouldn't make incompatibilities
because the Xprv was already checked for bit tweaks previously
in the flow.

add unsafe functions to leak the content of the SecretKey or SecretKeyExtended

Remove the From implementation to convert Secret Keys into Bytes

Instead prefer the explicit unsafe functions to leak the content of the keys

temporarily remove the public access of the as_bytes function

this is to prevent leaking the bytes of the private keys.
2024-06-01 07:32:32 -03:00
.chglog docs: Add retroactive change log 2022-04-29 20:34:12 -03:00
.github fix(network): add missing rt feature for tokio 2023-11-20 21:48:43 -03:00
assets chore: Add logo assets 2022-02-06 21:36:42 -03:00
examples feat(traverse): Decode Conway block headers properly (#466) 2024-05-24 17:25:24 -03:00
pallas chore: split unstable features into independent flags (#469) 2024-05-27 18:42:22 -03:00
pallas-addresses Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-applying Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-bech32 fix: add missing READMEs for crate publish 2024-01-04 11:58:28 -03:00
pallas-codec Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-configs Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-crypto Merge pull request from GHSA-wr2p-64gm-8x2c 2024-06-01 07:32:32 -03:00
pallas-hardano Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-network fix(network): expose missing members in facades (#468) 2024-05-26 13:23:20 -03:00
pallas-primitives Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-rolldb Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-traverse feat(traverse): Decode Conway block headers properly (#466) 2024-05-24 17:25:24 -03:00
pallas-txbuilder Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-utxorpc Release 0.26.0 2024-05-21 08:32:18 -03:00
pallas-wallet Merge pull request from GHSA-wr2p-64gm-8x2c 2024-06-01 07:32:32 -03:00
test_data fix(primitives): handle conway extreme param updates (#462) 2024-05-21 08:29:09 -03:00
.gitignore feat(network): update n2n handshake versions & add keepalive miniprotocol (#362) 2023-12-19 07:56:10 -03:00
Cargo.toml feat: add a simple Crawler example (#453) 2024-05-08 20:11:13 -03:00
CHANGELOG.md Release 0.25.0 2024-04-02 09:50:58 -03:00
LICENSE Fill in place holders 2021-12-02 19:55:54 -03:00
README.md docs(network): Add chain-sync client docs (#252) 2023-04-15 13:56:52 -03:00
rustfmt.toml Implement multiplexer and mini-protocols PoC 2021-11-20 11:33:45 -03:00
SECURITY.md docs: define security policy (#464) 2024-05-22 10:53:39 -03:00

Pallas Logo Pallas Logo

Rust-native building blocks for the Cardano blockchain ecosystem

GitHub Crates.io GitHub Workflow Status

Introduction

Pallas is an expanding collection of modules that re-implements common Ouroboros / Cardano logic in native Rust. This crate doesn't provide any particular application, it is meant to be used as a base layer to facilitate the development of higher-level use-cases, such as explorers, wallets, etc (who knows, maybe even a full node in a far away future).

Unboxing

The repository is organized as a Cargo workspace. Each Pallas "building block" lives in its own crate. The root pallas crate serves as an all-in-one dependency that re-exports all of the other modules in an hierarchically organized fashion, using Cargo features to tailor the setup for each use-case.

As already explained, Pallas aims at being an expanding set of components. The following tables describe the currently available crates, as well as the planned ones.

Ouroboros Network

Crates Description
pallas-network Network stack providing a multiplexer and mini-protocol implementations

Ouroboros Consensus

Crates Description
pallas-leadership Implementation of the slot leadership selection algorithm
pallas-selection Implementation of the consensus chain-selection algorithm

Cardano Ledger

Crates Description
pallas-primitives Ledger primitives and cbor codec for the different Cardano eras
pallas-traverse Utilities to traverse over multi-era block data
pallas-addresses Encode / decode Cardano addresses of any type
pallas-ticking Time passage implementation for consensus algorithm
pallas-applying Logic for validating and applying new blocks and txs to the chain state
pallas-forecasting Ledger forecasting algorithm to be used by the consensus layer

Shared

Crates Description
pallas-crypto Shared Cryptographic primitives
pallas-codec Shared CBOR encoding / decoding using minicbor lib

Etymology

Pallas: (Greek mythology) goddess of wisdom and useful arts and prudent warfare;