From 7ba67519fa454ed18c9eb737ea7d4b6519322376 Mon Sep 17 00:00:00 2001 From: Kurdistan Tech Ministry Date: Mon, 2 Feb 2026 04:55:24 +0300 Subject: [PATCH] chore: clean up repo - remove broken workflows, update README - Remove workflows requiring unavailable secrets - Add simple CI workflow for build and test - Write clean README with usage examples - Prepare for dev branch --- .github/workflows/auto-approve.yml | 16 ------ .github/workflows/auto-merge.yml | 16 ------ .github/workflows/ci.yml | 48 ++++++++++++++++++ .github/workflows/lock.yml | 25 ---------- .github/workflows/pr-any.yml | 30 ------------ .github/workflows/push-master.yml | 36 -------------- README.md | 78 ++++++++++++++++++++++++++---- 7 files changed, 117 insertions(+), 132 deletions(-) delete mode 100644 .github/workflows/auto-approve.yml delete mode 100644 .github/workflows/auto-merge.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/lock.yml delete mode 100644 .github/workflows/pr-any.yml delete mode 100644 .github/workflows/push-master.yml diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml deleted file mode 100644 index 4bddd15..0000000 --- a/.github/workflows/auto-approve.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: bot - -on: - pull_request: - types: [labeled] - -jobs: - approve: - if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)" - runs-on: ubuntu-latest - steps: - - uses: jacogr/action-approve@795afd1dd096a2071d7ec98740661af4e853b7da - with: - authors: jacogr, TarikGul, valentinfernandez1 - labels: -auto - token: ${{ secrets.GH_PAT_BOT }} diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml deleted file mode 100644 index caf5da1..0000000 --- a/.github/workflows/auto-merge.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: bot - -on: - pull_request: - types: [labeled] - -jobs: - merge: - runs-on: ubuntu-latest - steps: - - uses: jacogr/action-merge@d2d64b4545acd93b0a9575177d3d215ae3f92029 - with: - checks: pr (build),pr (lint),pr (test) - labels: -auto - strategy: squash - token: ${{ secrets.GH_PAT_BOT }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..42be210 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,48 @@ +name: CI + +on: + push: + branches: [master, dev] + pull_request: + branches: [master] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + + - name: Install dependencies + run: yarn install --immutable + + - name: Build JavaScript + run: yarn build:js + + - name: Lint + run: yarn lint + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + + - name: Setup Rust + uses: dtolnay/rust-action@stable + + - name: Install dependencies + run: yarn install --immutable + + - name: Run Rust tests + run: yarn test:wasm-crypto:rust diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml deleted file mode 100644 index 60c94ee..0000000 --- a/.github/workflows/lock.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: 'Lock Threads' - -on: - schedule: - - cron: '20 1/3 * * *' - -jobs: - lock: - runs-on: ubuntu-latest - env: - YARN_ENABLE_SCRIPTS: false - steps: - - uses: dessant/lock-threads@c1b35aecc5cdb1a34539d14196df55838bb2f836 - with: - github-token: ${{ secrets.GH_PAT_BOT }} - issue-inactive-days: '7' - issue-comment: > - This thread has been automatically locked since there has not been - any recent activity after it was closed. Please open a new issue - if you think you have a related problem or query. - pr-inactive-days: '2' - pr-comment: > - This pull request has been automatically locked since there - has not been any recent activity after it was closed. - Please open a new issue for related bugs. diff --git a/.github/workflows/pr-any.yml b/.github/workflows/pr-any.yml deleted file mode 100644 index 89cb198..0000000 --- a/.github/workflows/pr-any.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: PR -on: [pull_request] - -jobs: - pr: - continue-on-error: true - strategy: - matrix: - step: ['lint', 'test', 'build', 'deno'] - runs-on: ubuntu-latest - env: - YARN_ENABLE_SCRIPTS: false - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 'lts/*' - - uses: denoland/setup-deno@v1 - with: - deno-version: v1.42.x - - name: ${{ matrix.step }} - if: always() - continue-on-error: true - run: | - yarn install --immutable - if [ "${{ matrix.step }}" != "lint" ]; then - ./scripts/install-build-deps.sh - fi - yarn polkadot-dev-deno-map - yarn ${{ matrix.step }} diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml deleted file mode 100644 index 407ac95..0000000 --- a/.github/workflows/push-master.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Master -on: - push: - branches: - - master - -jobs: - master: - if: "! startsWith(github.event.head_commit.message, '[CI Skip]')" - strategy: - matrix: - step: ['build:release'] - runs-on: ubuntu-latest - env: - YARN_ENABLE_SCRIPTS: false - CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} - GH_PAT: ${{ secrets.GH_PAT_BOT }} - GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT_BOT }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.GH_PAT_BOT }} - ref: ${{ github.ref }} - - uses: actions/setup-node@v4 - with: - node-version: 'lts/*' - - name: Set Execute Permissions - run: chmod +x ./scripts/* - - name: Run Install Build Deps - run: bash ./scripts/install-build-deps.sh - - name: build - run: | - yarn install --immutable - yarn ${{ matrix.step }} diff --git a/README.md b/README.md index 2c0d30a..673e83f 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,77 @@ -# @pezkuwi/wasm +# @pezkuwi/wasm-crypto -Various WASM wrappers around Rust crates +WASM cryptographic primitives for PezkuwiChain. -## overview +## Overview -It is split up into a number of internal packages, namely utilities - +This package provides WebAssembly-based cryptographic functions used by PezkuwiChain applications, including: -- [wasm-crypto](packages/wasm-crypto/) Various hashing functions, sr25519 & ed25519 crypto +- **SR25519** - Schnorr signatures with Ristretto point compression (bizinikiwi signing context) +- **ED25519** - Edwards-curve Digital Signature Algorithm +- **BIP39** - Mnemonic code for generating deterministic keys +- **Hashing** - Blake2b, SHA256, SHA512, Keccak, XXHash, Scrypt, PBKDF2 -These are split from the `pezkuwi/util` repo where it is heavily used as part of `@pezkuwi/util-crypto`. (There JS fallbacks are available for some interfaces, e.g. hashing, but for sr25519 WASM is the only interface). Since these don't undergo massive changes on a daily basis and has a build overhead (WASM compilation & optimisation), it is better managed as a seperate repo with a specific CI configuration. +## Installation -## development +```bash +npm install @pezkuwi/wasm-crypto +# or +yarn add @pezkuwi/wasm-crypto +``` -Contributions are welcome! +## Usage -To start off, this repo (along with others in the [@pezkuwichain](https://github.com/pezkuwichain/) family) uses yarn workspaces to organise the code. As such, after cloning, its dependencies _should_ be installed via `yarn`, not via npm; the latter will result in broken dependencies. +```javascript +import { waitReady, sr25519KeypairFromSeed, sr25519Sign } from '@pezkuwi/wasm-crypto'; + +// Initialize WASM +await waitReady(); + +// Generate keypair from seed +const seed = new Uint8Array(32); // your seed here +const keypair = sr25519KeypairFromSeed(seed); + +// Sign a message +const publicKey = keypair.slice(64); +const secretKey = keypair.slice(0, 64); +const message = new TextEncoder().encode('Hello PezkuwiChain!'); +const signature = sr25519Sign(publicKey, secretKey, message); +``` + +## Packages + +| Package | Description | +|---------|-------------| +| `@pezkuwi/wasm-crypto` | Main package with all crypto functions | +| `@pezkuwi/wasm-crypto-wasm` | Compiled WASM binary | +| `@pezkuwi/wasm-crypto-asmjs` | ASM.js fallback for older browsers | +| `@pezkuwi/wasm-crypto-init` | Initialization helpers | +| `@pezkuwi/wasm-bridge` | WASM bridge utilities | +| `@pezkuwi/wasm-util` | Utility functions | + +## Building from Source + +```bash +# Install dependencies +yarn install + +# Build WASM and JavaScript +yarn build + +# Run tests +yarn test +``` + +### Prerequisites + +- Node.js 18+ +- Rust toolchain (for WASM compilation) +- wasm-pack + +## Signing Context + +This package uses **bizinikiwi** as the SR25519 signing context, which is unique to PezkuwiChain. This ensures signature incompatibility with other networks for security. + +## License + +Apache-2.0