@distrohelena/canton-typescript-sdk 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -207,38 +207,29 @@ EOF
207
207
  fi
208
208
  fi
209
209
 
210
- cat > "$tls_fragment_file" <<'EOF'
211
- canton.participants.app-provider.ledger-api.tls {
212
- cert-chain-file = "/app/localnet-tls/server.crt"
213
- private-key-file = "/app/localnet-tls/server.key"
214
- trust-collection-file = "/app/localnet-tls/ca.crt"
215
- }
216
- canton.participants.app-provider.admin-api.tls {
217
- cert-chain-file = "/app/localnet-tls/server.crt"
218
- private-key-file = "/app/localnet-tls/server.key"
219
- trust-collection-file = "/app/localnet-tls/ca.crt"
220
- }
221
- canton.participants.app-user.ledger-api.tls {
222
- cert-chain-file = "/app/localnet-tls/server.crt"
223
- private-key-file = "/app/localnet-tls/server.key"
224
- trust-collection-file = "/app/localnet-tls/ca.crt"
225
- }
226
- canton.participants.app-user.admin-api.tls {
227
- cert-chain-file = "/app/localnet-tls/server.crt"
228
- private-key-file = "/app/localnet-tls/server.key"
229
- trust-collection-file = "/app/localnet-tls/ca.crt"
230
- }
231
- canton.participants.sv.ledger-api.tls {
210
+ : > "$tls_fragment_file"
211
+ local participant profile
212
+ for participant in app-provider app-user sv; do
213
+ case "$participant" in
214
+ app-provider) profile="$APP_PROVIDER_PROFILE" ;;
215
+ app-user) profile="$APP_USER_PROFILE" ;;
216
+ sv) profile="$SV_PROFILE" ;;
217
+ esac
218
+ if [[ "$profile" != "off" ]]; then
219
+ cat >> "$tls_fragment_file" <<EOF
220
+ canton.participants.${participant}.ledger-api.tls {
232
221
  cert-chain-file = "/app/localnet-tls/server.crt"
233
222
  private-key-file = "/app/localnet-tls/server.key"
234
223
  trust-collection-file = "/app/localnet-tls/ca.crt"
235
224
  }
236
- canton.participants.sv.admin-api.tls {
225
+ canton.participants.${participant}.admin-api.tls {
237
226
  cert-chain-file = "/app/localnet-tls/server.crt"
238
227
  private-key-file = "/app/localnet-tls/server.key"
239
228
  trust-collection-file = "/app/localnet-tls/ca.crt"
240
229
  }
241
230
  EOF
231
+ fi
232
+ done
242
233
  cat > "$canton_config_file" <<'EOF'
243
234
  include file("/app/base-app.conf")
244
235
  include file("/app/localnet-tls.conf")
@@ -253,6 +244,62 @@ services:
253
244
  - "$server_certificate_path:/app/localnet-tls/server.crt:ro"
254
245
  - "$server_key_path:/app/localnet-tls/server.key:ro"
255
246
  - "$ca_certificate_path:/app/localnet-tls/ca.crt:ro"
247
+ splice:
248
+ volumes:
249
+ - "$ca_certificate_path:/app/localnet-tls/ca.crt:ro"
250
+ environment:
251
+ - |
252
+ ADDITIONAL_CONFIG_LOCALNET_TLS=
253
+ EOF
254
+ for participant in app-provider app-user sv; do
255
+ case "$participant" in
256
+ app-provider) profile="$APP_PROVIDER_PROFILE" ;;
257
+ app-user) profile="$APP_USER_PROFILE" ;;
258
+ sv) profile="$SV_PROFILE" ;;
259
+ esac
260
+ if [[ "$profile" == "off" ]]; then
261
+ continue
262
+ fi
263
+ if [[ "$participant" == "sv" ]]; then
264
+ cat >> "$compose_file" <<'EOF'
265
+ canton.validator-apps.sv-validator_backend.participant-client {
266
+ admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
267
+ ledger-api.client-config.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
268
+ }
269
+ canton.scan-apps.scan-app.participant-client {
270
+ admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
271
+ ledger-api.client-config.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
272
+ }
273
+ canton.sv-apps.sv.participant-client {
274
+ admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
275
+ ledger-api.client-config.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
276
+ }
277
+ EOF
278
+ else
279
+ cat >> "$compose_file" <<EOF
280
+ canton.validator-apps.${participant}-validator_backend.participant-client {
281
+ admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
282
+ ledger-api.client-config.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
283
+ }
284
+ EOF
285
+ fi
286
+ done
287
+ cat >> "$compose_file" <<EOF
288
+ pqs-app-provider:
289
+ environment:
290
+ SCRIBE_SOURCE_LEDGER_TLS_CAFILE: /app/localnet-tls/ca.crt
291
+ volumes:
292
+ - "$ca_certificate_path:/app/localnet-tls/ca.crt:ro"
293
+ pqs-app-user:
294
+ environment:
295
+ SCRIBE_SOURCE_LEDGER_TLS_CAFILE: /app/localnet-tls/ca.crt
296
+ volumes:
297
+ - "$ca_certificate_path:/app/localnet-tls/ca.crt:ro"
298
+ pqs-sv:
299
+ environment:
300
+ SCRIBE_SOURCE_LEDGER_TLS_CAFILE: /app/localnet-tls/ca.crt
301
+ volumes:
302
+ - "$ca_certificate_path:/app/localnet-tls/ca.crt:ro"
256
303
  EOF
