consolidation of some of the modules, localization fixes, product advisories work, qa work

This commit is contained in:
master
2026-03-05 03:54:22 +02:00
parent 7bafcc3eef
commit 8e1cb9448d
3878 changed files with 72600 additions and 46861 deletions

View File

@@ -1,411 +1,367 @@
{
"_meta": { "locale": "ru-RU", "namespace": "common", "version": "1.1" },
"common.error.generic": "Something went wrong.",
"common.error.not_found": "The requested resource was not found.",
"common.error.entity_not_found": "{0} '{1}' not found.",
"common.error.unauthorized": "You do not have permission to perform this action.",
"common.error.forbidden": "Access denied.",
"common.error.bad_request": "The request is invalid.",
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
"common.error.timeout": "Request timed out after {0} seconds.",
"common.error.server_error": "An internal server error occurred. Please try again later.",
"common.error.service_unavailable": "The service is temporarily unavailable.",
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
"common.error.network": "Network error. Check your connection.",
"common.error.body_required": "Request body is required.",
"common.error.deserialization_failed": "Failed to deserialize {0}.",
"common.error.not_supported": "{0} is not supported.",
"common.error.already_exists": "{0} '{1}' already exists.",
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
"common.validation.required": "{0} is required.",
"common.validation.invalid": "{0} is invalid.",
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
"common.validation.too_short": "{0} must be at least {1} characters.",
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
"common.validation.invalid_format": "{0} has an invalid format.",
"common.validation.duplicate": "{0} already exists.",
"common.validation.empty_not_allowed": "{0} must not be empty.",
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
"common.validation.greater_than_zero": "{0} must be greater than zero.",
"common.validation.non_negative": "{0} must be non-negative.",
"common.validation.at_least_one": "At least one {0} must be configured.",
"common.validation.at_least_n": "{0} must have at least {1} entries.",
"common.validation.null_or_empty": "{0} cannot be null or empty.",
"common.validation.absolute_uri": "{0} must be an absolute URI.",
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
"common.actions.save": "Save",
"common.actions.cancel": "Cancel",
"common.actions.delete": "Delete",
"common.actions.confirm": "Confirm",
"common.actions.submit": "Submit",
"common.actions.close": "Close",
"common.actions.retry": "Retry",
"common.actions.expand": "Expand",
"common.actions.collapse": "Collapse",
"common.actions.show_more": "Show more",
"common.actions.show_less": "Show less",
"common.status.healthy": "Healthy",
"common.status.degraded": "Degraded",
"common.status.unavailable": "Unavailable",
"common.status.unknown": "Unknown",
"common.status.active": "Active",
"common.status.inactive": "Inactive",
"common.status.pending": "Pending",
"common.status.running": "Running",
"common.status.completed": "Completed",
"common.status.failed": "Failed",
"common.status.canceled": "Canceled",
"common.status.blocked": "Blocked",
"common.severity.critical": "Critical",
"common.severity.high": "High",
"common.severity.medium": "Medium",
"common.severity.low": "Low",
"common.severity.info": "Info",
"common.severity.none": "None",
"common.time.seconds_ago": "{0} seconds ago",
"common.time.minutes_ago": "{0} minutes ago",
"common.time.hours_ago": "{0} hours ago",
"common.time.days_ago": "{0} days ago",
"common.time.just_now": "Just now",
"common.ui.loading": "Loading...",
"common.ui.saving": "Saving...",
"common.ui.deleting": "Deleting...",
"common.ui.submitting": "Submitting...",
"common.ui.no_results": "No results found.",
"common.ui.offline": "You are offline.",
"common.ui.reconnecting": "Reconnecting...",
"common.ui.back_online": "Back online.",
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
"auth.dpop.options_required": "DPoP options must be provided.",
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
"auth.dpop.token_three_segments": "Token must contain three segments.",
"auth.dpop.segment_out_of_range": "Segment index out of range.",
"auth.dpop.header_decode_failed": "Unable to decode header.",
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
"auth.dpop.proof_future": "DPoP proof issued in the future.",
"auth.dpop.proof_expired": "DPoP proof expired.",
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
"auth.dpop.replay_detected": "DPoP proof already used.",
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
"config.tenant.id_required": "Each tenant requires an id (slug).",
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
"config.storage.connection_required": "Authority storage requires a connection string.",
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
"crypto.registry.empty": "At least one crypto provider must be registered.",
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
"crypto.registry.active_profile_required": "Active profile is required.",
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
"crypto.key.algorithm_required": "Algorithm identifier is required.",
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
"crypto.key.private_material_required": "Private key material must be provided.",
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
"crypto.digest.required": "Digest is required.",
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
"crypto.gost.not_der": "Signature is not DER encoded.",
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
"common.provcache.no_chunks_provided": "No chunks provided.",
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
"common.provcache.signer_not_configured": "Signer is not configured.",
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
"common.provcache.artifact_reference_required": "Artifact reference is required.",
"common.provcache.artifact_digest_required": "Artifact digest is required.",
"common.provcache.decision_digest_required": "DecisionDigest is required.",
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
"common.provcache.digest_empty": "Digest cannot be empty.",
"common.provcache.time_window_required": "Time window cannot be null or empty.",
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
"common.evidence.bundle_alert_id_required": "AlertId is required",
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
"common.audit.replay_token_empty": "Token cannot be empty.",
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
"common.artifact.file_not_accessible": "File not accessible: {0}",
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
"common.eventing.no_entry_assembly": "No entry assembly found",
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
"_meta": {
"locale": "ru-RU",
"namespace": "common",
"version": "1.1"
},
"common.error.generic": "Что-то пошло не так.",
"common.error.not_found": "Запрошенный ресурс не найден.",
"common.error.entity_not_found": "{0} '{1}' не найден.",
"common.error.unauthorized": "У вас нет разрешения на выполнение этого действия.",
"common.error.forbidden": "Доступ запрещен.",
"common.error.bad_request": "Запрос недействителен.",
"common.error.conflict": "Произошел конфликт. Возможно, ресурс был изменен.",
"common.error.timeout": "Тайм-аут запроса истек через {0} секунд.",
"common.error.server_error": "Произошла внутренняя ошибка сервера. Пожалуйста, повторите попытку позже.",
"common.error.service_unavailable": "Услуга временно недоступна.",
"common.error.too_many_requests": "Слишком много запросов. Пожалуйста, подождите и повторите попытку.",
"common.error.network": "Ошибка сети. Проверьте свое соединение.",
"common.error.body_required": "Требуется тело запроса.",
"common.error.deserialization_failed": "Не удалось десериализовать {0}.",
"common.error.not_supported": "{0} не поддерживается.",
"common.error.already_exists": "{0} '{1}' уже существует.",
"common.error.revoked": "{0} '{1}' отозван и не может быть использован.",
"common.error.state_invalid": "{0} '{1}' не находится в ожидаемом состоянии. Текущее состояние: {2}",
"common.validation.required": "Требуется {0}.",
"common.validation.invalid": "{0} недействителен.",
"common.validation.too_long": "{0} превышает максимальную длину символов {1}.",
"common.validation.too_short": "{0} должен содержать не менее {1} символов.",
"common.validation.out_of_range": "{0} должен находиться между {1} и {2}.",
"common.validation.invalid_format": "{0} имеет неверный формат.",
"common.validation.duplicate": "{0} уже существует.",
"common.validation.empty_not_allowed": "{0} не должен быть пустым.",
"common.validation.empty_after_trim": "{0} не должен быть пустым после обрезки.",
"common.validation.greater_than_zero": "{0} должно быть больше нуля.",
"common.validation.non_negative": "{0} не должен быть отрицательным.",
"common.validation.at_least_one": "Должен быть настроен хотя бы один {0}.",
"common.validation.at_least_n": "{0} должен содержать как минимум записи {1}.",
"common.validation.null_or_empty": "{0} не может быть нулевым или пустым.",
"common.validation.absolute_uri": "{0} должен быть абсолютным URI.",
"common.validation.invalid_regex": "{0} '{1}' не является допустимым регулярным выражением.",
"common.validation.unknown_value": "{0} '{1}' не распознан. Допустимые значения: {2}.",
"common.validation.max_exceeded": "{0} должен содержать не более символов {1}.",
"common.actions.save": "Сохранить",
"common.actions.cancel": "Отмена",
"common.actions.delete": "Удалить",
"common.actions.confirm": "Подтвердить",
"common.actions.submit": "Отправить",
"common.actions.close": "Закрыть",
"common.actions.retry": "Повторить",
"common.actions.expand": "Развернуть",
"common.actions.collapse": "Свернуть",
"common.actions.show_more": "Показать больше",
"common.actions.show_less": "Показать меньше",
"common.status.healthy": "Исправно",
"common.status.degraded": "Ухудшено",
"common.status.unavailable": "Недоступно",
"common.status.unknown": "Неизвестно",
"common.status.active": "Активно",
"common.status.inactive": "Неактивно",
"common.status.pending": "В ожидании",
"common.status.running": "Выполняется",
"common.status.completed": "Завершено",
"common.status.failed": "Сбой",
"common.status.canceled": "Отменено",
"common.status.blocked": "Заблокировано",
"common.severity.critical": "Критический",
"common.severity.high": "Высокий",
"common.severity.medium": "Средний",
"common.severity.low": "Низкий",
"common.severity.info": "Информация",
"common.severity.none": "Нет",
"common.time.seconds_ago": "{0} секунды назад",
"common.time.minutes_ago": "{0} минут назад",
"common.time.hours_ago": "{0} часов назад",
"common.time.days_ago": "{0} дней назад",
"common.time.just_now": "Прямо сейчас",
"common.ui.loading": "Загрузка...",
"common.ui.saving": "Сохранение...",
"common.ui.deleting": "Удаление...",
"common.ui.submitting": "Отправка...",
"common.ui.no_results": "Результаты не найдены.",
"common.ui.offline": "Вы не в сети.",
"common.ui.reconnecting": "Повторное подключение...",
"common.ui.back_online": "Снова в сети.",
"auth.dpop.proof_lifetime_invalid": "Срок действия доказательства DPoP должен быть больше нуля.",
"auth.dpop.clock_skew_invalid": "Допустимый сдвиг часов DPoP должен составлять от 0 секунд до 5 минут.",
"auth.dpop.replay_window_invalid": "Окно воспроизведения DPoP должно быть больше или равно нулю.",
"auth.dpop.algorithm_required": "Должен быть настроен хотя бы один разрешенный алгоритм DPoP.",
"auth.dpop.algorithm_empty_after_normalization": "Разрешенные алгоритмы DPoP не могут быть пустыми после нормализации.",
"auth.dpop.options_required": "Должны быть предоставлены параметры DPoP.",
"auth.dpop.nonce_ttl_invalid": "Nonce TTL должен быть больше нуля.",
"auth.dpop.nonce_max_issuance_invalid": "Максимальная выдача в минуту должна быть не менее 1.",
"auth.dpop.nonce_store_required": "Необходимо указать Dpop.Nonce.Store.",
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store должен быть либо 'memory', либо 'redis'.",
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString необходимо указать при использовании хранилища 'redis'.",
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences должен включать хотя бы одну аудиторию.",
"auth.dpop.token_three_segments": "Токен должен содержать три сегмента.",
"auth.dpop.segment_out_of_range": "Индекс сегмента вне диапазона.",
"auth.dpop.header_decode_failed": "Невозможно декодировать заголовок.",
"auth.dpop.header_missing_typ": "В доказательстве DPoP отсутствует заголовок typ=dpop+jwt.",
"auth.dpop.header_missing_alg": "В доказательстве DPoP отсутствует заголовок alg.",
"auth.dpop.header_unsupported_alg": "Неподдерживаемый алгоритм DPoP.",
"auth.dpop.header_missing_jwk": "В доказательстве DPoP отсутствует заголовок jwk.",
"auth.dpop.header_invalid_jwk": "Недопустимый заголовок jwk для проверки DPoP.",
"auth.dpop.payload_decode_failed": "Невозможно декодировать полезную нагрузку.",
"auth.dpop.payload_missing_htm": "Доказательство DPoP отсутствует в претензии HTM.",
"auth.dpop.payload_htm_mismatch": "DPoP htm не соответствует методу запроса.",
"auth.dpop.payload_missing_htu": "Доказательство DPoP об отсутствии претензии HTU.",
"auth.dpop.payload_htu_mismatch": "DPoP htu не соответствует URI запроса.",
"auth.dpop.payload_missing_iat": "Доказательство DPoP отсутствует в претензии.",
"auth.dpop.payload_missing_jti": "DPoP доказывает отсутствие претензии jti.",
"auth.dpop.payload_iat_invalid": "Подтверждение DPoP. Заявка не является действительным номером.",
"auth.dpop.nonce_missing": "DPoP-доказательство отсутствия заявления nonce.",
"auth.dpop.nonce_mismatch": "Несоответствие nonce DPoP.",
"auth.dpop.proof_future": "Доказательство DPoP будет выдано в будущем.",
"auth.dpop.proof_expired": "Срок действия доказательства DPoP истек.",
"auth.dpop.signature_failed": "Проверка подписи DPoP не удалась.",
"auth.dpop.replay_detected": "Доказательство DPoP уже использовано.",
"config.authority.schema_version_required": "Для конфигурации центра требуется положительная версия схемы.",
"config.authority.issuer_required": "Для настройки центра требуется URL-адрес эмитента.",
"config.authority.issuer_absolute": "Эмитент полномочий должен быть абсолютным URI.",
"config.authority.issuer_https": "Эмитент полномочий должен использовать HTTPS, если только он не работает на интерфейсе обратной связи.",
"config.authority.duplicate_tenant": "Конфигурация authority содержит повторяющийся идентификатор тенанта '{0}'.",
"config.authority.property_greater_than_zero": "Для конфигурации полномочий требуется, чтобы значение {0} было больше нуля.",
"config.authority.property_max": "Для конфигурации полномочий требуется, чтобы {0} был меньше или равен {1}.",
"config.authority.remote_inference_required": "Для конфигурации органа управления требуется как минимум один консультативный профиль удаленного вывода AI, если удаленный вывод включен.",
"config.tenant.id_required": "Каждому тенанту требуется идентификатор (slug).",
"config.tenant.id_format": "Идентификатор тенанта '{0}' должен содержать только строчные буквы, цифры и дефис.",
"config.tenant.project_format": "Тенант '{0}' определяет проект '{1}', который должен содержать только строчные буквы, цифры и дефис.",
"config.tenant.role_missing_config": "Тенант '{0}' определяет роль '{1}' без конфигурации.",
"config.tenant.role_scope_required": "Роль '{1}' тенанта '{0}' должна указывать как минимум одну область.",
"config.tenant.role_unknown_scope": "Роль '{1}' тенанта '{0}' ссылается на неизвестную область '{2}'.",
"config.tenant.role_unsupported_attribute": "Роль '{1}' тенанта '{0}' определяет неподдерживаемый атрибут '{2}'. Допустимые атрибуты: env, owner, business_tier.",
"config.tenant.delegation_max_tokens": "Для тенанта '{0}' значение delegation.maxActiveTokens должно быть больше нуля, если оно задано.",
"config.tenant.remote_inference_disabled": "Согласие на удаленный вывод для тенанта не может быть предоставлено, если удаленный вывод отключен.",
"config.tenant.remote_inference_consent_version_length": "Поле consentVersion удаленного вывода для тенанта должно содержать не более {0} символов.",
"config.tenant.remote_inference_consented_by_length": "Поле consentedBy удаленного вывода для тенанта должно содержать не более {0} символов.",
"config.tenant.remote_inference_consent_version_required": "Согласие на удаленный вывод для тенанта требует consentVersion, если consentGranted=true.",
"config.tenant.remote_inference_consented_at_required": "Согласие на удаленный вывод для тенанта требует consentedAt, если consentGranted=true.",
"config.service_account.id_required": "Для начальных значений учетной записи службы делегирования требуется идентификатор accountId.",
"config.service_account.id_format": "Идентификатор сервисного аккаунта '{0}' должен содержать строчные буквы, цифры, двоеточие, подчеркивание или дефис.",
"config.service_account.tenant_required": "Служебная учетная запись '{0}' требует назначения тенанта.",
"config.service_account.tenant_unknown": "Служебная учетная запись '{0}' ссылается на неизвестного тенанта '{1}'.",
"config.service_account.scope_required": "Учетная запись службы '{0}' должна указать хотя бы одну разрешенную область.",
"config.service_account.unsupported_attribute": "Учетная запись службы '{0}' определяет неподдерживаемый атрибут '{1}'. Разрешенные атрибуты: env, Owner, business_tier.",
"config.plugin.assembly_required": "Плагин центра сертификации '{0}' должен определить либо имя сборки, либо путь сборки.",
"config.plugin.config_file_required": "Плагин полномочий '{0}' должен определить файл конфигурации.",
"config.plugin.config_file_missing": "Плагин полномочий '{0}' указывает файл конфигурации '{1}', который не существует.",
"config.plugin.unknown_capability": "Плагин полномочий '{0}' объявляет неизвестную возможность '{1}'. Допустимые значения: пароль, mfa, clientProvisioning, bootstrap.",
"config.plugin.descriptor_null": "Дескриптор плагина полномочий '{0}' имеет значение null.",
"config.delegation.duplicate_account": "Конфигурация делегирования содержит повторяющийся идентификатор сервисного аккаунта '{0}'.",
"config.delegation.quota_max_tokens": "Для конфигурации делегирования полномочий требуется, чтобы значение {0}.MaxActiveTokens было больше нуля.",
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace не должен быть отрицательным.",
"config.mtls.audiences_required": "Если включен Mtls.EnforceForAudiences, он должен включать хотя бы одну аудиторию.",
"config.mtls.ca_empty": "Записи Mtls.AllowedCertificateAuthorities не должны быть пустыми.",
"config.mtls.san_types_required": "Mtls.AllowedSanTypes должен включать хотя бы одну запись, если он включен.",
"config.mtls.subject_patterns_empty": "Записи Mtls.AllowedSubjectPatterns не должны быть пустыми.",
"config.mtls.subject_pattern_invalid": "Запись Mtls.AllowedSubjectPatterns '{0}' не является допустимым регулярным выражением.",
"config.signing.key_id_required": "Для конфигурации подписи центра требуется signing.activeKeyId.",
"config.signing.key_path_required": "Для конфигурации подписи центра требуется signing.keyPath.",
"config.signing.jwks_cache_range": "Конфигурация подписи центра требует, чтобы signing.jwksCacheLifetime находился в диапазоне от 00:00:01 до 01:00:00.",
"config.signing.additional_key_id_required": "Для дополнительных ключей подписи требуется keyId.",
"config.signing.additional_key_path_required": "Для подписания ключа '{0}' требуется путь.",
"config.bootstrap.api_key_required": "Для конфигурации начальной загрузки центра требуется ключ API, если он включен.",
"config.bootstrap.idp_required": "Для конфигурации начальной загрузки центра требуется имя поставщика удостоверений по умолчанию, если оно включено.",
"config.rate_limit.permit_limit": "Ограничение скорости полномочий '{0}' требует, чтобы значение PermitLimit было больше нуля.",
"config.rate_limit.queue_limit": "Ограничение скорости полномочий '{0}'queueLimit не может быть отрицательным.",
"config.rate_limit.window": "Окно ограничения скорости полномочий '{0}' должно быть больше нуля и не превышать одного часа.",
"config.storage.connection_required": "Для хранения полномочий требуется строка подключения.",
"config.storage.timeout_invalid": "Тайм-аут команды хранения полномочий должен быть больше нуля.",
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType должен быть указан, если включены токены подтверждения.",
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime должно быть больше нуля.",
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime должен быть больше нуля и больше или равен значению defaultLifetime.",
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId должен быть указан, если включены токены подтверждения.",
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath должен быть указан, если включены токены подтверждения.",
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime должно находиться в диапазоне от 00:00:01 до 01:00:00.",
"config.exceptions.null_template": "Записи шаблона маршрутизации исключений центра не должны иметь значение NULL.",
"config.exceptions.duplicate_template": "Шаблон маршрутизации исключений центра '{0}' настроен более одного раза.",
"config.exceptions.template_id_required": "Для шаблонов маршрутизации исключений центра требуется идентификатор.",
"config.exceptions.template_route_required": "Для шаблона маршрутизации исключений центра '{0}' требуется AuthorityRouteId.",
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath должен быть указан, если принудительное применение включено.",
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge должно находиться в диапазоне от 00:00:01 до 7.00:00:00.",
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime должен быть больше нуля и меньше или равен AirGap.SealedMode.MaxEvidenceAge.",
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts должен включать хотя бы один хост, когда он включен.",
"config.escalation.scope_required": "Необходимо указать notifications.escalation.scope.",
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience должен быть указан, если включены токены защиты от подделки.",
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime должно быть больше нуля.",
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime должен быть больше нуля и больше или равен значению defaultLifetime.",
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries не должен быть отрицательным.",
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength должно быть больше нуля.",
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime должно быть больше нуля, если включены токены вложений.",
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime должен быть больше нуля и больше или равен значению defaultLifetime.",
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType должен быть указан, если включены токены вложений.",
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries не должен быть отрицательным.",
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength должно быть больше нуля.",
"config.api_lifecycle.sunset_after_deprecation": "Дата прекращения устаревшей аутентификации должна наступать после даты прекращения поддержки.",
"config.api_lifecycle.docs_url_format": "URL-адрес устаревшей документации по аутентификации должен быть абсолютным URL-адресом HTTP или HTTPS.",
"crypto.provider.algorithm_not_supported": "Алгоритм подписи '{0}' не поддерживается провайдером '{1}'.",
"crypto.provider.hash_not_supported": "Алгоритм хеширования '{0}' не поддерживается провайдером '{1}'.",
"crypto.provider.verify_not_supported": "Алгоритм проверки '{0}' не поддерживается провайдером '{1}'.",
"crypto.provider.key_not_registered": "Ключ подписи '{0}' не зарегистрирован у провайдера '{1}'.",
"crypto.provider.key_algorithm_mismatch": "Ключ подписи '{0}' зарегистрирован для алгоритма '{1}', а не '{2}'.",
"crypto.provider.ec_keys_only": "Поставщик '{0}' принимает только ключи подписи EC.",
"crypto.provider.no_password_hashing": "Поставщик '{0}' не предоставляет возможности хеширования паролей.",
"crypto.provider.no_content_hashing": "Провайдер '{0}' не поддерживает хеширование контента.",
"crypto.provider.no_ephemeral_verification": "Провайдер '{0}' не поддерживает эфемерную проверку.",
"crypto.provider.not_signing_capable": "Алгоритм подписи '{0}' не поддерживается провайдером '{1}'.",
"crypto.provider.es256_only": "Поставщик '{0}' в настоящее время поддерживает только ключи подписи ES256.",
"crypto.provider.p256_required": "Ключи подписи ES256 должны использовать кривую NIST P-256.",
"crypto.provider.curve_mismatch": "Несоответствие кривой ключа подписи. Ожидаемая кривая '{0}' для алгоритма '{1}'.",
"crypto.registry.empty": "Должен быть зарегистрирован хотя бы один криптопровайдер.",
"crypto.registry.algorithm_required": "Требуется идентификатор алгоритма.",
"crypto.registry.signing_not_supported": "Алгоритм подписи '{0}' не поддерживается ни одним зарегистрированным поставщиком.",
"crypto.registry.hash_not_supported": "Алгоритм хеширования '{0}' не поддерживается ни одним зарегистрированным поставщиком.",
"crypto.registry.verify_not_supported": "Алгоритм проверки '{0}' не поддерживается ни одним зарегистрированным провайдером.",
"crypto.registry.active_profile_required": "Активный профиль обязателен.",
"crypto.registry.profile_not_found": "Идентификатор профиля '{0}' не найден в реестре.",
"crypto.registry.profile_id_required": "Идентификатор профиля не может быть нулевым или пустым.",
"crypto.key.algorithm_required": "Требуется идентификатор алгоритма.",
"crypto.key.private_scalar_required": "Параметры закрытого ключа должны включать скалярный компонент.",
"crypto.key.verification_only": "Этот конструктор предназначен только для ключей, предназначенных только для проверки. Установите для параметра VerificationOnly значение true.",
"crypto.key.public_xy_required": "Параметры открытого ключа должны включать координаты X и Y.",
"crypto.key.private_material_required": "Должен быть предоставлен материал закрытого ключа.",
"crypto.hash.algorithm_unsupported": "Неподдерживаемый алгоритм хеширования '{0}'.",
"crypto.hash.purpose_required": "Цель не может быть нулевой или пустой.",
"crypto.hmac.algorithm_unknown": "Неизвестный алгоритм HMAC '{0}'.",
"crypto.hmac.algorithm_unsupported": "Неподдерживаемый алгоритм HMAC '{0}'.",
"crypto.ecdsa.algorithm_unsupported": "Неподдерживаемый алгоритм подписи ECDSA '{0}'.",
"crypto.ecdsa.curve_unsupported": "Неподдерживаемое отображение кривой ECDSA для алгоритма '{0}'.",
"crypto.digest.required": "Дайджест обязателен.",
"crypto.digest.prefix_required": "{0} должен начинаться с '{1}'.",
"crypto.digest.algorithm_unsupported": "Неподдерживаемый алгоритм дайджеста в '{0}'. Поддерживается только sha256.",
"crypto.digest.hex_length": "{0} должен содержать шестнадцатеричные символы {1}.",
"crypto.password.memory_cost_invalid": "Стоимость памяти для хеширования паролей должна быть больше нуля.",
"crypto.password.iterations_invalid": "Число итераций хеширования пароля должно быть больше нуля.",
"crypto.password.parallelism_invalid": "Параллелизм хеширования паролей должен быть больше нуля.",
"crypto.password.algorithm_mismatch": "{0} поддерживает только алгоритм {1}.",
"crypto.password.pbkdf2_iterations": "PBKDF2 требует положительного количества итераций.",
"crypto.gost.not_der": "Подпись не закодирована в формате DER.",
"crypto.gost.invalid_der": "Неверная структура DER для подписи ГОСТ.",
"crypto.gost.raw_length": "Необработанная подпись ГОСТ должна иметь размер {0} байт.",
"crypto.gost.neither_format": "Полезная нагрузка подписи не является ни форматом DER, ни необработанным форматом ГОСТ.",
"crypto.gost.coordinate_overflow": "Координата превышает ожидаемую длину.",
"crypto.profile.unknown_purpose": "Неизвестное назначение хэша '{0}' в профиле '{1}'.",
"crypto.compliance.at_least_one_signing": "Должен быть указан хотя бы один алгоритм подписи.",
"crypto.compliance.at_least_one_hash": "Должен быть указан хотя бы один алгоритм хеширования.",
"crypto.ed25519.private_key_size": "Закрытый ключ Ed25519 должен иметь длину 32 или 64 байта.",
"crypto.ed25519.public_key_size": "Открытый ключ Ed25519 должен иметь длину 32 байта.",
"crypto.ed25519.no_hashing": "Поставщик BouncyCastle Ed25519 не предоставляет возможности хеширования.",
"crypto.ed25519.raw_key_required": "Поставщику '{0}' требуется необработанный материал закрытого ключа Ed25519.",
"crypto.sm.no_password_hashing": "Поставщик SM не предоставляет хеширование паролей.",
"crypto.sm.raw_key_required": "Поставщик SM2 требует необработанных байтов закрытого ключа (PKCS#8 DER).",
"crypto.sm.unsupported_format": "Неподдерживаемый формат ключа SM2. Ожидайте PEM или PKCS#8 DER.",
"crypto.sm.disabled": "Провайдер '{0}' отключен. Установите {1}=1 (или отключите RequireEnvironmentGate), чтобы включить программное обеспечение SM2/SM3.",
"crypto.di.registry_empty": "Реестр криптопровайдеров не может быть пустым. Настройте хотя бы одного поставщика для развертываний RU.",
"crypto.di.ru_openssl_required": "Для базовой версии Linux RU требуется поставщик 'ru.openssl.gost' (задайте STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 для явного переопределения).",
"crypto.di.ru_provider_required": "Базовая версия RU Linux настроена неправильно: ru.openssl.gost и ru.pkcs11 отключены через среду. Включите хотя бы одного провайдера.",
"crypto.di.no_plugins_loaded": "Ни один поставщик криптовалюты не был загружен. Проверьте конфигурацию и манифест плагина.",
"crypto.kms.rotation_via_policy": "Ротация {0} должна управляться с помощью политик или расписаний {1}.",
"crypto.kms.revocation_via_policy": "Отзывом {0} необходимо управлять через API-интерфейсы {1} или консоль.",
"crypto.kms.public_key_missing_x": "В открытом ключе отсутствует координата X.",
"crypto.kms.public_key_missing_y": "В открытом ключе отсутствует координата Y.",
"crypto.kms.hash_failed": "Не удалось хешировать полезные данные с помощью SHA-256.",
"crypto.kms.key_not_found": "Ключ '{0}' не существует.",
"crypto.kms.key_revoked": "Ключ '{0}' отозван и не подлежит ротации.",
"crypto.kms.key_revoked_signing": "Ключ '{0}' отозван и не может использоваться для подписи.",
"crypto.kms.key_version_not_found": "Версия ключа '{0}' не существует для ключа '{1}'.",
"crypto.kms.key_no_active_version": "Ключ '{0}' не имеет активной версии.",
"crypto.kms.key_version_inactive": "Ключевая версия '{0}' не активна. Текущее состояние: {1}",
"crypto.kms.key_no_public_material": "Ключ '{0}' версии '{1}' не содержит материала открытого ключа.",
"crypto.kms.algorithm_unsupported": "Алгоритм '{0}' не поддерживается файловым драйвером KMS.",
"crypto.kms.curve_unsupported": "Кривая '{0}' не поддерживается.",
"crypto.kms.metadata_failed": "Не удалось создать или загрузить ключевые метаданные.",
"crypto.kms.algorithm_mismatch": "Несоответствие алгоритма. Ожидал '{0}', получил '{1}'.",
"crypto.kms.version_exists": "Версия ключа '{0}' уже существует для ключа '{1}'.",
"crypto.kms.material_not_found": "Ключевой материал для версии '{0}' не найден.",
"crypto.kms.envelope_deserialize_failed": "Конверт ключа не удалось десериализовать.",
"crypto.kms.payload_deserialize_failed": "Полезную нагрузку ключа не удалось десериализовать.",
"crypto.kms.pem_empty": "Открытый ключ PEM не может быть пустым.",
"crypto.kms.no_primary_version": "Криптоключ '{0}' не имеет активной основной версии.",
"crypto.kms.es256_only": "Поставщик '{0}' поддерживает только ключи подписи ES256.",
"crypto.kms.version_metadata_required": "Ключи подписи KMS должны включать запись метаданных 'kms.version'.",
"crypto.kms.missing_public_key": "В ключе подписи KMS отсутствует материал открытого ключа.",
"crypto.fido2.curve_unsupported": "Неподдерживаемый OID кривой FIDO2 '{0}'.",
"crypto.fido2.rotation_required": "Для ротации учетных данных FIDO2 требуется новая регистрация.",
"crypto.fido2.revocation_relying_party": "Отзыв учетных данных FIDO2 должен управляться на проверяющей стороне.",
"crypto.fido2.missing_x": "В открытом ключе FIDO2 отсутствует координата X.",
"crypto.fido2.missing_y": "В открытом ключе FIDO2 отсутствует координата Y.",
"crypto.fido2.authenticator_required": "Для использования FIDO2 KMS необходимо зарегистрировать IFido2Authenticator.",
"crypto.pkcs11.rotation_hsm": "Для ротации PKCS#11 требуются административные инструменты HSM.",
"crypto.pkcs11.revocation_hsm": "Отзыв PKCS#11 должен обрабатываться политиками HSM.",
"crypto.pkcs11.slot_not_found": "Не удалось разрешить слот PKCS#11.",
"crypto.pkcs11.private_key_not_found": "Закрытый ключ PKCS#11 не найден.",
"crypto.pkcs11.public_key_not_found": "Открытый ключ PKCS#11 не найден.",
"crypto.pkcs11.missing_ec_point": "В открытом ключе отсутствует точка EC.",
"crypto.pkcs11.missing_ec_params": "В открытом ключе отсутствуют параметры EC.",
"crypto.pkcs11.unsupported_point_format": "Неподдерживаемый формат точек EC.",
"crypto.pkcs11.curve_oid_unsupported": "Неподдерживаемый идентификатор OID кривой EC '{0}'.",
"crypto.pkcs11.curve_unsupported": "Неподдерживаемая кривая EC '{0}'.",
"common.provcache.sbom_hash_required": "Хэш SBOM не может быть нулевым или пустым.",
"common.provcache.fetch_url_absolute": "Базовый URL-адрес отложенной выборки должен быть абсолютным.",
"common.provcache.fetch_url_no_userinfo": "Базовый URL-адрес отложенной выборки не должен содержать информацию о пользователе.",
"common.provcache.fetch_url_host_required": "Базовый URL-адрес отложенной выборки должен включать хост.",
"common.provcache.fetch_url_scheme_invalid": "Схема базового URL-адреса отложенной выборки '{0}' не допускается.",
"common.provcache.fetch_url_host_invalid": "Хост '{0}' базового URL-адреса отложенного получения не внесен в белый список.",
"common.provcache.no_chunks_provided": "Никаких кусков не предусмотрено.",
"common.provcache.bundle_deserialize_failed": "Не удалось десериализовать пакет.",
"common.provcache.signer_not_configured": "Подписывающая сторона не настроена.",
"common.provcache.signing_requested_no_signer": "Запрошена подпись, но подписывающая сторона не настроена.",
"common.provcache.cache_entry_not_found": "Запись в кеше для VeriKey не найдена: {0}",
"common.provcache.chunk_manifest_not_found": "Манифест чанка не найден для корневого доказательства: {0}",
"common.provcache.http_timeout_invalid": "Тайм-аут отложенной выборки HTTP должен иметь положительную, не бесконечную продолжительность.",
"common.provcache.http_base_address_required": "HttpChunkFetcher требует BaseAddress в HTTP-клиенте.",
"common.provcache.merkle_root_mismatch": "Несовпадение корней Меркла. Ожидается: {0}, вычисляется: {1}",
"common.provcache.chunk_verification_failed": "Проверка чанка {0} не удалась. Ожидаемый хеш: {1}.",
"common.provcache.artifact_reference_required": "Требуется ссылка на артефакт.",
"common.provcache.artifact_digest_required": "Требуется дайджест артефактов.",
"common.provcache.decision_digest_required": "Требуется DecisionDigest.",
"common.provcache.decision_digest_verikey_required": "Требуется DecisionDigest.VeriKey.",
"common.provcache.digest_empty": "Дайджест не может быть пустым.",
"common.provcache.time_window_required": "Временное окно не может быть нулевым или пустым.",
"common.provcache.vex_hash_required": "Хэш набора хэшей VEX не может быть нулевым или пустым.",
"common.provcache.policy_hash_required": "Хэш политики не может быть нулевым или пустым.",
"common.provcache.source_hash_required": "Хэш источника не может быть нулевым или пустым.",
"common.provcache.signer_set_hash_required": "Хэш набора подписывающей стороны не может быть нулевым или пустым.",
"common.evidence.toolchain_required": "ToolChain должен быть установлен перед построением индекса.",
"common.evidence.deserialization_failed": "Не удалось десериализовать индекс доказательств.",
"common.evidence.verdict_deserialization_failed": "Не удалось десериализовать вердикт.",
"common.evidence.inputs_json_required": "JSON не может быть нулевым или пустым.",
"common.evidence.inputs_deserialization_failed": "Не удалось десериализовать закрепленные входные данные оценки.",
"common.evidence.bundle_alert_id_required": "Требуется AlertId.",
"common.evidence.bundle_artifact_id_required": "Требуется идентификатор артефакта.",
"common.evidence.pdf_export_requires_config": "Экспорт PDF требует дополнительной настройки",
"common.evidence.invalid_uri_format": "Неверный формат URI доказательства: {0}. Ожидаемая стелла://тип/путь",
"common.evidence.invalid_uri_missing_path": "Неверный формат URI доказательства: {0}. Отсутствующий путь.",
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver не может разрешить тип доказательства: {0}",
"common.evidence.schema_resource_not_found": "Ресурс схемы не найден: {0}",
"common.evidence.schema_resource_not_available": "Ресурс схемы недоступен: {0}.",
"common.evidence.provenance_deserialize_failed": "Не удалось десериализовать происхождение для доказательства {0}.",
"common.evidence.bundle_deserialize_failed": "Не удалось десериализовать пакет вердиктов.",
"common.evidence.delta_verdict_deserialize_failed": "Не удалось десериализовать дельта-вердикт.",
"common.canonicalization.value_empty_after_trim": "Значение не должно быть пустым после обрезки.",
"common.canonicalization.deserialize_failed": "Не удалось десериализовать {0}.",
"common.canonicalization.datetime_value_null": "Значение DateTimeOffset имеет значение null.",
"common.canonicalization.dict_key_null": "Ключ словаря не может быть нулевым.",
"common.audit.replay_token_value_empty": "Значение токена не может быть пустым.",
"common.audit.replay_token_empty": "Токен не может быть пустым.",
"common.audit.replay_token_format_invalid": "Неверный формат токена повтора: {0}.",
"common.audit.replay_token_version_invalid": "Неверная версия токена повтора: {0}.",
"common.audit.replay_token_expiration_invalid": "Неверная метка времени истечения срока действия токена воспроизведения: {0}.",
"common.audit.replay_token_duplicate_context_key": "Дополнительныйконтекст содержит повторяющийся ключ после нормализации: '{0}'.",
"common.artifact.uri_format_invalid": "Неверный формат URI: {0}.",
"common.artifact.uri_scheme_not_supported": "Схема URI не поддерживается: {0}.",
"common.artifact.file_not_accessible": "Файл недоступен: {0}",
"common.artifact.file_too_large": "Файл слишком большой: размер {0} в байтах превышает ограничение в 100 МБ.",
"common.artifact.uri_not_accessible": "URI недоступен: {0} вернул {1}",
"common.artifact.content_too_large": "Содержимое слишком велико: размер {0} в байтах превышает ограничение в 100 МБ.",
"common.artifact.fetch_failed": "Не удалось получить данные из {0}: {1}.",
"common.delta_verdict.artifact_ref_required": "Требуется ссылка на артефакт.",
"common.delta_verdict.unsupported_signing_algorithm": "Неподдерживаемый алгоритм подписи: {0}.",
"common.delta_verdict.hmac_secret_required": "Для подписания HMAC требуется секрет Base64.",
"common.eventing.no_entry_assembly": "Входная сборка не найдена",
"auth.persistence.deserialize_inputs_failed": "Не удалось десериализовать входные данные.",
"auth.persistence.deserialize_result_failed": "Не удалось десериализовать результат",
"auth.persistence.revocation_sequence_mismatch": "Несоответствие последовательности экспорта отзыва. Ожидаемый {0}, текущий {1}.",
"auth.persistence.revocation_update_rejected": "Обновление состояния экспорта отзыва отклонено. Ожидаемая последовательность {0}."
}