mcp-proxy-adapter 2.0.1__py3-none-any.whl → 6.9.50__py3-none-any.whl
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.
Potentially problematic release.
This version of mcp-proxy-adapter might be problematic. Click here for more details.
- mcp_proxy_adapter/__init__.py +47 -0
- mcp_proxy_adapter/__main__.py +13 -0
- mcp_proxy_adapter/api/__init__.py +0 -0
- mcp_proxy_adapter/api/app.py +66 -0
- mcp_proxy_adapter/api/core/__init__.py +18 -0
- mcp_proxy_adapter/api/core/app_factory.py +400 -0
- mcp_proxy_adapter/api/core/lifespan_manager.py +55 -0
- mcp_proxy_adapter/api/core/registration_context.py +356 -0
- mcp_proxy_adapter/api/core/registration_manager.py +307 -0
- mcp_proxy_adapter/api/core/registration_tasks.py +84 -0
- mcp_proxy_adapter/api/core/ssl_context_factory.py +88 -0
- mcp_proxy_adapter/api/handlers.py +181 -0
- mcp_proxy_adapter/api/middleware/__init__.py +21 -0
- mcp_proxy_adapter/api/middleware/base.py +54 -0
- mcp_proxy_adapter/api/middleware/command_permission_middleware.py +73 -0
- mcp_proxy_adapter/api/middleware/error_handling.py +76 -0
- mcp_proxy_adapter/api/middleware/factory.py +147 -0
- mcp_proxy_adapter/api/middleware/logging.py +31 -0
- mcp_proxy_adapter/api/middleware/performance.py +51 -0
- mcp_proxy_adapter/api/middleware/protocol_middleware.py +140 -0
- mcp_proxy_adapter/api/middleware/transport_middleware.py +87 -0
- mcp_proxy_adapter/api/middleware/unified_security.py +223 -0
- mcp_proxy_adapter/api/middleware/user_info_middleware.py +132 -0
- mcp_proxy_adapter/api/openapi/__init__.py +21 -0
- mcp_proxy_adapter/api/openapi/command_integration.py +105 -0
- mcp_proxy_adapter/api/openapi/openapi_generator.py +40 -0
- mcp_proxy_adapter/api/openapi/openapi_registry.py +62 -0
- mcp_proxy_adapter/api/openapi/schema_loader.py +116 -0
- mcp_proxy_adapter/api/schemas.py +270 -0
- mcp_proxy_adapter/api/tool_integration.py +131 -0
- mcp_proxy_adapter/api/tools.py +163 -0
- mcp_proxy_adapter/cli/__init__.py +12 -0
- mcp_proxy_adapter/cli/commands/__init__.py +15 -0
- mcp_proxy_adapter/cli/commands/client.py +100 -0
- mcp_proxy_adapter/cli/commands/config_generate.py +105 -0
- mcp_proxy_adapter/cli/commands/config_validate.py +94 -0
- mcp_proxy_adapter/cli/commands/generate.py +259 -0
- mcp_proxy_adapter/cli/commands/server.py +174 -0
- mcp_proxy_adapter/cli/commands/sets.py +132 -0
- mcp_proxy_adapter/cli/commands/testconfig.py +177 -0
- mcp_proxy_adapter/cli/examples/__init__.py +8 -0
- mcp_proxy_adapter/cli/examples/http_basic.py +82 -0
- mcp_proxy_adapter/cli/examples/https_token.py +96 -0
- mcp_proxy_adapter/cli/examples/mtls_roles.py +103 -0
- mcp_proxy_adapter/cli/main.py +63 -0
- mcp_proxy_adapter/cli/parser.py +338 -0
- mcp_proxy_adapter/cli/validators.py +231 -0
- mcp_proxy_adapter/client/jsonrpc_client/__init__.py +9 -0
- mcp_proxy_adapter/client/jsonrpc_client/client.py +42 -0
- mcp_proxy_adapter/client/jsonrpc_client/command_api.py +45 -0
- mcp_proxy_adapter/client/jsonrpc_client/proxy_api.py +224 -0
- mcp_proxy_adapter/client/jsonrpc_client/queue_api.py +60 -0
- mcp_proxy_adapter/client/jsonrpc_client/transport.py +108 -0
- mcp_proxy_adapter/client/proxy.py +123 -0
- mcp_proxy_adapter/commands/__init__.py +66 -0
- mcp_proxy_adapter/commands/auth_validation_command.py +69 -0
- mcp_proxy_adapter/commands/base.py +389 -0
- mcp_proxy_adapter/commands/builtin_commands.py +30 -0
- mcp_proxy_adapter/commands/catalog/__init__.py +20 -0
- mcp_proxy_adapter/commands/catalog/catalog_loader.py +34 -0
- mcp_proxy_adapter/commands/catalog/catalog_manager.py +122 -0
- mcp_proxy_adapter/commands/catalog/catalog_syncer.py +149 -0
- mcp_proxy_adapter/commands/catalog/command_catalog.py +43 -0
- mcp_proxy_adapter/commands/catalog/dependency_manager.py +37 -0
- mcp_proxy_adapter/commands/catalog_manager.py +97 -0
- mcp_proxy_adapter/commands/cert_monitor_command.py +552 -0
- mcp_proxy_adapter/commands/certificate_management_command.py +562 -0
- mcp_proxy_adapter/commands/command_registry.py +298 -0
- mcp_proxy_adapter/commands/config_command.py +102 -0
- mcp_proxy_adapter/commands/dependency_container.py +40 -0
- mcp_proxy_adapter/commands/dependency_manager.py +143 -0
- mcp_proxy_adapter/commands/echo_command.py +48 -0
- mcp_proxy_adapter/commands/health_command.py +142 -0
- mcp_proxy_adapter/commands/help_command.py +175 -0
- mcp_proxy_adapter/commands/hooks.py +172 -0
- mcp_proxy_adapter/commands/key_management_command.py +484 -0
- mcp_proxy_adapter/commands/load_command.py +123 -0
- mcp_proxy_adapter/commands/plugins_command.py +246 -0
- mcp_proxy_adapter/commands/protocol_management_command.py +216 -0
- mcp_proxy_adapter/commands/proxy_registration_command.py +319 -0
- mcp_proxy_adapter/commands/queue_commands.py +750 -0
- mcp_proxy_adapter/commands/registration_status_command.py +76 -0
- mcp_proxy_adapter/commands/registry/__init__.py +18 -0
- mcp_proxy_adapter/commands/registry/command_info.py +103 -0
- mcp_proxy_adapter/commands/registry/command_loader.py +207 -0
- mcp_proxy_adapter/commands/registry/command_manager.py +119 -0
- mcp_proxy_adapter/commands/registry/command_registry.py +217 -0
- mcp_proxy_adapter/commands/reload_command.py +136 -0
- mcp_proxy_adapter/commands/result.py +157 -0
- mcp_proxy_adapter/commands/role_test_command.py +99 -0
- mcp_proxy_adapter/commands/roles_management_command.py +502 -0
- mcp_proxy_adapter/commands/security_command.py +472 -0
- mcp_proxy_adapter/commands/settings_command.py +113 -0
- mcp_proxy_adapter/commands/ssl_setup_command.py +306 -0
- mcp_proxy_adapter/commands/token_management_command.py +500 -0
- mcp_proxy_adapter/commands/transport_management_command.py +129 -0
- mcp_proxy_adapter/commands/unload_command.py +92 -0
- mcp_proxy_adapter/config.py +32 -0
- mcp_proxy_adapter/core/__init__.py +8 -0
- mcp_proxy_adapter/core/app_factory.py +560 -0
- mcp_proxy_adapter/core/app_runner.py +318 -0
- mcp_proxy_adapter/core/auth_validator.py +508 -0
- mcp_proxy_adapter/core/certificate/__init__.py +20 -0
- mcp_proxy_adapter/core/certificate/certificate_creator.py +372 -0
- mcp_proxy_adapter/core/certificate/certificate_extractor.py +185 -0
- mcp_proxy_adapter/core/certificate/certificate_utils.py +249 -0
- mcp_proxy_adapter/core/certificate/certificate_validator.py +481 -0
- mcp_proxy_adapter/core/certificate/ssl_context_manager.py +65 -0
- mcp_proxy_adapter/core/certificate_utils.py +249 -0
- mcp_proxy_adapter/core/client.py +608 -0
- mcp_proxy_adapter/core/client_manager.py +271 -0
- mcp_proxy_adapter/core/client_security.py +411 -0
- mcp_proxy_adapter/core/config/__init__.py +18 -0
- mcp_proxy_adapter/core/config/config.py +237 -0
- mcp_proxy_adapter/core/config/config_factory.py +22 -0
- mcp_proxy_adapter/core/config/config_loader.py +66 -0
- mcp_proxy_adapter/core/config/feature_manager.py +31 -0
- mcp_proxy_adapter/core/config/simple_config.py +204 -0
- mcp_proxy_adapter/core/config/simple_config_generator.py +131 -0
- mcp_proxy_adapter/core/config/simple_config_validator.py +476 -0
- mcp_proxy_adapter/core/config_converter.py +252 -0
- mcp_proxy_adapter/core/config_validator.py +211 -0
- mcp_proxy_adapter/core/crl_utils.py +362 -0
- mcp_proxy_adapter/core/errors.py +276 -0
- mcp_proxy_adapter/core/job_manager.py +54 -0
- mcp_proxy_adapter/core/logging.py +250 -0
- mcp_proxy_adapter/core/mtls_asgi.py +140 -0
- mcp_proxy_adapter/core/mtls_asgi_app.py +187 -0
- mcp_proxy_adapter/core/mtls_proxy.py +229 -0
- mcp_proxy_adapter/core/mtls_server.py +154 -0
- mcp_proxy_adapter/core/protocol_manager.py +232 -0
- mcp_proxy_adapter/core/proxy/__init__.py +19 -0
- mcp_proxy_adapter/core/proxy/auth_manager.py +26 -0
- mcp_proxy_adapter/core/proxy/proxy_registration_manager.py +160 -0
- mcp_proxy_adapter/core/proxy/registration_client.py +186 -0
- mcp_proxy_adapter/core/proxy/ssl_manager.py +101 -0
- mcp_proxy_adapter/core/proxy_client.py +184 -0
- mcp_proxy_adapter/core/proxy_registration.py +80 -0
- mcp_proxy_adapter/core/role_utils.py +103 -0
- mcp_proxy_adapter/core/security_adapter.py +343 -0
- mcp_proxy_adapter/core/security_factory.py +96 -0
- mcp_proxy_adapter/core/security_integration.py +342 -0
- mcp_proxy_adapter/core/server_adapter.py +251 -0
- mcp_proxy_adapter/core/server_engine.py +217 -0
- mcp_proxy_adapter/core/settings.py +260 -0
- mcp_proxy_adapter/core/signal_handler.py +107 -0
- mcp_proxy_adapter/core/ssl_utils.py +161 -0
- mcp_proxy_adapter/core/transport_manager.py +153 -0
- mcp_proxy_adapter/core/unified_config_adapter.py +471 -0
- mcp_proxy_adapter/core/utils.py +101 -0
- mcp_proxy_adapter/core/validation/__init__.py +21 -0
- mcp_proxy_adapter/core/validation/config_validator.py +219 -0
- mcp_proxy_adapter/core/validation/file_validator.py +131 -0
- mcp_proxy_adapter/core/validation/protocol_validator.py +205 -0
- mcp_proxy_adapter/core/validation/security_validator.py +140 -0
- mcp_proxy_adapter/core/validation/validation_result.py +27 -0
- mcp_proxy_adapter/custom_openapi.py +58 -0
- mcp_proxy_adapter/examples/__init__.py +16 -0
- mcp_proxy_adapter/examples/basic_framework/__init__.py +9 -0
- mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +4 -0
- mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +4 -0
- mcp_proxy_adapter/examples/basic_framework/main.py +52 -0
- mcp_proxy_adapter/examples/bugfix_certificate_config.py +261 -0
- mcp_proxy_adapter/examples/cert_manager_bugfix.py +203 -0
- mcp_proxy_adapter/examples/check_config.py +413 -0
- mcp_proxy_adapter/examples/client_usage_example.py +164 -0
- mcp_proxy_adapter/examples/commands/__init__.py +5 -0
- mcp_proxy_adapter/examples/config_builder.py +234 -0
- mcp_proxy_adapter/examples/config_cli.py +282 -0
- mcp_proxy_adapter/examples/create_test_configs.py +174 -0
- mcp_proxy_adapter/examples/debug_request_state.py +130 -0
- mcp_proxy_adapter/examples/debug_role_chain.py +191 -0
- mcp_proxy_adapter/examples/demo_client.py +287 -0
- mcp_proxy_adapter/examples/full_application/__init__.py +12 -0
- mcp_proxy_adapter/examples/full_application/commands/__init__.py +8 -0
- mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +45 -0
- mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +52 -0
- mcp_proxy_adapter/examples/full_application/commands/echo_command.py +32 -0
- mcp_proxy_adapter/examples/full_application/commands/help_command.py +54 -0
- mcp_proxy_adapter/examples/full_application/commands/list_command.py +57 -0
- mcp_proxy_adapter/examples/full_application/hooks/__init__.py +5 -0
- mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +29 -0
- mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +27 -0
- mcp_proxy_adapter/examples/full_application/main.py +311 -0
- mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +161 -0
- mcp_proxy_adapter/examples/full_application/run_mtls.py +252 -0
- mcp_proxy_adapter/examples/full_application/run_simple.py +152 -0
- mcp_proxy_adapter/examples/full_application/test_minimal_server.py +45 -0
- mcp_proxy_adapter/examples/full_application/test_server.py +163 -0
- mcp_proxy_adapter/examples/full_application/test_simple_server.py +62 -0
- mcp_proxy_adapter/examples/generate_config.py +502 -0
- mcp_proxy_adapter/examples/proxy_registration_example.py +335 -0
- mcp_proxy_adapter/examples/queue_demo_simple.py +632 -0
- mcp_proxy_adapter/examples/queue_integration_example.py +578 -0
- mcp_proxy_adapter/examples/queue_server_demo.py +82 -0
- mcp_proxy_adapter/examples/queue_server_example.py +85 -0
- mcp_proxy_adapter/examples/queue_server_simple.py +173 -0
- mcp_proxy_adapter/examples/required_certificates.py +208 -0
- mcp_proxy_adapter/examples/run_example.py +77 -0
- mcp_proxy_adapter/examples/run_full_test_suite.py +619 -0
- mcp_proxy_adapter/examples/run_proxy_server.py +153 -0
- mcp_proxy_adapter/examples/run_security_tests_fixed.py +435 -0
- mcp_proxy_adapter/examples/security_test/__init__.py +18 -0
- mcp_proxy_adapter/examples/security_test/auth_manager.py +14 -0
- mcp_proxy_adapter/examples/security_test/ssl_context_manager.py +28 -0
- mcp_proxy_adapter/examples/security_test/test_client.py +159 -0
- mcp_proxy_adapter/examples/security_test/test_result.py +22 -0
- mcp_proxy_adapter/examples/security_test_client.py +72 -0
- mcp_proxy_adapter/examples/setup/__init__.py +24 -0
- mcp_proxy_adapter/examples/setup/certificate_manager.py +215 -0
- mcp_proxy_adapter/examples/setup/config_generator.py +12 -0
- mcp_proxy_adapter/examples/setup/config_validator.py +118 -0
- mcp_proxy_adapter/examples/setup/environment_setup.py +62 -0
- mcp_proxy_adapter/examples/setup/test_files_generator.py +10 -0
- mcp_proxy_adapter/examples/setup/test_runner.py +89 -0
- mcp_proxy_adapter/examples/setup_test_environment.py +235 -0
- mcp_proxy_adapter/examples/simple_protocol_test.py +125 -0
- mcp_proxy_adapter/examples/test_chk_hostname_automated.py +211 -0
- mcp_proxy_adapter/examples/test_config.py +205 -0
- mcp_proxy_adapter/examples/test_config_builder.py +110 -0
- mcp_proxy_adapter/examples/test_examples.py +308 -0
- mcp_proxy_adapter/examples/test_framework_complete.py +267 -0
- mcp_proxy_adapter/examples/test_mcp_server.py +187 -0
- mcp_proxy_adapter/examples/test_protocol_examples.py +337 -0
- mcp_proxy_adapter/examples/universal_client.py +674 -0
- mcp_proxy_adapter/examples/update_config_certificates.py +135 -0
- mcp_proxy_adapter/examples/validate_generator_compatibility.py +385 -0
- mcp_proxy_adapter/examples/validate_generator_compatibility_simple.py +61 -0
- mcp_proxy_adapter/integrations/__init__.py +25 -0
- mcp_proxy_adapter/integrations/queuemgr_integration.py +462 -0
- mcp_proxy_adapter/main.py +311 -0
- mcp_proxy_adapter/openapi.py +375 -0
- mcp_proxy_adapter/schemas/base_schema.json +114 -0
- mcp_proxy_adapter/schemas/openapi_schema.json +314 -0
- mcp_proxy_adapter/schemas/roles.json +37 -0
- mcp_proxy_adapter/schemas/roles_schema.json +162 -0
- mcp_proxy_adapter/version.py +5 -0
- mcp_proxy_adapter-6.9.50.dist-info/METADATA +1088 -0
- mcp_proxy_adapter-6.9.50.dist-info/RECORD +242 -0
- {mcp_proxy_adapter-2.0.1.dist-info → mcp_proxy_adapter-6.9.50.dist-info}/WHEEL +1 -1
- mcp_proxy_adapter-6.9.50.dist-info/entry_points.txt +14 -0
- mcp_proxy_adapter-6.9.50.dist-info/top_level.txt +1 -0
- adapters/__init__.py +0 -16
- analyzers/__init__.py +0 -14
- analyzers/docstring_analyzer.py +0 -199
- analyzers/type_analyzer.py +0 -151
- cli/__init__.py +0 -12
- cli/__main__.py +0 -79
- cli/command_runner.py +0 -233
- dispatchers/__init__.py +0 -14
- dispatchers/base_dispatcher.py +0 -85
- dispatchers/json_rpc_dispatcher.py +0 -198
- generators/__init__.py +0 -14
- generators/endpoint_generator.py +0 -172
- generators/openapi_generator.py +0 -254
- generators/rest_api_generator.py +0 -207
- mcp_proxy_adapter-2.0.1.dist-info/METADATA +0 -272
- mcp_proxy_adapter-2.0.1.dist-info/RECORD +0 -28
- mcp_proxy_adapter-2.0.1.dist-info/licenses/LICENSE +0 -21
- mcp_proxy_adapter-2.0.1.dist-info/top_level.txt +0 -7
- openapi_schema/__init__.py +0 -38
- openapi_schema/command_registry.py +0 -312
- openapi_schema/rest_schema.py +0 -510
- openapi_schema/rpc_generator.py +0 -307
- openapi_schema/rpc_schema.py +0 -416
- validators/__init__.py +0 -14
- validators/base_validator.py +0 -23
- validators/docstring_validator.py +0 -75
- validators/metadata_validator.py +0 -76
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Author: Vasiliy Zdanovskiy
|
|
3
|
+
email: vasilyvz@gmail.com
|
|
4
|
+
|
|
5
|
+
Main certificate utilities for MCP Proxy Adapter.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import Dict, List, Optional, Any
|
|
12
|
+
|
|
13
|
+
from .certificate_creator import CertificateCreator
|
|
14
|
+
from .certificate_validator import CertificateValidator
|
|
15
|
+
from .certificate_extractor import CertificateExtractor
|
|
16
|
+
from .ssl_context_manager import SSLContextManager
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class CertificateUtils:
|
|
22
|
+
"""
|
|
23
|
+
Main utilities for working with certificates.
|
|
24
|
+
|
|
25
|
+
Provides methods for creating CA, server, and client certificates,
|
|
26
|
+
as well as validation and role extraction using mcp_security_framework.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
# Default certificate validity period (1 year)
|
|
30
|
+
DEFAULT_VALIDITY_DAYS = 365
|
|
31
|
+
|
|
32
|
+
# Default key size
|
|
33
|
+
DEFAULT_KEY_SIZE = 2048
|
|
34
|
+
|
|
35
|
+
# Custom OID for roles (same as in RoleUtils)
|
|
36
|
+
ROLE_EXTENSION_OID = "1.3.6.1.4.1.99999.1"
|
|
37
|
+
|
|
38
|
+
@staticmethod
|
|
39
|
+
def create_ca_certificate(
|
|
40
|
+
common_name: str,
|
|
41
|
+
output_dir: str,
|
|
42
|
+
validity_days: int = DEFAULT_VALIDITY_DAYS,
|
|
43
|
+
key_size: int = DEFAULT_KEY_SIZE,
|
|
44
|
+
) -> Dict[str, str]:
|
|
45
|
+
"""
|
|
46
|
+
Create a CA certificate and private key.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
common_name: Common name for the CA certificate
|
|
50
|
+
output_dir: Directory to save certificate and key files
|
|
51
|
+
validity_days: Certificate validity period in days
|
|
52
|
+
key_size: RSA key size in bits
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
Dictionary with paths to created files
|
|
56
|
+
"""
|
|
57
|
+
return CertificateCreator.create_ca_certificate(
|
|
58
|
+
common_name, output_dir, validity_days, key_size
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
@staticmethod
|
|
62
|
+
def create_server_certificate(
|
|
63
|
+
common_name: str,
|
|
64
|
+
output_dir: str,
|
|
65
|
+
ca_cert_path: str,
|
|
66
|
+
ca_key_path: str,
|
|
67
|
+
validity_days: int = DEFAULT_VALIDITY_DAYS,
|
|
68
|
+
key_size: int = DEFAULT_KEY_SIZE,
|
|
69
|
+
san_dns: Optional[List[str]] = None,
|
|
70
|
+
san_ip: Optional[List[str]] = None,
|
|
71
|
+
) -> Dict[str, str]:
|
|
72
|
+
"""
|
|
73
|
+
Create a server certificate signed by CA.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
common_name: Common name for the server certificate
|
|
77
|
+
output_dir: Directory to save certificate and key files
|
|
78
|
+
ca_cert_path: Path to CA certificate
|
|
79
|
+
ca_key_path: Path to CA private key
|
|
80
|
+
validity_days: Certificate validity period in days
|
|
81
|
+
key_size: RSA key size in bits
|
|
82
|
+
san_dns: List of DNS names for SAN extension
|
|
83
|
+
san_ip: List of IP addresses for SAN extension
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
Dictionary with paths to created files
|
|
87
|
+
"""
|
|
88
|
+
return CertificateCreator.create_server_certificate(
|
|
89
|
+
common_name, output_dir, ca_cert_path, ca_key_path,
|
|
90
|
+
validity_days, key_size, san_dns, san_ip
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
@staticmethod
|
|
94
|
+
def create_client_certificate(
|
|
95
|
+
common_name: str,
|
|
96
|
+
output_dir: str,
|
|
97
|
+
ca_cert_path: str,
|
|
98
|
+
ca_key_path: str,
|
|
99
|
+
validity_days: int = DEFAULT_VALIDITY_DAYS,
|
|
100
|
+
key_size: int = DEFAULT_KEY_SIZE,
|
|
101
|
+
) -> Dict[str, str]:
|
|
102
|
+
"""
|
|
103
|
+
Create a client certificate signed by CA.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
common_name: Common name for the client certificate
|
|
107
|
+
output_dir: Directory to save certificate and key files
|
|
108
|
+
ca_cert_path: Path to CA certificate
|
|
109
|
+
ca_key_path: Path to CA private key
|
|
110
|
+
validity_days: Certificate validity period in days
|
|
111
|
+
key_size: RSA key size in bits
|
|
112
|
+
|
|
113
|
+
Returns:
|
|
114
|
+
Dictionary with paths to created files
|
|
115
|
+
"""
|
|
116
|
+
return CertificateCreator.create_client_certificate(
|
|
117
|
+
common_name, output_dir, ca_cert_path, ca_key_path,
|
|
118
|
+
validity_days, key_size
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
@staticmethod
|
|
122
|
+
def extract_roles_from_certificate(cert_path: str) -> List[str]:
|
|
123
|
+
"""
|
|
124
|
+
Extract roles from certificate.
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
cert_path: Path to certificate file
|
|
128
|
+
|
|
129
|
+
Returns:
|
|
130
|
+
List of roles found in certificate
|
|
131
|
+
"""
|
|
132
|
+
return CertificateExtractor.extract_roles_from_certificate(cert_path)
|
|
133
|
+
|
|
134
|
+
@staticmethod
|
|
135
|
+
def extract_roles_from_certificate_object(cert) -> List[str]:
|
|
136
|
+
"""
|
|
137
|
+
Extract roles from certificate object.
|
|
138
|
+
|
|
139
|
+
Args:
|
|
140
|
+
cert: Certificate object
|
|
141
|
+
|
|
142
|
+
Returns:
|
|
143
|
+
List of roles found in certificate
|
|
144
|
+
"""
|
|
145
|
+
return CertificateExtractor.extract_roles_from_certificate_object(cert)
|
|
146
|
+
|
|
147
|
+
@staticmethod
|
|
148
|
+
def extract_permissions_from_certificate(cert_path: str) -> List[str]:
|
|
149
|
+
"""
|
|
150
|
+
Extract permissions from certificate.
|
|
151
|
+
|
|
152
|
+
Args:
|
|
153
|
+
cert_path: Path to certificate file
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
List of permissions found in certificate
|
|
157
|
+
"""
|
|
158
|
+
return CertificateExtractor.extract_permissions_from_certificate(cert_path)
|
|
159
|
+
|
|
160
|
+
@staticmethod
|
|
161
|
+
def validate_certificate_chain(cert_path: str, ca_cert_path: str) -> bool:
|
|
162
|
+
"""
|
|
163
|
+
Validate certificate chain.
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
cert_path: Path to certificate file
|
|
167
|
+
ca_cert_path: Path to CA certificate file
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
True if certificate chain is valid, False otherwise
|
|
171
|
+
"""
|
|
172
|
+
return CertificateValidator.validate_certificate_chain(cert_path, ca_cert_path)
|
|
173
|
+
|
|
174
|
+
@staticmethod
|
|
175
|
+
def get_certificate_expiry(cert_path: str) -> Optional[datetime]:
|
|
176
|
+
"""
|
|
177
|
+
Get certificate expiry date.
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
cert_path: Path to certificate file
|
|
181
|
+
|
|
182
|
+
Returns:
|
|
183
|
+
Certificate expiry date or None if error
|
|
184
|
+
"""
|
|
185
|
+
return CertificateValidator.get_certificate_expiry(cert_path)
|
|
186
|
+
|
|
187
|
+
@staticmethod
|
|
188
|
+
def validate_certificate(cert_path: str) -> bool:
|
|
189
|
+
"""
|
|
190
|
+
Validate certificate file.
|
|
191
|
+
|
|
192
|
+
Args:
|
|
193
|
+
cert_path: Path to certificate file
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
True if certificate is valid, False otherwise
|
|
197
|
+
"""
|
|
198
|
+
return CertificateValidator.validate_certificate(cert_path)
|
|
199
|
+
|
|
200
|
+
@staticmethod
|
|
201
|
+
def get_certificate_info(cert_path: str) -> Dict[str, Any]:
|
|
202
|
+
"""
|
|
203
|
+
Get certificate information.
|
|
204
|
+
|
|
205
|
+
Args:
|
|
206
|
+
cert_path: Path to certificate file
|
|
207
|
+
|
|
208
|
+
Returns:
|
|
209
|
+
Dictionary with certificate information
|
|
210
|
+
"""
|
|
211
|
+
return CertificateValidator.get_certificate_info(cert_path)
|
|
212
|
+
|
|
213
|
+
@staticmethod
|
|
214
|
+
def validate_private_key(key_path: str) -> Dict[str, Any]:
|
|
215
|
+
"""
|
|
216
|
+
Validate private key file.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
key_path: Path to private key file
|
|
220
|
+
|
|
221
|
+
Returns:
|
|
222
|
+
Dictionary with validation results
|
|
223
|
+
"""
|
|
224
|
+
return CertificateValidator.validate_private_key(key_path)
|
|
225
|
+
|
|
226
|
+
@staticmethod
|
|
227
|
+
def create_ssl_context(
|
|
228
|
+
cert_file: Optional[str] = None,
|
|
229
|
+
key_file: Optional[str] = None,
|
|
230
|
+
ca_cert_file: Optional[str] = None,
|
|
231
|
+
verify_mode: int = 0, # ssl.CERT_NONE
|
|
232
|
+
check_hostname: bool = False,
|
|
233
|
+
) -> Any:
|
|
234
|
+
"""
|
|
235
|
+
Create SSL context for server or client.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
cert_file: Path to certificate file
|
|
239
|
+
key_file: Path to private key file
|
|
240
|
+
ca_cert_file: Path to CA certificate file
|
|
241
|
+
verify_mode: SSL verification mode
|
|
242
|
+
check_hostname: Whether to check hostname
|
|
243
|
+
|
|
244
|
+
Returns:
|
|
245
|
+
SSL context
|
|
246
|
+
"""
|
|
247
|
+
return SSLContextManager.create_ssl_context(
|
|
248
|
+
cert_file, key_file, ca_cert_file, verify_mode, check_hostname
|
|
249
|
+
)
|