mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-04 18:31:41 +00:00
- **refactor: move session-related code to middleware package** - **refactor: update PKL build process and adjust related configurations** - **feat: integrate base.cosmos.v1 Genesis module** - **refactor: pass session context to modal rendering functions** - **refactor: move nebula package to app directory and update templ version** - **refactor: Move home section video view to dedicated directory** - **refactor: remove unused views file** - **refactor: move styles and UI components to global scope** - **refactor: Rename images.go to cdn.go** - **feat: Add Empty State Illustrations** - **refactor: Consolidate Vault Index Logic** - **fix: References to App.wasm and remove Vault Directory embedded CDN files** - **refactor: Move CDN types to Models** - **fix: Correct line numbers in templ error messages for arch_templ.go** - **refactor: use common types for peer roles** - **refactor: move common types and ORM to a shared package** - **fix: Config import dwn** - **refactor: move nebula directory to app** - **feat: Rebuild nebula** - **fix: correct file paths in panels templates** - **feat: Remove duplicate types** - **refactor: Move dwn to pkg/core** - **refactor: Binary Structure** - **feat: Introduce Crypto Pkg** - **fix: Broken Process Start** - **feat: Update pkg/* structure** - **feat: Refactor PKL Structure** - **build: update pkl build process** - **chore: Remove Empty Files** - **refactor: remove unused macaroon package** - **feat: Add WebAwesome Components** - **refactor: consolidate build and generation tasks into a single taskfile, remove redundant makefile targets** - **refactor: refactor server and move components to pkg/core/dwn** - **build: update go modules** - **refactor: move gateway logic into dedicated hway command** - **feat: Add KSS (Krawczyk-Song-Song) MPC cryptography module** - **feat: Implement MPC-based JWT signing and UCAN token generation** - **feat: add support for MPC-based JWT signing** - **feat: Implement MPC-based UCAN capabilities for smart accounts** - **feat: add address field to keyshareSource** - **feat: Add comprehensive MPC test suite for keyshares, UCAN tokens, and token attenuations** - **refactor: improve MPC keyshare management and signing process** - **feat: enhance MPC capability hierarchy documentation** - **refactor: rename GenerateKeyshares function to NewKeyshareSource for clarity** - **refactor: remove unused Ethereum address computation** - **feat: Add HasHandle and IsAuthenticated methods to HTTPContext** - **refactor: Add context.Context support to session HTTPContext** - **refactor: Resolve context interface conflicts in HTTPContext** - **feat: Add session ID context key and helper functions** - **feat: Update WebApp Page Rendering** - **refactor: Simplify context management by using single HTTPContext key** - **refactor: Simplify HTTPContext creation and context management in session middleware** - **refactor: refactor session middleware to use a single data structure** - **refactor: Simplify HTTPContext implementation and session data handling** - **refactor: Improve session context handling and prevent nil pointer errors** - **refactor: Improve session context handling with nil safety and type support** - **refactor: improve session data injection** - **feat: add full-screen modal component and update registration flow** - **chore: add .air.toml to .gitignore** - **feat: add Air to devbox and update dependencies**
133 lines
3.9 KiB
Go
Executable File
133 lines
3.9 KiB
Go
Executable File
//
|
|
// Copyright Coinbase, Inc. All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package mina
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/onsonr/sonr/pkg/crypto/core/curves/native/pasta/fq"
|
|
)
|
|
|
|
func TestNewKeys(t *testing.T) {
|
|
pk, sk, err := NewKeys()
|
|
require.NoError(t, err)
|
|
require.NotNil(t, sk)
|
|
require.NotNil(t, pk)
|
|
require.False(t, sk.value.IsZero())
|
|
require.False(t, pk.value.IsIdentity())
|
|
}
|
|
|
|
func TestSecretKeySignTransaction(t *testing.T) {
|
|
// See https://github.com/MinaProtocol/c-reference-signer/blob/master/reference_signer.c#L15
|
|
skValue := &fq.Fq{
|
|
0xca14d6eed923f6e3, 0x61185a1b5e29e6b2, 0xe26d38de9c30753b, 0x3fdf0efb0a5714,
|
|
}
|
|
sk := &SecretKey{value: skValue}
|
|
/*
|
|
This illustrates constructing and signing the following transaction.
|
|
amounts are in nanocodas.
|
|
{
|
|
"common": {
|
|
"fee": "3",
|
|
"fee_token": "1",
|
|
"fee_payer_pk": "B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg",
|
|
"nonce": "200",
|
|
"valid_until": "10000",
|
|
"memo": "E4Yq8cQXC1m9eCYL8mYtmfqfJ5cVdhZawrPQ6ahoAay1NDYfTi44K"
|
|
},
|
|
"body": [
|
|
"Payment",
|
|
{
|
|
"source_pk": "B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg",
|
|
"receiver_pk": "B62qrcFstkpqXww1EkSGrqMCwCNho86kuqBd4FrAAUsPxNKdiPzAUsy",
|
|
"token_id": "1",
|
|
"amount": "42"
|
|
}
|
|
]
|
|
}
|
|
*/
|
|
feePayerPk := new(PublicKey)
|
|
err := feePayerPk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
sourcePk := new(PublicKey)
|
|
err = sourcePk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
receiverPk := new(PublicKey)
|
|
err = receiverPk.ParseAddress("B62qrcFstkpqXww1EkSGrqMCwCNho86kuqBd4FrAAUsPxNKdiPzAUsy")
|
|
require.NoError(t, err)
|
|
txn := &Transaction{
|
|
Fee: 3,
|
|
FeeToken: 1,
|
|
Nonce: 200,
|
|
ValidUntil: 10000,
|
|
Memo: "this is a memo",
|
|
FeePayerPk: feePayerPk,
|
|
SourcePk: sourcePk,
|
|
ReceiverPk: receiverPk,
|
|
TokenId: 1,
|
|
Amount: 42,
|
|
Locked: false,
|
|
Tag: [3]bool{false, false, false},
|
|
NetworkId: MainNet,
|
|
}
|
|
sig, err := sk.SignTransaction(txn)
|
|
require.NoError(t, err)
|
|
pk := sk.GetPublicKey()
|
|
require.NoError(t, pk.VerifyTransaction(sig, txn))
|
|
}
|
|
|
|
func TestSecretKeySignMessage(t *testing.T) {
|
|
// See https://github.com/MinaProtocol/c-reference-signer/blob/master/reference_signer.c#L15
|
|
skValue := &fq.Fq{
|
|
0xca14d6eed923f6e3, 0x61185a1b5e29e6b2, 0xe26d38de9c30753b, 0x3fdf0efb0a5714,
|
|
}
|
|
sk := &SecretKey{value: skValue}
|
|
sig, err := sk.SignMessage("A test message.")
|
|
require.NoError(t, err)
|
|
pk := sk.GetPublicKey()
|
|
require.NoError(t, pk.VerifyMessage(sig, "A test message."))
|
|
}
|
|
|
|
func TestSecretKeySignTransactionStaking(t *testing.T) {
|
|
// https://github.com/MinaProtocol/c-reference-signer/blob/master/reference_signer.c#L128
|
|
skValue := &fq.Fq{
|
|
0xca14d6eed923f6e3, 0x61185a1b5e29e6b2, 0xe26d38de9c30753b, 0x3fdf0efb0a5714,
|
|
}
|
|
sk := &SecretKey{value: skValue}
|
|
|
|
feePayerPk := new(PublicKey)
|
|
err := feePayerPk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
sourcePk := new(PublicKey)
|
|
err = sourcePk.ParseAddress("B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg")
|
|
require.NoError(t, err)
|
|
receiverPk := new(PublicKey)
|
|
err = receiverPk.ParseAddress("B62qkfHpLpELqpMK6ZvUTJ5wRqKDRF3UHyJ4Kv3FU79Sgs4qpBnx5RR")
|
|
require.NoError(t, err)
|
|
txn := &Transaction{
|
|
Fee: 3,
|
|
FeeToken: 1,
|
|
Nonce: 10,
|
|
ValidUntil: 4000,
|
|
Memo: "more delegates more fun",
|
|
FeePayerPk: feePayerPk,
|
|
SourcePk: sourcePk,
|
|
ReceiverPk: receiverPk,
|
|
TokenId: 1,
|
|
Amount: 0,
|
|
Locked: false,
|
|
Tag: [3]bool{false, false, true},
|
|
NetworkId: MainNet,
|
|
}
|
|
sig, err := sk.SignTransaction(txn)
|
|
require.NoError(t, err)
|
|
pk := sk.GetPublicKey()
|
|
require.NoError(t, pk.VerifyTransaction(sig, txn))
|
|
}
|