Implement Phase 9: client libraries (Go, Rust, Lisp, Python)

- clients/README.md: canonical API surface and error type reference
- clients/testdata/: shared JSON response fixtures
- clients/go/: mciasgoclient package; net/http + TLS 1.2+; sync.RWMutex
  token state; DisallowUnknownFields on all decoders; 25 tests pass
- clients/rust/: async mcias-client crate; reqwest+rustls (no OpenSSL);
  thiserror MciasError enum; Arc<RwLock> token state; 22+1 tests pass;
  cargo clippy -D warnings clean
- clients/lisp/: ASDF mcias-client; dexador HTTP, yason JSON; mcias-error
  condition hierarchy; Hunchentoot mock-dispatcher; 37 fiveam checks pass
  on SBCL 2.6.1; yason boolean normalisation in validate-token
- clients/python/: mcias_client package (Python 3.11+); httpx sync;
  py.typed; dataclasses; 32 pytest tests; mypy --strict + ruff clean
- test/mock/mockserver.go: in-memory mock server for Go client tests
- ARCHITECTURE.md §19: updated per-language notes to match implementation
- PROGRESS.md: Phase 9 marked complete
- .gitignore: exclude clients/rust/target/, python .venv, .pytest_cache,
  .fasl files
Security: token never logged or exposed in error messages in any library;
TLS enforced in all four languages; token stored under lock/mutex/RwLock
This commit is contained in:
2026-03-11 16:38:32 -07:00
parent f34e9a69a0
commit 0c441f5c4f
1974 changed files with 10151 additions and 33 deletions

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1,160 @@
cargo:rerun-if-env-changed=CARGO_MANIFEST_DIR
cargo:rerun-if-env-changed=CARGO_PKG_NAME
cargo:rerun-if-env-changed=CARGO_PKG_VERSION_MAJOR
cargo:rerun-if-env-changed=CARGO_PKG_VERSION_MINOR
cargo:rerun-if-env-changed=CARGO_PKG_VERSION_PATCH
cargo:rerun-if-env-changed=CARGO_PKG_VERSION_PRE
cargo:rerun-if-env-changed=CARGO_MANIFEST_LINKS
cargo:rerun-if-env-changed=RING_PREGENERATE_ASM
cargo:rerun-if-env-changed=OUT_DIR
cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ARCH
cargo:rerun-if-env-changed=CARGO_CFG_TARGET_OS
cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ENV
cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ENDIAN
OPT_LEVEL = Some(0)
OUT_DIR = Some(/Users/kyle/src/mcias/clients/rust/target/debug/build/ring-b8204aabae873cde/out)
TARGET = Some(aarch64-apple-darwin)
CARGO_ENCODED_RUSTFLAGS = Some()
HOST = Some(aarch64-apple-darwin)
cargo:rerun-if-env-changed=CC_aarch64-apple-darwin
CC_aarch64-apple-darwin = None
cargo:rerun-if-env-changed=CC_aarch64_apple_darwin
CC_aarch64_apple_darwin = None
cargo:rerun-if-env-changed=HOST_CC
HOST_CC = None
cargo:rerun-if-env-changed=CC
CC = None
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
RUSTC_WRAPPER = None
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some(true)
cargo:rerun-if-env-changed=MACOSX_DEPLOYMENT_TARGET
MACOSX_DEPLOYMENT_TARGET = None
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS_aarch64_apple_darwin
CFLAGS_aarch64_apple_darwin = None
cargo:rerun-if-env-changed=CFLAGS_aarch64-apple-darwin
CFLAGS_aarch64-apple-darwin = None
cargo:rustc-link-lib=static=ring_core_0_17_14_
OPT_LEVEL = Some(0)
OUT_DIR = Some(/Users/kyle/src/mcias/clients/rust/target/debug/build/ring-b8204aabae873cde/out)
TARGET = Some(aarch64-apple-darwin)
CARGO_ENCODED_RUSTFLAGS = Some()
HOST = Some(aarch64-apple-darwin)
cargo:rerun-if-env-changed=CC_aarch64-apple-darwin
CC_aarch64-apple-darwin = None
cargo:rerun-if-env-changed=CC_aarch64_apple_darwin
CC_aarch64_apple_darwin = None
cargo:rerun-if-env-changed=HOST_CC
HOST_CC = None
cargo:rerun-if-env-changed=CC
CC = None
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
RUSTC_WRAPPER = None
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some(true)
cargo:rerun-if-env-changed=MACOSX_DEPLOYMENT_TARGET
MACOSX_DEPLOYMENT_TARGET = None
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS_aarch64_apple_darwin
CFLAGS_aarch64_apple_darwin = None
cargo:rerun-if-env-changed=CFLAGS_aarch64-apple-darwin
CFLAGS_aarch64-apple-darwin = None
cargo:rustc-link-lib=static=ring_core_0_17_14__test
cargo:rustc-link-search=native=/Users/kyle/src/mcias/clients/rust/target/debug/build/ring-b8204aabae873cde/out
cargo:rerun-if-changed=crypto/perlasm/x86_64-xlate.pl
cargo:rerun-if-changed=crypto/perlasm/x86gas.pl
cargo:rerun-if-changed=crypto/perlasm/x86nasm.pl
cargo:rerun-if-changed=crypto/perlasm/arm-xlate.pl
cargo:rerun-if-changed=crypto/perlasm/x86asm.pl
cargo:rerun-if-changed=crypto/internal.h
cargo:rerun-if-changed=crypto/cpu_intel.c
cargo:rerun-if-changed=crypto/chacha/asm/chacha-x86.pl
cargo:rerun-if-changed=crypto/chacha/asm/chacha-armv8.pl
cargo:rerun-if-changed=crypto/chacha/asm/chacha-x86_64.pl
cargo:rerun-if-changed=crypto/chacha/asm/chacha-armv4.pl
cargo:rerun-if-changed=crypto/mem.c
cargo:rerun-if-changed=crypto/cipher/asm/chacha20_poly1305_armv8.pl
cargo:rerun-if-changed=crypto/cipher/asm/chacha20_poly1305_x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/ec/ecp_nistz.c
cargo:rerun-if-changed=crypto/fipsmodule/ec/p256-nistz.h
cargo:rerun-if-changed=crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl
cargo:rerun-if-changed=crypto/fipsmodule/ec/asm/p256-armv8-asm.pl
cargo:rerun-if-changed=crypto/fipsmodule/ec/ecp_nistz384.inl
cargo:rerun-if-changed=crypto/fipsmodule/ec/gfp_p256.c
cargo:rerun-if-changed=crypto/fipsmodule/ec/p256-nistz.c
cargo:rerun-if-changed=crypto/fipsmodule/ec/p256_shared.h
cargo:rerun-if-changed=crypto/fipsmodule/ec/ecp_nistz.h
cargo:rerun-if-changed=crypto/fipsmodule/ec/p256-nistz-table.h
cargo:rerun-if-changed=crypto/fipsmodule/ec/util.h
cargo:rerun-if-changed=crypto/fipsmodule/ec/gfp_p384.c
cargo:rerun-if-changed=crypto/fipsmodule/ec/ecp_nistz384.h
cargo:rerun-if-changed=crypto/fipsmodule/ec/p256.c
cargo:rerun-if-changed=crypto/fipsmodule/ec/p256_table.h
cargo:rerun-if-changed=crypto/fipsmodule/bn/internal.h
cargo:rerun-if-changed=crypto/fipsmodule/bn/asm/armv8-mont.pl
cargo:rerun-if-changed=crypto/fipsmodule/bn/asm/x86-mont.pl
cargo:rerun-if-changed=crypto/fipsmodule/bn/asm/x86_64-mont.pl
cargo:rerun-if-changed=crypto/fipsmodule/bn/asm/x86_64-mont5.pl
cargo:rerun-if-changed=crypto/fipsmodule/bn/asm/armv4-mont.pl
cargo:rerun-if-changed=crypto/fipsmodule/bn/montgomery.c
cargo:rerun-if-changed=crypto/fipsmodule/bn/montgomery_inv.c
cargo:rerun-if-changed=crypto/fipsmodule/sha/asm/sha512-armv8.pl
cargo:rerun-if-changed=crypto/fipsmodule/sha/asm/sha512-x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/sha/asm/sha256-armv4.pl
cargo:rerun-if-changed=crypto/fipsmodule/sha/asm/sha512-armv4.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/vpaes-x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/vpaes-armv8.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/vpaes-x86.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/bsaes-armv7.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/aesv8-armx.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/ghashv8-armx.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/aes-gcm-avx2-x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/vpaes-armv7.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/aesni-x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/aesv8-gcm-armv8.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/ghash-x86.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/aesni-x86.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/ghash-neon-armv8.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/aesni-gcm-x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/ghash-x86_64.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/asm/ghash-armv4.pl
cargo:rerun-if-changed=crypto/fipsmodule/aes/aes_nohw.c
cargo:rerun-if-changed=crypto/constant_time_test.c
cargo:rerun-if-changed=crypto/poly1305/poly1305_arm.c
cargo:rerun-if-changed=crypto/poly1305/poly1305_arm_asm.S
cargo:rerun-if-changed=crypto/poly1305/poly1305.c
cargo:rerun-if-changed=crypto/limbs/limbs.inl
cargo:rerun-if-changed=crypto/limbs/limbs.c
cargo:rerun-if-changed=crypto/limbs/limbs.h
cargo:rerun-if-changed=crypto/curve25519/internal.h
cargo:rerun-if-changed=crypto/curve25519/asm/x25519-asm-arm.S
cargo:rerun-if-changed=crypto/curve25519/curve25519_64_adx.c
cargo:rerun-if-changed=crypto/curve25519/curve25519.c
cargo:rerun-if-changed=crypto/curve25519/curve25519_tables.h
cargo:rerun-if-changed=crypto/crypto.c
cargo:rerun-if-changed=include/ring-core/asm_base.h
cargo:rerun-if-changed=include/ring-core/type_check.h
cargo:rerun-if-changed=include/ring-core/aes.h
cargo:rerun-if-changed=include/ring-core/check.h
cargo:rerun-if-changed=include/ring-core/target.h
cargo:rerun-if-changed=include/ring-core/mem.h
cargo:rerun-if-changed=include/ring-core/base.h
cargo:rerun-if-changed=third_party/fiat/asm/fiat_curve25519_adx_mul.S
cargo:rerun-if-changed=third_party/fiat/asm/fiat_curve25519_adx_square.S
cargo:rerun-if-changed=third_party/fiat/LICENSE
cargo:rerun-if-changed=third_party/fiat/curve25519_64.h
cargo:rerun-if-changed=third_party/fiat/p256_64.h
cargo:rerun-if-changed=third_party/fiat/curve25519_64_adx.h
cargo:rerun-if-changed=third_party/fiat/curve25519_64_msvc.h
cargo:rerun-if-changed=third_party/fiat/p256_64_msvc.h
cargo:rerun-if-changed=third_party/fiat/p256_32.h
cargo:rerun-if-changed=third_party/fiat/curve25519_32.h

View File

@@ -0,0 +1 @@
/Users/kyle/src/mcias/clients/rust/target/debug/build/ring-b8204aabae873cde/out