pyvider 2025-01-29
Major rpcplugin client rewrite consolidating the handshake and channel creation
66 files · 4,603+ · 688-

Client Handshake and Channel Unification

42 files changed
  • auto-load.md Updated auto-load.md (+0/-0 lines)
  • .bfile Added .bfile (+12 lines)
  • client.py Updated client.py (+169/-113 lines)
  • config.py Updated config.py (+3/-2 lines)
  • 2025-01-19-1108-claude.md Updated 2025-01-19-1108-claude.md (+0/-0 lines)
  • cert-compatibility.md Added cert-compatibility.md (+175 lines)
  • cert-fixtures.md Added cert-fixtures.md (+192 lines)
  • diagnostic-report.md Added diagnostic-report.md (+291 lines)
  • test-analysis.md Added test-analysis.md (+224 lines)
  • test-strategy.md Added test-strategy.md (+174 lines)
  • 2025-01-29-claude.md Added 2025-01-29-claude.md (+269 lines)
  • auto-mtls-specs.md Added auto-mtls-specs.md (+198 lines)
  • go-plugin-notes.md Added go-plugin-notes.md (+177 lines)
  • research.md Added research.md (+12 lines)
  • env.sh Added env.sh (+152 lines)
  • gen-certs.sh Removed gen-certs.sh (-128 lines)
  • handshake.py Updated handshake.py (+22/-120 lines)
  • security.py Updated security.py (+30/-40 lines)
  • ec-secp256r1-mtls-client.crt Added ec-secp256r1-mtls-client.crt (+12 lines)
  • ec-secp256r1-mtls-client.key Added ec-secp256r1-mtls-client.key (+5 lines)
  • ec-secp256r1-mtls-server.crt Added ec-secp256r1-mtls-server.crt (+12 lines)
  • ec-secp256r1-mtls-server.key Added ec-secp256r1-mtls-server.key (+5 lines)
  • ec-secp384r1-mtls-client.crt Added ec-secp384r1-mtls-client.crt (+13 lines)
  • ec-secp384r1-mtls-client.key Added ec-secp384r1-mtls-client.key (+6 lines)
  • ec-secp384r1-mtls-server.crt Added ec-secp384r1-mtls-server.crt (+13 lines)
  • ec-secp384r1-mtls-server.key Added ec-secp384r1-mtls-server.key (+6 lines)
  • ec-secp521r1-mtls-client.crt Added ec-secp521r1-mtls-client.crt (+15 lines)
  • ec-secp521r1-mtls-client.key Added ec-secp521r1-mtls-client.key (+7 lines)
  • ec-secp521r1-mtls-server.crt Added ec-secp521r1-mtls-server.crt (+15 lines)
  • ec-secp521r1-mtls-server.key Added ec-secp521r1-mtls-server.key (+7 lines)
  • rsa-2048-mtls-client.crt Added rsa-2048-mtls-client.crt (+20 lines)
  • rsa-2048-mtls-client.key Added rsa-2048-mtls-client.key (+27 lines)
  • rsa-2048-mtls-server.crt Added rsa-2048-mtls-server.crt (+20 lines)
  • rsa-2048-mtls-server.key Added rsa-2048-mtls-server.key (+27 lines)
  • rsa-4096-mtls-client.crt Added rsa-4096-mtls-client.crt (+31 lines)
  • rsa-4096-mtls-client.key Added rsa-4096-mtls-client.key (+51 lines)
  • rsa-4096-mtls-server.crt Added rsa-4096-mtls-server.crt (+31 lines)
  • rsa-4096-mtls-server.key Added rsa-4096-mtls-server.key (+51 lines)
  • create_test_certs.sh Removed create_test_certs.sh (-174 lines)
  • test_transport_unix.py Updated test_transport_unix.py (+2/-2 lines)
  • gen-certs.sh Updated gen-certs.sh (+7/-7 lines)
  • unix.py Updated unix.py (+124/-1 lines)
  • Rewrote _perform_handshake to directly parse the response inline without the nested try/except structure streamline behavioral
    66 files
    • auto-load.md
    • .bfile
    • client.py
    • config.py
    • 2025-01-19-1108-claude.md
    • cert-compatibility.md
    • cert-fixtures.md
    • diagnostic-report.md
    • test-analysis.md
    • test-strategy.md
    • 2025-01-29-claude.md
    • auto-mtls-specs.md
    • go-plugin-notes.md
    • research.md
    • env.sh
    • __init__.py
    • __init__.py
    • configstore.proto
    • configstore_pb2.py
    • configstore_pb2_grpc.py
    • py-cs-server.py
    • main.go
    • test_kv_integration.py
    • __init__.py
    • kv-go-client
    • kv-go-server
    • client-log.txt
    • kv-data-hello
    • kv.proto
    • kv_pb2.py
    • kv_pb2_grpc.py
    • kv_protocol.py
    • py-kv-client.py
    • py-kv-server.py
    • gen-certs.sh
    • handshake.py
    • security.py
    • server.py
    • ec-secp256r1-mtls-client.crt
    • ec-secp256r1-mtls-client.key
    • ec-secp256r1-mtls-server.crt
    • ec-secp256r1-mtls-server.key
    • ec-secp384r1-mtls-client.crt
    • ec-secp384r1-mtls-client.key
    • ec-secp384r1-mtls-server.crt
    • ec-secp384r1-mtls-server.key
    • ec-secp521r1-mtls-client.crt
    • ec-secp521r1-mtls-client.key
    • ec-secp521r1-mtls-server.crt
    • ec-secp521r1-mtls-server.key
    • rsa-2048-mtls-client.crt
    • rsa-2048-mtls-client.key
    • rsa-2048-mtls-server.crt
    • rsa-2048-mtls-server.key
    • rsa-4096-mtls-client.crt
    • rsa-4096-mtls-client.key
    • rsa-4096-mtls-server.crt
    • rsa-4096-mtls-server.key
    • create_test_certs.sh
    • dummy_server.py
    • mock_server.py
    • test_transport_unix.py
    • x_test_cert.py
    • x_test_mtls.py
    • gen-certs.sh
    • unix.py
  • Unified _create_grpc_channel to use a single credential creation path for both Unix (unix:// prefix) and TCP transports instead of separate code blocks decouple internal
    1 file
    • unix:
  • Uses grpc.ssl_channel_credentials with server cert as root, client key, and client cert chain for all transport types interface internal
    1 file
    • grpc.ssl_channel_credentials
  • Consistent channel options: ssl_target_name_override, max message lengths (16MB) decouple behavioral
    66 files
    • auto-load.md
    • .bfile
    • client.py
    • config.py
    • 2025-01-19-1108-claude.md
    • cert-compatibility.md
    • cert-fixtures.md
    • diagnostic-report.md
    • test-analysis.md
    • test-strategy.md
    • 2025-01-29-claude.md
    • auto-mtls-specs.md
    • go-plugin-notes.md
    • research.md
    • env.sh
    • __init__.py
    • __init__.py
    • configstore.proto
    • configstore_pb2.py
    • configstore_pb2_grpc.py
    • py-cs-server.py
    • main.go
    • test_kv_integration.py
    • __init__.py
    • kv-go-client
    • kv-go-server
    • client-log.txt
    • kv-data-hello
    • kv.proto
    • kv_pb2.py
    • kv_pb2_grpc.py
    • kv_protocol.py
    • py-kv-client.py
    • py-kv-server.py
    • gen-certs.sh
    • handshake.py
    • security.py
    • server.py
    • ec-secp256r1-mtls-client.crt
    • ec-secp256r1-mtls-client.key
    • ec-secp256r1-mtls-server.crt
    • ec-secp256r1-mtls-server.key
    • ec-secp384r1-mtls-client.crt
    • ec-secp384r1-mtls-client.key
    • ec-secp384r1-mtls-server.crt
    • ec-secp384r1-mtls-server.key
    • ec-secp521r1-mtls-client.crt
    • ec-secp521r1-mtls-client.key
    • ec-secp521r1-mtls-server.crt
    • ec-secp521r1-mtls-server.key
    • rsa-2048-mtls-client.crt
    • rsa-2048-mtls-client.key
    • rsa-2048-mtls-server.crt
    • rsa-2048-mtls-server.key
    • rsa-4096-mtls-client.crt
    • rsa-4096-mtls-client.key
    • rsa-4096-mtls-server.crt
    • rsa-4096-mtls-server.key
    • create_test_certs.sh
    • dummy_server.py
    • mock_server.py
    • test_transport_unix.py
    • x_test_cert.py
    • x_test_mtls.py
    • gen-certs.sh
    • unix.py

Proper Client Lifecycle Management

1 file changed
  • client.py Changes to client.py
  • Added close() async method replacing the old stop() with proper shutdown sequence: gRPC channel close, process termination with run_in_executor, transport close interface internal
    1 file
    • client.py
  • All attributes reset to None after shutdown decouple internal
    1 file
    • client.py
  • start() restructured with clearer autoMTLS-aware certificate generation flow decouple architectural
    1 file
    • client.py
19 files changed
  • __init__.py Updated __init__.py (+0/-0 lines)
  • __init__.py Updated __init__.py (+0/-0 lines)
  • configstore.proto Added configstore.proto (+102 lines)
  • configstore_pb2.py Added configstore_pb2.py (+68 lines)
  • configstore_pb2_grpc.py Added configstore_pb2_grpc.py (+319 lines)
  • py-cs-server.py Added py-cs-server.py (+199 lines)
  • main.go Removed main.go (-1 lines)
  • test_kv_integration.py Updated test_kv_integration.py (+1/-1 lines)
  • __init__.py Added __init__.py (+1 lines)
  • kv-go-client Updated kv-go-client (+0/-0 lines)
  • kv-go-server Updated kv-go-server (+0/-0 lines)
  • client-log.txt Added client-log.txt (+172 lines)
  • kv-data-hello Added kv-data-hello (+1 lines)
  • kv.proto Added kv.proto (+27 lines)
  • kv_pb2.py Added kv_pb2.py (+45 lines)
  • kv_pb2_grpc.py Added kv_pb2_grpc.py (+140 lines)
  • kv_protocol.py Added kv_protocol.py (+19 lines)
  • py-kv-client.py Added py-kv-client.py (+143 lines)
  • py-kv-server.py Added py-kv-server.py (+116 lines)
  • Added src/pyvider/rpcplugin/examples/kv/ directory with py-kv-client.py and py-kv-server.py instantiate internal
    11 files
    • __init__.py
    • kv-go-client
    • kv-go-server
    • client-log.txt
    • kv-data-hello
    • kv.proto
    • kv_pb2.py
    • kv_pb2_grpc.py
    • kv_protocol.py
    • py-kv-client.py
    • py-kv-server.py
  • KV server implements KVServicer with async Put and Get methods using in-memory dict storage streamline internal
    66 files
    • auto-load.md
    • .bfile
    • client.py
    • config.py
    • 2025-01-19-1108-claude.md
    • cert-compatibility.md
    • cert-fixtures.md
    • diagnostic-report.md
    • test-analysis.md
    • test-strategy.md
    • 2025-01-29-claude.md
    • auto-mtls-specs.md
    • go-plugin-notes.md
    • research.md
    • env.sh
    • __init__.py
    • __init__.py
    • configstore.proto
    • configstore_pb2.py
    • configstore_pb2_grpc.py
    • py-cs-server.py
    • main.go
    • test_kv_integration.py
    • __init__.py
    • kv-go-client
    • kv-go-server
    • client-log.txt
    • kv-data-hello
    • kv.proto
    • kv_pb2.py
    • kv_pb2_grpc.py
    • kv_protocol.py
    • py-kv-client.py
    • py-kv-server.py
    • gen-certs.sh
    • handshake.py
    • security.py
    • server.py
    • ec-secp256r1-mtls-client.crt
    • ec-secp256r1-mtls-client.key
    • ec-secp256r1-mtls-server.crt
    • ec-secp256r1-mtls-server.key
    • ec-secp384r1-mtls-client.crt
    • ec-secp384r1-mtls-client.key
    • ec-secp384r1-mtls-server.crt
    • ec-secp384r1-mtls-server.key
    • ec-secp521r1-mtls-client.crt
    • ec-secp521r1-mtls-client.key
    • ec-secp521r1-mtls-server.crt
    • ec-secp521r1-mtls-server.key
    • rsa-2048-mtls-client.crt
    • rsa-2048-mtls-client.key
    • rsa-2048-mtls-server.crt
    • rsa-2048-mtls-server.key
    • rsa-4096-mtls-client.crt
    • rsa-4096-mtls-client.key
    • rsa-4096-mtls-server.crt
    • rsa-4096-mtls-server.key
    • create_test_certs.sh
    • dummy_server.py
    • mock_server.py
    • test_transport_unix.py
    • x_test_cert.py
    • x_test_mtls.py
    • gen-certs.sh
    • unix.py
  • KV client simplified by removing duplicate connect method interface internal
    66 files
    • auto-load.md
    • .bfile
    • client.py
    • config.py
    • 2025-01-19-1108-claude.md
    • cert-compatibility.md
    • cert-fixtures.md
    • diagnostic-report.md
    • test-analysis.md
    • test-strategy.md
    • 2025-01-29-claude.md
    • auto-mtls-specs.md
    • go-plugin-notes.md
    • research.md
    • env.sh
    • __init__.py
    • __init__.py
    • configstore.proto
    • configstore_pb2.py
    • configstore_pb2_grpc.py
    • py-cs-server.py
    • main.go
    • test_kv_integration.py
    • __init__.py
    • kv-go-client
    • kv-go-server
    • client-log.txt
    • kv-data-hello
    • kv.proto
    • kv_pb2.py
    • kv_pb2_grpc.py
    • kv_protocol.py
    • py-kv-client.py
    • py-kv-server.py
    • gen-certs.sh
    • handshake.py
    • security.py
    • server.py
    • ec-secp256r1-mtls-client.crt
    • ec-secp256r1-mtls-client.key
    • ec-secp256r1-mtls-server.crt
    • ec-secp256r1-mtls-server.key
    • ec-secp384r1-mtls-client.crt
    • ec-secp384r1-mtls-client.key
    • ec-secp384r1-mtls-server.crt
    • ec-secp384r1-mtls-server.key
    • ec-secp521r1-mtls-client.crt
    • ec-secp521r1-mtls-client.key
    • ec-secp521r1-mtls-server.crt
    • ec-secp521r1-mtls-server.key
    • rsa-2048-mtls-client.crt
    • rsa-2048-mtls-client.key
    • rsa-2048-mtls-server.crt
    • rsa-2048-mtls-server.key
    • rsa-4096-mtls-client.crt
    • rsa-4096-mtls-client.key
    • rsa-4096-mtls-server.crt
    • rsa-4096-mtls-server.key
    • create_test_certs.sh
    • dummy_server.py
    • mock_server.py
    • test_transport_unix.py
    • x_test_cert.py
    • x_test_mtls.py
    • gen-certs.sh
    • unix.py

Server Improvements

3 files changed
  • server.py Updated server.py (+253/-63 lines)
  • dummy_server.py Removed dummy_server.py (-36 lines)
  • mock_server.py Added mock_server.py (+63 lines)
  • Expanded server.py (86 lines changed) with improved setup logic and credential generation decouple internal
    5 files
    • py-cs-server.py
    • py-kv-server.py
    • server.py
    • dummy_server.py
    • mock_server.py

Test File Renames

2 files changed
  • x_test_cert.py Added x_test_cert.py (+253 lines)
  • x_test_mtls.py Added x_test_mtls.py (+74 lines)
  • Renamed test_certificates.py to x_test_cert.py decouple internal
    1 file
    • x_test_cert.py
  • Renamed test_mtls_compatibility.py to x_test_mtls.py decouple internal
    1 file
    • x_test_mtls.py