Skip to content

Commit

Permalink
feat: generate c509 certificate + Extensions msg fields (#518)
Browse files Browse the repository at this point in the history
* feat: setup c509 lib

* fix: update toml file

* feat: add earthfile

* fix: remove blank line

* docs: Add CatalystDataGatewayRepository docs (#388)

* test: Fix tests after cat-gateway update.

* docs: Add `CatalystDataGatewayRepository` usage examples.

* docs: Move docs from README to code comment.

* test: Update `CatalystDataGatewayRepository` tests.

* test: Use Fake instead of Mock.

* chore: Fix Markdown errors.

* chore: Explicit use of `HttpStatus` codes.

* adds one more worker and compression for catgateway logs (#400)

* feat: Collect flutter code coverage (#404)

* test: Fix tests after cat-gateway update.

* docs: Add `CatalystDataGatewayRepository` usage examples.

* docs: Move docs from README to code comment.

* test: Update `CatalystDataGatewayRepository` tests.

* test: Use Fake instead of Mock.

* chore: Fix Markdown errors.

* chore: Explicit use of `HttpStatus` codes.

* chore(deps-dev): bump vite in /utilities/wallet-tester (#397)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.1.6 to 5.1.7.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.1.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.1.7/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Apisit Ritreungroj <[email protected]>

* feat: Get slot number by provided date-time endpoint (#387)

* fix CardanoStakeAddress error handling

* refactor, add sync_state_get endpoint

* refactor types

* refactor

* add block_hash validation

* wip

* wip

* wip

* wip

* add check_network fn

* fix

* fix schematisis test

* try

* wip

* try

* try

* try

* try

* wip

* try

* try

* fix

* update Network

* add test_utxo test

* try

* fix

* try

* fix

* wip

* fix

* fix docket-compose.yml file

* try

* try

* fix

* try

* try

* try

* try

* wip

* fix

* wip

* try

* try

* wip

* try

* try

* revert

* wip

* wip

* wip

* fix

* fix

* fix

* remove mithril_snapshot loader

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* add stake addr bech32 encode utils function

* wip

* wip

* update indexing of the utxo data

* fix spelling

* wip

* wip

* finish utxo test

* fix deny

* fix check

* fix

* fix

* update earthly builder versions

* wip

* ignore test_utxo.py in CI

* dont ignore tests

* add date_time_to_slot_number_get endpoint

* add sql queries

* fix

* update slot info, fix follower indexing block time issue

* add previous slot info field

* fix

* refactor

* fix sync_state_get

* wip

* fix check

* try

* fix

* finish slot_info test, fix queries

* fix

* cleanup

* wip

* wip

* wip

* feat: RBAC Documentation Drafting (#332)

* chore: wip

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* Update 0005-flutter-app.md

* docs(docs): Use latest docs builders and fix concepts page

* docs(cips): Start drafting the CIPS for milestone 2

* docs(cips): More text for RBAC metadata draft

* docs(cips): WIP updates to draft cip for role registration

* docs(cips): define draft specification for a ULID cbor tag

* docs(cips): Further WIP edits to RBAC

* docs(cips): fix ulid spec binary encoding reference

* docs(cips): Add a tag to the epoch time.

* docs(cips): Add CBOR tag cip for ED25519-BIP32 Keys, Derivation paths and Signatures

* docs(cips): Properly define the field tags to use where known, and clean up Stake Address specification.

* docs(cips): Fix nonce so its reliable without needing blockchain data

* docs(cips): updates

* docs(docs): Add CDDL definition for POC x509 envelope metadata

* fix(vscode): update vscode extension recommendations

* docs(cips): rbac x509 envelope fix

* docs(cips): wip updates to high level docs

* docs(cips): Add overview of cardano transaction processign and data

* docs(cips): update cardano block to be complete for clarity

* docs(cips): fix layout engine

* docs(cips): wip cddl for envelope metadata

* docs(cips): Add cddl specs and diagrams for x509 rbac registration work

* docs(cips): Add full transaction/metadata relationship diagram

* refactor(cips): reorganize documentation ready for drafting descriptive prose about the formats and uses

* docs(cips): add cip draft for catalyst roles using the x509-rbac standard

* docs(cips): Add c509 cddl with restrictions and enhancements for plutus usage

* docs(cips): Metadata envelope specification draft complete

* Update docs/src/catalyst-standards/draft-cips/c509-plutus-restricted-certificate/c509-cert-plutus-restricted.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/c509-plutus-restricted-certificate/c509-cert-plutus-restricted.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/x509-role-registration-metadata/x509-roles.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/x509-role-registration-metadata/x509-roles.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/x509-envelope-metadata/x509-envelope.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/x509-envelope-metadata/x509-envelope.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/x509-envelope-metadata/x509-envelope.cddl

Co-authored-by: bkioshn <[email protected]>

* Update docs/src/catalyst-standards/draft-cips/c509-plutus-restricted-certificate/c509-cert-plutus-restricted.cddl

Co-authored-by: bkioshn <[email protected]>

* docs(cips): Fix time and algorithm comments

* build(frontend): Relax flutter/dart version requirements to last minor release

* docs(cips): wip

* fix(cips): rename draft x509 envelope CIP so its easier to identify

* docs(cips): WIP updates to x509 roles

* fix(cips): rename RBAC definition CIP draft so its easier to identify

* docs(cips): x509 certificate registration format fully defined

* docs(cips): Document the restricted plutus subset.

* docs(cips): Add document detailing how CIP-30 is used to sign the transaction

* fix(cips): remove trailing spaces

* fix(cips): Fix line lengths

* fix(cips): Correct spelling

* fix(cips): spelling

* fix(frontend): revert changes to flutter/dart versions

* fix(frontend): more flutter/dart version corrections

* fix(frontend): Revert flutter files to same as main branch

* fix(frontend): revert more flutter .yml files to those in main

* fix(cips): Fix links between files

* docs(cips): Add catalyst specific role registration documentation

* docs(spelling): fix spelling

---------

Co-authored-by: minikin <[email protected]>
Co-authored-by: bkioshn <[email protected]>

* ci: configure static analysis & code formatting check

* style: formatting

* fix: revert browser installation scripts

* style: format code

* ci: optimize directions include in repo-catalyst-voices-all artifact to include only needed ones

* refactor: remove empty tests

* ci: add melos script to generate test reports

* ci: melos script to generate test report

* style: revert previously generated files formatting

* style: format files

* ci: update melos to exclude generated code form code coverage

* ci: cleanup build script

* ci: generate multiple junit test reports and save them at /test_reports

* ci: depend on melos analyze instead of custom command

* docs: improve melos docs

* ci: remove unused melos scripts

* ci: format files in test & integration_test directories

* ci: break code to make sure CI will report failure for demonstration purposes

* style: fix lint issues

* ci: change WORKDIR after creating the user to make sure it will be owned by that user

* ci: restore root user

* Revert "Merge branch 'main' into feat/collect-flutter-code-coverage"

This reverts commit d0f66b2, reversing
changes made to 39ce401.

* style: format code

* ci: revert test-unit target name

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Lucio Baglione <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Apisit Ritreungroj <[email protected]>
Co-authored-by: Alex Pozhylenkov <[email protected]>
Co-authored-by: Steven Johnson <[email protected]>
Co-authored-by: minikin <[email protected]>
Co-authored-by: bkioshn <[email protected]>

* refactor: update schema_validation check (#414)

* update schema_validation check

* wip

* fix

* fix: update wasm testing

* fix: remove clippy toml

* fix: update cargo toml

* fix: spelling

* fix: revert test report

* chore: add comment

* chore: update message

* fix: update cargo.toml

* chore: fix format

* fix: linter

* fix: update cargo toml

* fix: update cargo toml

* fix: update project dic

* fix: remove wasm-pack install

* feat: add config

* fix: earthly  for c509

* feat: add regex dependency

* feat: implement c509 type name

* fix: clean up lib.rs

* fix: add c509 cert module

* feat: add x690 der

* feat: wip TLV extract value

* chore: add comment on TLV length

* fix (wip): update der parser

* fix (wip): update der parser

* fix (wip): update der parser

* fix (wip): update der parser

* fix (wip): dependencies

* feat(wip): add c509 enum

* feat(wip): add cbor encode helper

* feat(wip): add c509 cert helper

* fix(wip): modify lib

* feat(wip): add subject public key encoder

* fix: add thiserror

* fix: cbor encode biguint and type name

* fix: cbor encode time

* fix: cleanup

* fix: add oid crate

* feat: add extensions

* feat: add alt name

* chore: remove fixme

* fix: clean up c509 enum

* fix: rewrite cbor encoder

* fix: move c509 crate folder

* feat: add gitignore

* fix: cargo toml

* fix: cbor encoder

* fix: remove der encoding

* feat: add eid encoder

* fix: ssp encoder

* feat: create genc509cert function

* feat: add sigalgo registry

* fix: altname type visibility

* fix: altname encoder

* feat: add extension encoding func

* fix: lib.rs

* fix: gen c509 function

* fix: cbor encoder

* fix: alt name

* fix: extensions

* docs: update c509 docs

* fix: name

* chore: remove unnecessary comments

* fix: macro definitions location

* fix: earthly version and cspell

* fix: update rust config file to match cat-ci stdcfg

* fix: macro definitions location

* feat: add oid encode/decode

* fix: naming and test

* fix: naming

* fix: implement encode and decode trait

* fix: test

* feat: add OID PEN encode and decode

* fix: merge

* fix: merge

* wip

* fix: pen decode and encode

* fix: rewrite PEN encode and decode

* chore: add comments

* fix: update c509 extensions

* fix: add once cell

* fix: oid registry and oid extension implementation

* fix (wip): extension value encoding

* fix: value encode and test

* fix: add decode extension

* fix: extension decode value

* fix: delete files

* fix(wip): handle extensions

* fix: disable extensions encode and decode

* fix: cargo toml and add num-derive

* fix(wip): refactor tables

* feat(wip): add encode decode general name

* fix: name and type

* fix(wip): decode and encode generalnames

* fix(wip): gn value encode decode

* fix: remove unused crate

* fix: gns encode and decode

* fix: remove unused table

* fix: oid lifetime to static

* fix: create extensions mod

* fix: general name visibility

* feat: add alt name

* feat: add alternative name encode and decode

* fix: minor fixes + cleanup

* chore: use super in test

* fix: remove unused ctx type C

* fix(wip): extensions

* feat: add strum crate

* fix: tables

* fix: extensions

* fix: general name

* fix: table

* fix: alt name

* fix: extensions

* fix: refactor

* feat(wip): add eid

* chore: spelling

* chore: spelling

* chore: revert back to main

* chore: restore file in main

* fix: update rust stdconfig and earthfile

* fix: earthfile

* fix: earthfile

* fix: earthfile

* fix: wrong earthfile

* fix: doc link

* Update catalyst-gateway-crates/c509-certificate/src/c509_extensions/mod.rs

Co-authored-by: Apisit Ritreungroj <[email protected]>

* Update catalyst-gateway-crates/c509-certificate/src/c509_extensions/mod.rs

Co-authored-by: Apisit Ritreungroj <[email protected]>

* bump cat-ci

* bump deny.toml

* fix fmt

* fix machete

* fix

* fix: minor fix and update doc

* chore: code format

* bump cat-ci

* update build

* fix: doc

* test: new cliipy ci fix

* test: new cliipy ci fix fix cargo toml

* fix: orphan module

* fix: remove EID

* fix: comment out wasm pack build

* fix: add chaining

* fix: linter

* fix: PR comment

* fix: move code section

* chore: fix name and comment

* fix: format

* test: add zero extensions

* fix: format

* fix: gn type naming

* chore: remove unused file

* test: add test case for multiples gn type

* fix: dns gn decode special case

* fix: format

* fix: data tables

* fix: alt name test case

* fix: cspell

* fix: table functions

* fix: format

* chore: fix test comment

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Lucio Baglione <[email protected]>
Co-authored-by: Stefano Cunego <[email protected]>
Co-authored-by: Dominik Toton <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Apisit Ritreungroj <[email protected]>
Co-authored-by: Alex Pozhylenkov <[email protected]>
Co-authored-by: Steven Johnson <[email protected]>
Co-authored-by: minikin <[email protected]>
Co-authored-by: Steven Johnson <[email protected]>
  • Loading branch information
10 people authored Jul 10, 2024
1 parent 32ed8a1 commit 35f8325
Show file tree
Hide file tree
Showing 22 changed files with 2,275 additions and 1 deletion.
10 changes: 10 additions & 0 deletions .config/dictionaries/project.dic
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ addrr
adminer
afinet
androidx
anypolicy
appspot
Arissara
Arbritrary
ARGB
asmjs
Expand All @@ -16,6 +18,8 @@ autorecalculates
autoresizing
backendpython
bech
bimap
bindgen
bkioshn
bluefireteam
BROTLI
Expand All @@ -25,7 +29,9 @@ Catalyst
CBOR
cborg
CEST
cdylib
cfbundle
Chotivichit
chromedriver
chrono
ciphertext
Expand Down Expand Up @@ -116,6 +122,7 @@ metadatums
metamap
mgrybyk
miniaturizable
minicbor
mithril
mitigations
moderations
Expand All @@ -130,6 +137,7 @@ NDEBUG
netifas
netkey
nextest
OCSP
Oleksandr
onboarded
oneshot
Expand All @@ -144,6 +152,7 @@ plpgsql
podfile
podhelper
postcss
Precertificate
preprod
projectcatalyst
Prokhorenko
Expand All @@ -167,6 +176,7 @@ rustc
rustdoc
rustdocflags
rustflags
rustfmt
rustls
rxdart
saibatizoku
Expand Down
93 changes: 93 additions & 0 deletions catalyst-gateway-crates/c509-certificate/.cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Use MOLD linker where possible, but ONLY in CI applicable targets.

# Configure how Docker container targets build.

# If you want to customize these targets for a local build, then customize them in your:
# $CARGO_HOME/config.toml
# NOT in the project itself.
# These targets are ONLY the targets used by CI and inside docker builds.

# DO NOT remove `"-C", "target-feature=+crt-static"` from the rustflags for these targets.

# Should be the default to have fully static rust programs in CI
[target.x86_64-unknown-linux-musl]
linker = "clang"
rustflags = [
"-C", "link-arg=-fuse-ld=/usr/bin/mold",
"-C", "target-feature=-crt-static"
]

# Should be the default to have fully static rust programs in CI
[target.aarch64-unknown-linux-musl]
linker = "clang"
rustflags = [
"-C", "link-arg=-fuse-ld=/usr/bin/mold",
"-C", "target-feature=-crt-static"
]

[build]
rustflags = []
rustdocflags = [
"--enable-index-page",
"-Z",
"unstable-options",
]

[profile.dev]
opt-level = 1
debug = true
debug-assertions = true
overflow-checks = true
lto = false
panic = "unwind"
incremental = true
codegen-units = 256

[profile.release]
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
lto = "thin"
panic = "unwind"
incremental = false
codegen-units = 16

[profile.test]
opt-level = 3
debug = true
lto = false
debug-assertions = true
incremental = true
codegen-units = 256

[profile.bench]
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
lto = "thin"
incremental = false
codegen-units = 16

[alias]
lint = "clippy --all-targets"
lintfix = "clippy --all-targets --fix --allow-dirty"
lint-vscode = "clippy --message-format=json-diagnostic-rendered-ansi --all-targets"

docs = "doc --release --no-deps --document-private-items --bins --lib --examples"
# nightly docs build broken... when they are'nt we can enable these docs... --unit-graph --timings=html,json -Z unstable-options"
testunit = "nextest run --release --bins --lib --tests --benches --no-fail-fast -P ci"
testcov = "llvm-cov nextest --release --bins --lib --tests --benches --no-fail-fast -P ci"
testdocs = "test --doc --release"

# Rust formatting, MUST be run with +nightly
fmtchk = "fmt -- --check -v --color=always"
fmtfix = "fmt -- -v"

[term]
quiet = false # whether cargo output is quiet
verbose = false # whether cargo provides verbose output
color = "auto" # whether cargo colorizes output use `CARGO_TERM_COLOR="off"` to disable.
progress.when = "never" # whether cargo shows progress bar
progress.width = 80 # width of progress bar
49 changes: 49 additions & 0 deletions catalyst-gateway-crates/c509-certificate/.config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# cspell: words scrollability testcase
[store]
# The directory under the workspace root at which nextest-related files are
# written. Profile-specific storage is currently written to dir/<profile-name>.
# dir = "target/nextest"

[profile.default]
# Print out output for failing tests as soon as they fail, and also at the end
# of the run (for easy scrollability).
failure-output = "immediate-final"

# Do not cancel the test run on the first failure.
fail-fast = true

status-level = "all"
final-status-level = "all"

[profile.ci]
# Print out output for failing tests as soon as they fail, and also at the end
# of the run (for easy scrollability).
failure-output = "immediate-final"
# Do not cancel the test run on the first failure.
fail-fast = false

status-level = "all"
final-status-level = "all"


[profile.ci.junit]
# Output a JUnit report into the given file inside 'store.dir/<profile-name>'.
# If unspecified, JUnit is not written out.

path = "junit.xml"

# The name of the top-level "report" element in JUnit report. If aggregating
# reports across different test runs, it may be useful to provide separate names
# for each report.
report-name = "nextest"

# Whether standard output and standard error for passing tests should be stored in the JUnit report.
# Output is stored in the <system-out> and <system-err> elements of the <testcase> element.
store-success-output = true

# Whether standard output and standard error for failing tests should be stored in the JUnit report.
# Output is stored in the <system-out> and <system-err> elements of the <testcase> element.
#
# Note that if a description can be extracted from the output, it is always stored in the
# <description> element.
store-failure-output = true
11 changes: 11 additions & 0 deletions catalyst-gateway-crates/c509-certificate/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
### Rust ###
# Generated by Cargo
# will have compiled files and executables
debug/
target/

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
62 changes: 62 additions & 0 deletions catalyst-gateway-crates/c509-certificate/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
[package]
name = "c509-certificate"
description = "c509 certificate implementation"
keywords = ["cardano", "catalyst", "c509 certificate", "certificate", "x509"]
version = "0.0.1"
authors = [
"Arissara Chotivichit <[email protected]>"
]
homepage = "https://input-output-hk.github.io/catalyst-voices"
repository = "https://github.com/input-output-hk/catalyst-voices"
license = "MIT OR Apache-2.0"
edition = "2021"

[lints.rust]
warnings = "deny"
missing_docs = "deny"
let_underscore_drop = "deny"
non_ascii_idents = "deny"
single_use_lifetimes = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"

[lints.rustdoc]
broken_intra_doc_links = "deny"
invalid_codeblock_attributes = "deny"
invalid_html_tags = "deny"
invalid_rust_codeblocks = "deny"
bare_urls = "deny"
unescaped_backticks = "deny"

[lints.clippy]
pedantic = { level = "deny", priority = -1 }
unwrap_used = "deny"
expect_used = "deny"
exit = "deny"
get_unwrap = "deny"
index_refutable_slice = "deny"
indexing_slicing = "deny"
match_on_vec_items = "deny"
match_wild_err_arm = "deny"
missing_panics_doc = "deny"
panic = "deny"
string_slice = "deny"
unchecked_duration_subtraction = "deny"
unreachable = "deny"
missing_docs_in_private_items = "deny"

[dependencies]
wasm-bindgen = "0.2"
minicbor = { version = "0.24", features = ["std"] }
hex = "0.4.3"
oid = "0.2.1"
oid-registry = "0.7.0"
asn1-rs = "0.6.0"
anyhow = "1.0.86"
bimap = "0.6.3"
once_cell = "1.19.0"
strum = "0.26.3"
strum_macros = "0.26.3"

[package.metadata.cargo-machete]
ignored = ["strum"]
35 changes: 35 additions & 0 deletions catalyst-gateway-crates/c509-certificate/Earthfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
VERSION 0.8

IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:v3.1.15 AS rust-ci

# builder : Set up our target toolchains, and copy our files.
builder:
DO rust-ci+SETUP

COPY --dir .cargo .config Cargo.* clippy.toml deny.toml rustfmt.toml src .


check:
FROM +builder

DO rust-ci+EXECUTE --cmd="/scripts/std_checks.py"

build:
FROM +builder

DO rust-ci+EXECUTE \
--cmd="/scripts/std_build.py" \
--args1="--libs=c509-certificate"

# RUN wasm-pack build --target web

package:
FROM +build

# AS LOCAL is for local testing only, will be removed in the future
SAVE ARTIFACT ./pkg c509-certificate-binding

# # local-build: Build the service and save it locally
# local-build:
# FROM +build
# SAVE ARTIFACT c509-certificate-binding AS LOCAL ./pkg
1 change: 1 addition & 0 deletions catalyst-gateway-crates/c509-certificate/clippy.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
allow-expect-in-tests = true
Loading

0 comments on commit 35f8325

Please sign in to comment.