257
304
  export LOCALNET_TLS_COMPOSE_FILE="$compose_file"
258
305
  export LOCALNET_TLS_FRAGMENT_FILE="$tls_fragment_file"
@@ -651,6 +698,19 @@ EOF
651
698
  done
652
699
  } > "$splice_config_file"
653
700
 
701
+ if [[ "$(resolve_tls_enabled)" == "1" ]]; then
702
+ local index
703
+ for ((index = 1; index <= count; index++)); do
704
+ cat >> "$splice_config_file" <<EOF
705
+ canton.validator-apps.extra-${index}-validator_backend.participant-client {
706
+ admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
707
+ ledger-api.client-config.tls.trust-collection-file = "/app/localnet-tls/ca.crt"
708
+ }
709
+
710
+ EOF
711
+ done
712
+ fi
713
+
654
714
  {
655
715
  cat <<'EOF'
656
716
  volumes:
@@ -740,8 +800,20 @@ EOF
740
800
  SCRIBE_TARGET_POSTGRES_USERNAME: \${DB_USER}
741
801
  SCRIBE_TARGET_POSTGRES_PASSWORD: \${DB_PASSWORD}
742
802
  SCRIBE_CONFIG: /onboarding/extra-${index}-pqs.conf
803
+ EOF
804
+ if [[ "$(resolve_tls_enabled)" == "1" ]]; then
805
+ cat <<'EOF'
806
+ SCRIBE_SOURCE_LEDGER_TLS_CAFILE: /app/localnet-tls/ca.crt
807
+ EOF
808
+ fi
809
+ cat <<EOF
743
810
  volumes:
744
811
  - onboarding:/onboarding
812
+ EOF
813
+ if [[ "$(resolve_tls_enabled)" == "1" ]]; then
814
+ printf ' - "%s:/app/localnet-tls/ca.crt:ro"\n' "${LOCALNET_TLS_CA_CERT_PATH}"
815
+ fi
816
+ cat <<'EOF'
745
817
  command:
746
818
  - pipeline
747
819
  - ledger
@@ -984,6 +1056,7 @@ grant_localnet_validator_read_rights() {
984
1056
 
985
1057
  start_ledger_stack() {
986
1058
  local auth_mode="${1:-shared-secret}"
1059
+ export AUTH_MODE="$auth_mode"
987
1060
  local modules_dir="$QUICKSTART_DIR/docker/modules"
988
1061
  local localnet_dir="$modules_dir/localnet"
989
1062
  local splice_version
@@ -164,6 +164,7 @@ append_existing_extra_participant_args() {
164
164
 
165
165
  stop_ledger_stack() {
166
166
  local auth_mode="${1:-shared-secret}"
167
+ export AUTH_MODE="$auth_mode"
167
168
  local modules_dir="$QUICKSTART_DIR/docker/modules"
168
169
  local localnet_dir="$modules_dir/localnet"
169
170
  local splice_version
@@ -89,6 +89,7 @@ printf 'stub env APP_PROVIDER_PROFILE=%s\n' "${APP_PROVIDER_PROFILE:-}"
89
89
  printf 'stub env APP_USER_PROFILE=%s\n' "${APP_USER_PROFILE:-}"
90
90
  printf 'stub env SV_PROFILE=%s\n' "${SV_PROFILE:-}"
91
91
  printf 'stub env PQS_SV_PROFILE=%s\n' "${PQS_SV_PROFILE:-}"
92
+ printf 'stub env AUTH_MODE=%s\n' "${AUTH_MODE:-}"
92
93
  if [[ "${1:-}" == "inspect" ]]; then
93
94
  printf 'healthy\n'
94
95
  exit 0
@@ -294,6 +295,7 @@ printf 'stub env APP_PROVIDER_PROFILE=%s\n' "${APP_PROVIDER_PROFILE:-}"
294
295
  printf 'stub env APP_USER_PROFILE=%s\n' "${APP_USER_PROFILE:-}"
295
296
  printf 'stub env SV_PROFILE=%s\n' "${SV_PROFILE:-}"
296
297
  printf 'stub env PQS_SV_PROFILE=%s\n' "${PQS_SV_PROFILE:-}"
298
+ printf 'stub env AUTH_MODE=%s\n' "${AUTH_MODE:-}"
297
299
  if [[ "${1:-}" == "inspect" ]]; then
298
300
  printf 'healthy\n'
299
301
  exit 0
@@ -331,6 +333,7 @@ run_case $'.PHONY: start\nstart:\n' 'stub env IMAGE_TAG=0.6.5'
331
333
  run_case $'.PHONY: start\nstart:\n' 'stub env APP_USER_PROFILE=off'
332
334
  run_case $'.PHONY: start\nstart:\n' 'stub env SV_PROFILE=on'
333
335
  run_case $'.PHONY: start\nstart:\n' 'stub env PQS_SV_PROFILE=on'
336
+ run_case $'.PHONY: start\nstart:\n' 'stub env AUTH_MODE=oauth2' oauth2
334
337
  run_case $'.PHONY: start\nstart:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv down -v --remove-orphans'
335
338
  run_case $'.PHONY: start\nstart:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv up -d --no-recreate postgres canton'
336
339
  run_case $'.PHONY: start\nstart:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv -f '"$tmpdir"'/quickstart/docker/modules/keycloak/compose.yaml --env-file '"$tmpdir"'/quickstart/docker/modules/keycloak/compose.env --profile keycloak down -v --remove-orphans' oauth2
@@ -401,15 +404,30 @@ assert_file_contains "$tmpdir/generated/additional-config.extra-validators.conf"
401
404
  run_case $'.PHONY: start-local-ledger\nstart-local-ledger:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv -f '"$tmpdir"'/tls/compose-localnet.yaml down -v --remove-orphans' shared-secret default 0 '' '' 0 1
402
405
  assert_file_contains_text "$tmpdir/tls/canton-tls.conf" 'canton.participants.app-provider.ledger-api.tls {'
403
406
  assert_file_contains_text "$tmpdir/tls/canton-tls.conf" 'canton.participants.app-provider.admin-api.tls {'
404
- assert_file_contains_text "$tmpdir/tls/canton-tls.conf" 'canton.participants.app-user.ledger-api.tls {'
405
407
  assert_file_contains_text "$tmpdir/tls/canton-tls.conf" 'canton.participants.sv.admin-api.tls {'
408
+ if grep -Fq 'canton.participants.app-user.ledger-api.tls {' "$tmpdir/tls/canton-tls.conf" \
409
+ || grep -Fq 'canton.participants.app-user.admin-api.tls {' "$tmpdir/tls/canton-tls.conf"; then
410
+ echo "unexpected TLS configuration for inactive app-user participant" >&2
411
+ exit 1
412
+ fi
406
413
  assert_file_contains_text "$tmpdir/tls/compose-localnet.yaml" '/app/localnet-tls/server.key:ro'
407
414
  assert_file_contains_text "$tmpdir/tls/compose-localnet.yaml" '/app/localnet-tls/ca.crt:ro'
415
+ assert_file_contains_text "$tmpdir/tls/compose-localnet.yaml" 'ADDITIONAL_CONFIG_LOCALNET_TLS='
416
+ assert_file_contains_text "$tmpdir/tls/compose-localnet.yaml" 'admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"'
417
+ assert_file_contains_text "$tmpdir/tls/compose-localnet.yaml" 'ledger-api.client-config.tls.trust-collection-file = "/app/localnet-tls/ca.crt"'
418
+ assert_file_contains_text "$tmpdir/tls/compose-localnet.yaml" 'SCRIBE_SOURCE_LEDGER_TLS_CAFILE: /app/localnet-tls/ca.crt'
419
+ if grep -Fq 'canton.validator-apps.app-user-validator_backend.participant-client' "$tmpdir/tls/compose-localnet.yaml"; then
420
+ echo "unexpected client TLS configuration for inactive app-user participant" >&2
421
+ exit 1
422
+ fi
408
423
  assert_file_mode "$tmpdir/tls/server.key" 600
409
424
  assert_file_mode "$tmpdir/tls/ca.key" 600
410
425
  run_case $'.PHONY: start\nstart:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv -f '"$tmpdir"'/generated/compose-extra-participants.yaml --env-file '"$tmpdir"'/generated/extra-participants.env -f '"$tmpdir"'/tls/compose-localnet.yaml down -v --remove-orphans' shared-secret default 2 '' '' 0 1
411
426
  assert_file_contains_text "$tmpdir/generated/additional-config.extra-participants.conf" 'canton.participants.extra-1.ledger-api.tls {'
412
427
  assert_file_contains_text "$tmpdir/generated/additional-config.extra-participants.conf" 'canton.participants.extra-2.admin-api.tls {'
428
+ assert_file_contains_text "$tmpdir/generated/additional-config.extra-validators.conf" 'canton.validator-apps.extra-1-validator_backend.participant-client {'
429
+ assert_file_contains_text "$tmpdir/generated/additional-config.extra-validators.conf" 'admin-api.tls.trust-collection-file = "/app/localnet-tls/ca.crt"'
430
+ assert_file_contains_text "$tmpdir/generated/compose-extra-participants.yaml" 'SCRIBE_SOURCE_LEDGER_TLS_CAFILE: /app/localnet-tls/ca.crt'
413
431
 
414
432
  mkdir -p "$tmpdir/supplied"
415
433
  openssl genrsa -out "$tmpdir/supplied/ca.key" 2048 >/dev/null 2>&1
@@ -69,6 +69,7 @@ printf 'stub env APP_PROVIDER_PROFILE=%s\n' "${APP_PROVIDER_PROFILE:-}"
69
69
  printf 'stub env APP_USER_PROFILE=%s\n' "${APP_USER_PROFILE:-}"
70
70
  printf 'stub env SV_PROFILE=%s\n' "${SV_PROFILE:-}"
71
71
  printf 'stub env PQS_SV_PROFILE=%s\n' "${PQS_SV_PROFILE:-}"
72
+ printf 'stub env AUTH_MODE=%s\n' "${AUTH_MODE:-}"
72
73
  if [[ "${1:-}" == "compose" && "${2:-}" == "version" ]]; then
73
74
  if [[ "$docker_mode" == "compose-v2" ]]; then
74
75
  exit 0
@@ -115,5 +116,6 @@ EOF
115
116
  run_case $'.PHONY: stop-local-ledger\nstop-local-ledger:\n' 'stub make stop-local-ledger'
116
117
  run_case $'.PHONY: stop\nstop:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv down -v --remove-orphans'
117
118
  run_case $'.PHONY: stop\nstop:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv -f '"$tmpdir"'/quickstart/docker/modules/keycloak/compose.yaml --env-file '"$tmpdir"'/quickstart/docker/modules/keycloak/compose.env --profile keycloak down -v --remove-orphans' oauth2
119
+ run_case $'.PHONY: stop\nstop:\n' 'stub env AUTH_MODE=oauth2' oauth2
118
120
  run_case $'.PHONY: stop\nstop:\n' 'stub docker-compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv down -v --remove-orphans' shared-secret compose-v1
119
121
  run_case $'.PHONY: stop-local-ledger\nstop-local-ledger:\n' 'stub docker compose -f compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/localnet/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/splice-onboarding/compose.yaml -f '"$tmpdir"'/quickstart/docker/modules/pqs/compose.yaml --env-file .env --env-file .env.local --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/compose.env --env-file '"$tmpdir"'/quickstart/docker/modules/localnet/env/common.env --env-file '"$tmpdir"'/quickstart/docker/modules/pqs/compose.env --profile app-provider --profile pqs-app-provider --profile pqs-sv -f '"$tmpdir"'/tls/compose-localnet.yaml down -v --remove-orphans' shared-secret compose-v2 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@distrohelena/canton-typescript-sdk",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",