oci 2.135.2__py3-none-any.whl → 2.137.0__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.
- oci/_vendor/jwt/__init__.py +65 -26
- oci/_vendor/jwt/algorithms.py +404 -130
- oci/_vendor/jwt/api_jwk.py +108 -0
- oci/_vendor/jwt/api_jws.py +153 -106
- oci/_vendor/jwt/api_jwt.py +146 -137
- oci/_vendor/jwt/exceptions.py +13 -6
- oci/_vendor/jwt/help.py +16 -15
- oci/_vendor/jwt/jwks_client.py +64 -0
- oci/_vendor/jwt/utils.py +101 -54
- oci/access_governance_cp/access_governance_cp_client.py +8 -8
- oci/adm/application_dependency_management_client.py +36 -36
- oci/ai_anomaly_detection/anomaly_detection_client.py +36 -36
- oci/ai_document/ai_service_document_client.py +26 -26
- oci/ai_language/ai_service_language_client.py +44 -44
- oci/ai_speech/ai_service_speech_client.py +19 -19
- oci/ai_vision/ai_service_vision_client.py +25 -25
- oci/analytics/analytics_client.py +24 -24
- oci/announcements_service/announcement_client.py +5 -5
- oci/announcements_service/announcement_subscription_client.py +9 -9
- oci/announcements_service/announcements_preferences_client.py +4 -4
- oci/announcements_service/service_client.py +1 -1
- oci/apigateway/api_gateway_client.py +21 -21
- oci/apigateway/deployment_client.py +6 -6
- oci/apigateway/gateway_client.py +6 -6
- oci/apigateway/subscribers_client.py +6 -6
- oci/apigateway/usage_plans_client.py +6 -6
- oci/apigateway/work_requests_client.py +5 -5
- oci/apm_config/config_client.py +9 -9
- oci/apm_control_plane/apm_domain_client.py +14 -14
- oci/apm_synthetics/apm_synthetic_client.py +28 -28
- oci/apm_traces/attributes_client.py +8 -8
- oci/apm_traces/query_client.py +2 -2
- oci/apm_traces/trace_client.py +4 -4
- oci/appmgmt_control/appmgmt_control_client.py +8 -8
- oci/artifacts/artifacts_client.py +32 -32
- oci/audit/audit_client.py +3 -3
- oci/auth/security_token_container.py +1 -1
- oci/autoscaling/auto_scaling_client.py +11 -11
- oci/bastion/bastion_client.py +15 -15
- oci/bds/bds_client.py +72 -72
- oci/blockchain/blockchain_platform_client.py +27 -27
- oci/budget/budget_client.py +10 -10
- oci/capacity_management/capacity_management_client.py +32 -32
- oci/certificates/certificates_client.py +5 -5
- oci/certificates_management/certificates_management_client.py +32 -32
- oci/cims/incident_client.py +8 -8
- oci/cloud_bridge/common_client.py +5 -5
- oci/cloud_bridge/discovery_client.py +160 -14
- oci/cloud_bridge/inventory_client.py +20 -20
- oci/cloud_bridge/models/__init__.py +48 -2
- oci/cloud_bridge/models/asset.py +19 -3
- oci/cloud_bridge/models/asset_source.py +11 -3
- oci/cloud_bridge/models/asset_source_credentials.py +17 -7
- oci/cloud_bridge/models/asset_source_summary.py +11 -3
- oci/cloud_bridge/models/asset_summary.py +11 -3
- oci/cloud_bridge/models/aws_asset_source.py +359 -0
- oci/cloud_bridge/models/aws_asset_source_summary.py +205 -0
- oci/cloud_bridge/models/aws_ebs_asset.py +170 -0
- oci/cloud_bridge/models/aws_ebs_properties.py +382 -0
- oci/cloud_bridge/models/aws_ec2_asset.py +278 -0
- oci/cloud_bridge/models/aws_ec2_properties.py +1056 -0
- oci/cloud_bridge/models/create_asset_details.py +19 -3
- oci/cloud_bridge/models/create_asset_source_details.py +11 -3
- oci/cloud_bridge/models/create_aws_asset_source_details.py +323 -0
- oci/cloud_bridge/models/create_aws_ebs_asset_details.py +134 -0
- oci/cloud_bridge/models/create_aws_ec2_asset_details.py +242 -0
- oci/cloud_bridge/models/create_vm_ware_asset_source_details.py +2 -2
- oci/cloud_bridge/models/create_vmware_vm_asset_details.py +5 -5
- oci/cloud_bridge/models/group_identifier.py +103 -0
- oci/cloud_bridge/models/import_inventory_via_assets_details.py +13 -5
- oci/cloud_bridge/models/instance_network_interface.py +498 -0
- oci/cloud_bridge/models/instance_network_interface_association.py +196 -0
- oci/cloud_bridge/models/instance_network_interface_attachment.py +227 -0
- oci/cloud_bridge/models/instance_private_ip_address.py +161 -0
- oci/cloud_bridge/models/instance_state.py +103 -0
- oci/cloud_bridge/models/monthly_cost_summary.py +103 -0
- oci/cloud_bridge/models/placement.py +289 -0
- oci/{ocvp/models/supported_sku_summary_collection.py → cloud_bridge/models/supported_cloud_region_collection.py} +15 -15
- oci/cloud_bridge/models/supported_cloud_region_summary.py +244 -0
- oci/cloud_bridge/models/tag.py +103 -0
- oci/cloud_bridge/models/update_asset_details.py +19 -3
- oci/cloud_bridge/models/update_asset_source_details.py +47 -4
- oci/cloud_bridge/models/update_aws_asset_source_details.py +240 -0
- oci/cloud_bridge/models/update_aws_ebs_asset_details.py +106 -0
- oci/cloud_bridge/models/update_aws_ec2_asset_details.py +214 -0
- oci/cloud_bridge/models/update_vm_asset_details.py +1 -1
- oci/cloud_bridge/models/update_vm_ware_asset_source_details.py +11 -39
- oci/cloud_bridge/models/update_vmware_vm_asset_details.py +1 -1
- oci/cloud_bridge/models/vm_asset.py +3 -3
- oci/cloud_bridge/models/vm_ware_asset_source.py +2 -2
- oci/cloud_bridge/models/vm_ware_asset_source_summary.py +2 -2
- oci/cloud_bridge/models/vmware_vm_asset.py +5 -5
- oci/cloud_bridge/models/volume_attachment.py +196 -0
- oci/cloud_bridge/models/work_request.py +15 -3
- oci/cloud_bridge/models/work_request_summary.py +15 -3
- oci/cloud_bridge/ocb_agent_svc_client.py +22 -138
- oci/cloud_bridge/ocb_agent_svc_client_composite_operations.py +0 -48
- oci/cloud_guard/cloud_guard_client.py +155 -155
- oci/cloud_migrations/migration_client.py +43 -43
- oci/cluster_placement_groups/cluster_placement_groups_cp_client.py +13 -13
- oci/compute_cloud_at_customer/compute_cloud_at_customer_client.py +12 -12
- oci/compute_instance_agent/compute_instance_agent_client.py +6 -6
- oci/compute_instance_agent/plugin_client.py +2 -2
- oci/compute_instance_agent/pluginconfig_client.py +1 -1
- oci/container_engine/container_engine_client.py +88 -88
- oci/container_engine/models/__init__.py +4 -0
- oci/container_engine/models/cluster.py +33 -2
- oci/container_engine/models/cluster_create_options.py +56 -2
- oci/container_engine/models/open_id_connect_discovery.py +72 -0
- oci/container_engine/models/open_id_connect_token_authentication_config.py +370 -0
- oci/container_engine/models/update_cluster_options_details.py +56 -2
- oci/container_instances/container_instance_client.py +18 -18
- oci/core/blockstorage_client.py +60 -60
- oci/core/compute_client.py +102 -102
- oci/core/compute_management_client.py +32 -32
- oci/core/models/__init__.py +6 -0
- oci/core/models/block_volume_replica.py +43 -2
- oci/core/models/block_volume_replica_details.py +45 -2
- oci/core/models/block_volume_replica_info.py +43 -2
- oci/core/models/boot_volume_replica.py +43 -2
- oci/core/models/boot_volume_replica_details.py +45 -2
- oci/core/models/boot_volume_replica_info.py +43 -2
- oci/core/models/boot_volume_source_details.py +4 -0
- oci/core/models/boot_volume_source_from_boot_volume_backup_delta_details.py +143 -0
- oci/core/models/create_boot_volume_details.py +45 -2
- oci/core/models/create_volume_backup_policy_assignment_details.py +45 -2
- oci/core/models/create_volume_details.py +45 -2
- oci/core/models/create_volume_group_details.py +45 -2
- oci/core/models/instance_configuration_create_volume_details.py +45 -2
- oci/core/models/virtual_circuit.py +29 -2
- oci/core/models/virtual_circuit_redundancy_metadata.py +202 -0
- oci/core/models/volume_backup_policy_assignment.py +45 -2
- oci/core/models/volume_group_replica_details.py +45 -2
- oci/core/models/volume_group_replica_info.py +43 -2
- oci/core/models/volume_source_details.py +4 -0
- oci/core/models/volume_source_from_volume_backup_delta_details.py +143 -0
- oci/core/virtual_network_client.py +247 -247
- oci/dashboard_service/dashboard_client.py +6 -6
- oci/dashboard_service/dashboard_group_client.py +6 -6
- oci/data_catalog/data_catalog_client.py +149 -149
- oci/data_flow/data_flow_client.py +42 -42
- oci/data_integration/data_integration_client.py +163 -163
- oci/data_labeling_service/data_labeling_management_client.py +17 -17
- oci/data_labeling_service_dataplane/data_labeling_client.py +15 -15
- oci/data_safe/data_safe_client.py +292 -292
- oci/data_science/data_science_client.py +217 -93
- oci/data_science/data_science_client_composite_operations.py +41 -0
- oci/data_science/models/__init__.py +8 -0
- oci/data_science/models/backup_operation_details.py +154 -0
- oci/data_science/models/backup_setting.py +158 -0
- oci/data_science/models/create_model_details.py +56 -2
- oci/data_science/models/model.py +141 -2
- oci/data_science/models/model_summary.py +31 -0
- oci/data_science/models/retention_operation_details.py +267 -0
- oci/data_science/models/retention_setting.py +158 -0
- oci/data_science/models/update_model_details.py +56 -2
- oci/data_science/models/work_request.py +7 -3
- oci/data_science/models/work_request_summary.py +7 -3
- oci/database/database_client.py +396 -396
- oci/database/models/__init__.py +14 -0
- oci/database/models/autonomous_database.py +58 -0
- oci/database/models/autonomous_database_encryption_key_details.py +133 -0
- oci/database/models/autonomous_database_encryption_key_history_entry.py +99 -0
- oci/database/models/autonomous_database_summary.py +58 -0
- oci/database/models/aws_key_details.py +175 -0
- oci/database/models/azure_key_details.py +113 -0
- oci/database/models/create_autonomous_database_base.py +27 -0
- oci/database/models/create_autonomous_database_clone_details.py +7 -0
- oci/database/models/create_autonomous_database_details.py +7 -0
- oci/database/models/create_autonomous_database_from_backup_details.py +7 -0
- oci/database/models/create_autonomous_database_from_backup_timestamp_details.py +7 -0
- oci/database/models/create_cross_region_autonomous_database_data_guard_details.py +7 -0
- oci/database/models/create_cross_region_disaster_recovery_details.py +7 -0
- oci/database/models/create_cross_tenancy_disaster_recovery_details.py +7 -0
- oci/database/models/create_refreshable_autonomous_database_clone_details.py +7 -0
- oci/database/models/oci_key_details.py +119 -0
- oci/database/models/okv_key_details.py +206 -0
- oci/{log_analytics/models/agent_upload.py → database/models/oracle_managed_key_details.py} +14 -33
- oci/database/models/undelete_autonomous_database_details.py +7 -0
- oci/database/models/update_autonomous_database_details.py +29 -2
- oci/database_management/db_management_client.py +211 -211
- oci/database_management/diagnosability_client.py +4 -4
- oci/database_management/managed_my_sql_databases_client.py +7 -7
- oci/database_management/perfhub_client.py +1 -1
- oci/database_management/sql_tuning_client.py +17 -17
- oci/database_migration/database_migration_client.py +42 -42
- oci/database_tools/database_tools_client.py +23 -23
- oci/delegate_access_control/delegate_access_control_client.py +26 -26
- oci/delegate_access_control/work_request_client.py +4 -4
- oci/demand_signal/occ_demand_signal_client.py +7 -7
- oci/desktops/desktop_service_client.py +21 -21
- oci/devops/devops_client.py +141 -141
- oci/disaster_recovery/disaster_recovery_client.py +29 -29
- oci/dns/dns_client.py +389 -54
- oci/dns/dns_client_composite_operations.py +886 -193
- oci/dns/models/__init__.py +13 -1
- oci/dns/models/create_zone_details.py +101 -2
- oci/dns/models/dnssec_config.py +105 -0
- oci/dns/models/dnssec_key_version_ds_data.py +121 -0
- oci/dns/models/ksk_dnssec_key_version.py +550 -0
- oci/dns/models/promote_zone_dnssec_key_version_details.py +72 -0
- oci/dns/models/stage_zone_dnssec_key_version_details.py +72 -0
- oci/dns/models/update_zone_details.py +99 -0
- oci/dns/models/zone.py +126 -0
- oci/dns/models/zone_summary.py +128 -2
- oci/dns/models/zsk_dnssec_key_version.py +517 -0
- oci/dts/appliance_export_job_client.py +6 -6
- oci/dts/shipping_vendors_client.py +1 -1
- oci/dts/transfer_appliance_client.py +8 -8
- oci/dts/transfer_appliance_entitlement_client.py +3 -3
- oci/dts/transfer_device_client.py +5 -5
- oci/dts/transfer_job_client.py +6 -6
- oci/dts/transfer_package_client.py +7 -7
- oci/em_warehouse/em_warehouse_client.py +13 -13
- oci/email/email_client.py +31 -31
- oci/email_data_plane/email_dp_client.py +1 -1
- oci/events/events_client.py +6 -6
- oci/file_storage/file_storage_client.py +3599 -1776
- oci/file_storage/file_storage_client_composite_operations.py +881 -223
- oci/file_storage/models/__init__.py +2 -0
- oci/file_storage/models/create_export_details.py +31 -0
- oci/file_storage/models/create_file_system_details.py +31 -0
- oci/file_storage/models/create_filesystem_snapshot_policy_details.py +33 -2
- oci/file_storage/models/create_ldap_bind_account_details.py +7 -0
- oci/file_storage/models/create_mount_target_details.py +31 -0
- oci/file_storage/models/create_outbound_connector_details.py +33 -2
- oci/file_storage/models/create_replication_details.py +33 -2
- oci/file_storage/models/create_snapshot_details.py +33 -2
- oci/file_storage/models/export.py +33 -2
- oci/file_storage/models/export_summary.py +33 -2
- oci/file_storage/models/file_system.py +31 -0
- oci/file_storage/models/file_system_summary.py +31 -0
- oci/file_storage/models/filesystem_snapshot_policy.py +31 -0
- oci/file_storage/models/filesystem_snapshot_policy_summary.py +31 -0
- oci/file_storage/models/ldap_bind_account.py +7 -0
- oci/file_storage/models/ldap_bind_account_summary.py +7 -0
- oci/file_storage/models/mount_target.py +31 -0
- oci/file_storage/models/mount_target_summary.py +31 -0
- oci/file_storage/models/outbound_connector.py +31 -0
- oci/file_storage/models/outbound_connector_summary.py +31 -0
- oci/file_storage/models/replication.py +31 -0
- oci/file_storage/models/replication_summary.py +31 -0
- oci/file_storage/models/resource_lock.py +185 -0
- oci/file_storage/models/snapshot.py +31 -0
- oci/file_storage/models/snapshot_summary.py +31 -0
- oci/fleet_apps_management/fleet_apps_management_admin_client.py +2261 -294
- oci/fleet_apps_management/fleet_apps_management_admin_client_composite_operations.py +349 -1
- oci/fleet_apps_management/fleet_apps_management_client.py +141 -127
- oci/fleet_apps_management/fleet_apps_management_client_composite_operations.py +19 -19
- oci/fleet_apps_management/fleet_apps_management_maintenance_window_client.py +19 -15
- oci/fleet_apps_management/fleet_apps_management_maintenance_window_client_composite_operations.py +1 -1
- oci/fleet_apps_management/fleet_apps_management_operations_client.py +2058 -363
- oci/fleet_apps_management/fleet_apps_management_operations_client_composite_operations.py +173 -0
- oci/fleet_apps_management/fleet_apps_management_runbooks_client.py +1097 -260
- oci/fleet_apps_management/fleet_apps_management_runbooks_client_composite_operations.py +298 -0
- oci/fleet_apps_management/models/__init__.py +168 -0
- oci/fleet_apps_management/models/action_group.py +2 -2
- oci/fleet_apps_management/models/action_group_based_user_action_details.py +90 -0
- oci/fleet_apps_management/models/action_group_details.py +20 -16
- oci/fleet_apps_management/models/activity_resource_target.py +44 -7
- oci/fleet_apps_management/models/announcement_collection.py +1 -1
- oci/fleet_apps_management/models/announcement_summary.py +13 -13
- oci/fleet_apps_management/models/api_based_execution_details.py +1 -1
- oci/fleet_apps_management/models/artifact_details.py +109 -0
- oci/fleet_apps_management/models/associated_fleet_credential_details.py +1 -1
- oci/fleet_apps_management/models/associated_fleet_property_details.py +5 -5
- oci/fleet_apps_management/models/associated_fleet_resource_details.py +6 -6
- oci/fleet_apps_management/models/associated_local_task_details.py +64 -1
- oci/fleet_apps_management/models/associated_scheduler_definition.py +3 -3
- oci/fleet_apps_management/models/associated_shared_task_details.py +2 -1
- oci/fleet_apps_management/models/associations.py +32 -5
- oci/fleet_apps_management/models/check_resource_tagging_details.py +5 -5
- oci/fleet_apps_management/models/compliance_detail_policy.py +223 -0
- oci/fleet_apps_management/models/compliance_detail_product.py +134 -0
- oci/fleet_apps_management/models/compliance_detail_resource.py +196 -0
- oci/fleet_apps_management/models/compliance_detail_target.py +134 -0
- oci/fleet_apps_management/models/compliance_patch_detail.py +278 -0
- oci/{database_migration/models/agent.py → fleet_apps_management/models/compliance_policy.py} +120 -167
- oci/fleet_apps_management/models/compliance_policy_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_policy_rule.py +618 -0
- oci/{media_services/models/media_workflow_job_fact_collection.py → fleet_apps_management/models/compliance_policy_rule_collection.py} +15 -15
- oci/fleet_apps_management/models/compliance_policy_rule_summary.py +585 -0
- oci/{database_migration/models/agent_summary.py → fleet_apps_management/models/compliance_policy_summary.py} +110 -159
- oci/fleet_apps_management/models/compliance_record.py +457 -0
- oci/fleet_apps_management/models/compliance_record_aggregation.py +99 -0
- oci/fleet_apps_management/models/compliance_record_aggregation_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_record_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_record_dimension.py +143 -0
- oci/fleet_apps_management/models/compliance_record_summary.py +437 -0
- oci/fleet_apps_management/models/compliance_report.py +5 -5
- oci/fleet_apps_management/models/compliance_report_patch_detail.py +9 -9
- oci/fleet_apps_management/models/compliance_report_product.py +3 -3
- oci/fleet_apps_management/models/compliance_report_resource.py +8 -6
- oci/fleet_apps_management/models/compliance_report_target.py +7 -7
- oci/fleet_apps_management/models/component_properties.py +69 -9
- oci/fleet_apps_management/models/condition.py +12 -6
- oci/{os_management/models/managed_instance_update_details.py → fleet_apps_management/models/config_association_details.py} +43 -35
- oci/fleet_apps_management/models/config_category_details.py +133 -0
- oci/fleet_apps_management/models/confirm_targets_details.py +1 -1
- oci/fleet_apps_management/models/content_details.py +3 -3
- oci/fleet_apps_management/models/create_compliance_policy_rule_details.py +382 -0
- oci/fleet_apps_management/models/create_fleet_details.py +63 -16
- oci/fleet_apps_management/models/create_fleet_property_details.py +5 -5
- oci/fleet_apps_management/models/create_fleet_resource_details.py +1 -1
- oci/fleet_apps_management/models/create_maintenance_window_details.py +19 -11
- oci/fleet_apps_management/models/create_onboarding_details.py +8 -4
- oci/fleet_apps_management/models/create_patch_details.py +402 -0
- oci/fleet_apps_management/models/create_platform_configuration_details.py +169 -0
- oci/fleet_apps_management/models/create_property_details.py +6 -6
- oci/fleet_apps_management/models/create_runbook_details.py +441 -0
- oci/{database_migration/models/create_agent_details.py → fleet_apps_management/models/create_task_record_details.py} +81 -106
- oci/fleet_apps_management/models/credential_config_category_details.py +52 -0
- oci/fleet_apps_management/models/credential_details.py +3 -3
- oci/fleet_apps_management/models/credential_entity_specific_details.py +22 -6
- oci/{log_analytics/models/log_analytics_collection_warning.py → fleet_apps_management/models/dependent_patch_details.py} +12 -10
- oci/fleet_apps_management/models/details.py +67 -3
- oci/fleet_apps_management/models/discovered_target.py +6 -6
- oci/fleet_apps_management/models/enable_latest_policy_details.py +72 -0
- oci/fleet_apps_management/models/entity_execution_details.py +22 -16
- oci/fleet_apps_management/models/environment_config_category_details.py +53 -0
- oci/fleet_apps_management/models/execution.py +122 -21
- oci/fleet_apps_management/models/execution_collection.py +1 -1
- oci/fleet_apps_management/models/execution_details.py +1 -1
- oci/fleet_apps_management/models/execution_summary.py +123 -22
- oci/fleet_apps_management/models/execution_workflow_details.py +1 -1
- oci/fleet_apps_management/models/export_compliance_report_details.py +251 -0
- oci/fleet_apps_management/models/fleet.py +37 -19
- oci/fleet_apps_management/models/fleet_credential.py +1 -1
- oci/fleet_apps_management/models/fleet_credential_entity_specific_details.py +82 -0
- oci/fleet_apps_management/models/fleet_product_summary.py +3 -3
- oci/fleet_apps_management/models/fleet_property.py +11 -11
- oci/fleet_apps_management/models/fleet_property_collection.py +3 -3
- oci/fleet_apps_management/models/fleet_property_summary.py +6 -6
- oci/fleet_apps_management/models/fleet_resource.py +21 -15
- oci/fleet_apps_management/models/fleet_resource_collection.py +1 -1
- oci/fleet_apps_management/models/fleet_resource_summary.py +20 -14
- oci/fleet_apps_management/models/fleet_summary.py +15 -5
- oci/fleet_apps_management/models/fleet_target.py +98 -5
- oci/fleet_apps_management/models/fleet_target_summary.py +98 -5
- oci/fleet_apps_management/models/generate_compliance_report_details.py +5 -3
- oci/fleet_apps_management/models/generic_artifact.py +68 -0
- oci/fleet_apps_management/models/generic_artifact_details.py +78 -0
- oci/fleet_apps_management/models/group.py +11 -5
- oci/fleet_apps_management/models/input_argument.py +2 -2
- oci/fleet_apps_management/models/inventory_resource_summary.py +6 -6
- oci/fleet_apps_management/models/job_activity.py +57 -18
- oci/fleet_apps_management/models/key_encryption_credential_details.py +5 -5
- oci/fleet_apps_management/models/maintenance_window.py +19 -11
- oci/fleet_apps_management/models/maintenance_window_collection.py +1 -1
- oci/fleet_apps_management/models/maintenance_window_summary.py +18 -10
- oci/fleet_apps_management/models/manage_job_execution_details.py +68 -0
- oci/{database_migration/models/change_agent_compartment_details.py → fleet_apps_management/models/manage_settings_details.py} +21 -21
- oci/fleet_apps_management/models/managed_entity_aggregation.py +99 -0
- oci/fleet_apps_management/models/managed_entity_aggregation_collection.py +72 -0
- oci/fleet_apps_management/models/managed_entity_dimension.py +88 -0
- oci/fleet_apps_management/models/model_property.py +9 -9
- oci/fleet_apps_management/models/notification_preferences.py +7 -5
- oci/fleet_apps_management/models/object_storage_bucket_content_details.py +3 -3
- oci/fleet_apps_management/models/onboarding.py +70 -7
- oci/fleet_apps_management/models/onboarding_collection.py +3 -3
- oci/fleet_apps_management/models/onboarding_policy_collection.py +3 -3
- oci/fleet_apps_management/models/onboarding_policy_summary.py +1 -1
- oci/fleet_apps_management/models/onboarding_summary.py +69 -7
- oci/fleet_apps_management/models/outcome.py +7 -7
- oci/fleet_apps_management/models/output_variable_details.py +2 -2
- oci/fleet_apps_management/models/output_variable_input_argument.py +1 -1
- oci/fleet_apps_management/models/output_variable_mapping.py +4 -3
- oci/fleet_apps_management/models/patch.py +704 -0
- oci/{logging/models/log_included_search_summary_collection.py → fleet_apps_management/models/patch_collection.py} +16 -14
- oci/fleet_apps_management/models/patch_level_selection_details.py +106 -0
- oci/fleet_apps_management/models/patch_name_selection_details.py +83 -0
- oci/{database_migration/models/agent_image_summary.py → fleet_apps_management/models/patch_product.py} +36 -36
- oci/fleet_apps_management/models/patch_release_date_selection_details.py +83 -0
- oci/fleet_apps_management/models/patch_selection_details.py +117 -0
- oci/fleet_apps_management/models/patch_summary.py +625 -0
- oci/fleet_apps_management/models/patch_type.py +72 -0
- oci/fleet_apps_management/models/patch_type_config_category_details.py +52 -0
- oci/fleet_apps_management/models/pause_details.py +109 -0
- oci/fleet_apps_management/models/plain_text_credential_details.py +2 -2
- oci/fleet_apps_management/models/platform_configuration.py +529 -0
- oci/fleet_apps_management/models/platform_configuration_collection.py +72 -0
- oci/fleet_apps_management/models/platform_configuration_summary.py +485 -0
- oci/fleet_apps_management/models/platform_specific_artifact.py +162 -0
- oci/fleet_apps_management/models/platform_specific_artifact_details.py +82 -0
- oci/fleet_apps_management/models/preferences.py +3 -3
- oci/fleet_apps_management/models/product_config_category_details.py +215 -0
- oci/fleet_apps_management/models/product_stack_as_product_sub_category_details.py +182 -0
- oci/fleet_apps_management/models/product_stack_config_category_details.py +112 -0
- oci/{database_migration/models/par_link.py → fleet_apps_management/models/product_stack_generic_sub_category_details.py} +14 -33
- oci/fleet_apps_management/models/product_stack_sub_category_details.py +109 -0
- oci/fleet_apps_management/models/product_version_details.py +105 -0
- oci/fleet_apps_management/models/property_collection.py +3 -3
- oci/fleet_apps_management/models/property_summary.py +8 -8
- oci/{cloud_bridge/models/update_plugin_details.py → fleet_apps_management/models/publish_runbook_details.py} +21 -21
- oci/fleet_apps_management/models/request_resource_validation_details.py +5 -5
- oci/fleet_apps_management/models/request_target_discovery_details.py +5 -5
- oci/{database_migration/models/agent_image_collection.py → fleet_apps_management/models/resource_collection.py} +15 -15
- oci/fleet_apps_management/models/resource_credential_entity_specific_details.py +82 -0
- oci/fleet_apps_management/models/resource_summary.py +347 -0
- oci/fleet_apps_management/models/resource_tag_check_details.py +3 -3
- oci/fleet_apps_management/models/resource_tag_enablement_info.py +3 -3
- oci/fleet_apps_management/models/rollback_workflow_details.py +119 -0
- oci/fleet_apps_management/models/rule.py +15 -7
- oci/fleet_apps_management/models/runbook.py +28 -9
- oci/fleet_apps_management/models/runbook_collection.py +1 -1
- oci/fleet_apps_management/models/runbook_summary.py +6 -4
- oci/fleet_apps_management/models/scheduler_definition.py +16 -16
- oci/fleet_apps_management/models/scheduler_job.py +24 -20
- oci/fleet_apps_management/models/scheduler_job_aggregation.py +99 -0
- oci/{usage_api/models/schedule_report_collection.py → fleet_apps_management/models/scheduler_job_aggregation_collection.py} +16 -14
- oci/fleet_apps_management/models/scheduler_job_collection.py +1 -1
- oci/fleet_apps_management/models/scheduler_job_dimension.py +72 -0
- oci/fleet_apps_management/models/scheduler_job_summary.py +20 -16
- oci/fleet_apps_management/models/script_based_execution_details.py +38 -5
- oci/fleet_apps_management/models/selection_criteria.py +6 -3
- oci/{log_analytics/models/query_work_request_resource.py → fleet_apps_management/models/set_default_runbook_details.py} +22 -20
- oci/fleet_apps_management/models/step_based_user_action_details.py +183 -0
- oci/{database_migration/models/agent_collection.py → fleet_apps_management/models/step_collection.py} +15 -15
- oci/fleet_apps_management/models/step_summary.py +378 -0
- oci/fleet_apps_management/models/target_credential_entity_specific_details.py +6 -6
- oci/fleet_apps_management/models/target_resource.py +1 -1
- oci/fleet_apps_management/models/task_notification_preferences.py +134 -0
- oci/fleet_apps_management/models/task_record.py +1 -1
- oci/fleet_apps_management/models/task_variable.py +2 -1
- oci/fleet_apps_management/models/time_based_pause_details.py +82 -0
- oci/fleet_apps_management/models/update_compliance_policy_rule_details.py +283 -0
- oci/fleet_apps_management/models/update_fleet_details.py +4 -2
- oci/fleet_apps_management/models/update_fleet_property_details.py +3 -3
- oci/fleet_apps_management/models/update_fleet_resource_details.py +1 -1
- oci/fleet_apps_management/models/update_maintenance_window_details.py +18 -10
- oci/fleet_apps_management/models/update_onboarding_details.py +103 -0
- oci/fleet_apps_management/models/update_patch_details.py +369 -0
- oci/fleet_apps_management/models/update_platform_configuration_details.py +138 -0
- oci/fleet_apps_management/models/update_property_details.py +6 -6
- oci/fleet_apps_management/models/update_runbook_details.py +410 -0
- oci/fleet_apps_management/models/update_scheduler_job_details.py +3 -3
- oci/{database_migration/models/update_agent_details.py → fleet_apps_management/models/update_task_record_details.py} +63 -90
- oci/{log_analytics/models/string_list_details.py → fleet_apps_management/models/user_action_based_pause_details.py} +14 -33
- oci/fleet_apps_management/models/user_action_details.py +157 -0
- oci/{os_management/models/errata_id.py → fleet_apps_management/models/variable.py} +29 -27
- oci/fleet_apps_management/models/work_request.py +67 -3
- oci/fleet_apps_management/models/work_request_summary.py +67 -3
- oci/fleet_apps_management/models/workflow_group.py +2 -2
- oci/fleet_apps_management/models/workflow_group_component.py +4 -4
- oci/fleet_software_update/fleet_software_update_client.py +46 -46
- oci/functions/functions_invoke_client.py +1 -1
- oci/functions/functions_management_client.py +16 -16
- oci/fusion_apps/fusion_applications_client.py +41 -41
- oci/generative_ai/generative_ai_client.py +22 -22
- oci/generative_ai_agent/generative_ai_agent_client.py +33 -33
- oci/generative_ai_agent_runtime/generative_ai_agent_runtime_client.py +5 -5
- oci/generative_ai_inference/generative_ai_inference_client.py +4 -4
- oci/generic_artifacts_content/generic_artifacts_content_client.py +3 -3
- oci/globally_distributed_database/sharded_database_service_client.py +30 -30
- oci/golden_gate/golden_gate_client.py +211 -70
- oci/golden_gate/models/__init__.py +8 -0
- oci/golden_gate/models/create_database_registration_details.py +4 -4
- oci/golden_gate/models/create_deployment_details.py +47 -0
- oci/golden_gate/models/create_ogg_deployment_details.py +29 -2
- oci/golden_gate/models/create_oracle_connection_details.py +4 -4
- oci/golden_gate/models/deployment.py +102 -0
- oci/golden_gate/models/deployment_environment_collection.py +72 -0
- oci/golden_gate/models/deployment_environment_summary.py +389 -0
- oci/golden_gate/models/deployment_summary.py +103 -1
- oci/golden_gate/models/deployment_type_summary.py +3 -0
- oci/golden_gate/models/group_to_roles_mapping_details.py +197 -0
- oci/golden_gate/models/ogg_deployment.py +29 -2
- oci/golden_gate/models/test_connection_assignment_result.py +34 -2
- oci/golden_gate/models/update_database_registration_details.py +4 -4
- oci/golden_gate/models/update_deployment_details.py +47 -0
- oci/golden_gate/models/update_group_to_roles_mapping_details.py +197 -0
- oci/golden_gate/models/update_ogg_deployment_details.py +29 -2
- oci/golden_gate/models/update_oracle_connection_details.py +4 -4
- oci/governance_rules_control_plane/governance_rule_client.py +15 -15
- oci/governance_rules_control_plane/work_request_client.py +5 -5
- oci/healthchecks/health_checks_client.py +17 -17
- oci/identity/identity_client.py +145 -145
- oci/identity_data_plane/dataplane_client.py +2 -2
- oci/identity_domains/identity_domains_client.py +307 -307
- oci/identity_domains/models/auth_token.py +51 -0
- oci/identity_domains/models/customer_secret_key.py +45 -0
- oci/identity_domains/models/o_auth2_client_credential.py +49 -0
- oci/identity_domains/models/smtp_credential.py +47 -0
- oci/integration/integration_instance_client.py +19 -19
- oci/jms/java_management_service_client.py +75 -75
- oci/jms_java_downloads/java_download_client.py +25 -25
- oci/key_management/ekm_client.py +5 -5
- oci/key_management/kms_crypto_client.py +6 -6
- oci/key_management/kms_hsm_cluster_client.py +12 -12
- oci/key_management/kms_management_client.py +21 -21
- oci/key_management/kms_vault_client.py +14 -14
- oci/license_manager/license_manager_client.py +18 -18
- oci/limits/limits_client.py +4 -4
- oci/limits/quotas_client.py +7 -7
- oci/load_balancer/load_balancer_client.py +61 -61
- oci/lockbox/lockbox_client.py +24 -24
- oci/log_analytics/log_analytics_client.py +193 -193
- oci/logging/logging_management_client.py +30 -30
- oci/loggingingestion/logging_client.py +1 -1
- oci/loggingsearch/log_search_client.py +1 -1
- oci/management_agent/management_agent_client.py +28 -28
- oci/management_dashboard/dashx_apis_client.py +14 -14
- oci/marketplace/account_client.py +2 -2
- oci/marketplace/marketplace_client.py +30 -30
- oci/marketplace_private_offer/attachment_client.py +5 -5
- oci/marketplace_private_offer/offer_client.py +6 -6
- oci/marketplace_publisher/attachment_client.py +5 -5
- oci/marketplace_publisher/marketplace_publisher_client.py +71 -71
- oci/marketplace_publisher/offer_client.py +6 -6
- oci/media_services/media_services_client.py +60 -60
- oci/media_services/media_stream_client.py +2 -2
- oci/monitoring/monitoring_client.py +18 -18
- oci/mysql/channels_client.py +7 -7
- oci/mysql/db_backups_client.py +7 -7
- oci/mysql/db_system_client.py +17 -17
- oci/mysql/mysqlaas_client.py +7 -7
- oci/mysql/replicas_client.py +5 -5
- oci/mysql/work_requests_client.py +4 -4
- oci/network_firewall/network_firewall_client.py +86 -86
- oci/network_load_balancer/network_load_balancer_client.py +34 -34
- oci/nosql/nosql_client.py +24 -24
- oci/object_storage/object_storage_client.py +55 -55
- oci/oce/oce_instance_client.py +10 -10
- oci/oci_control_center/occ_metrics_client.py +3 -3
- oci/ocvp/cluster_client.py +5 -5
- oci/ocvp/esxi_host_client.py +8 -8
- oci/ocvp/sddc_client.py +14 -14
- oci/ocvp/work_request_client.py +4 -4
- oci/oda/management_client.py +59 -59
- oci/oda/oda_client.py +17 -17
- oci/oda/odapackage_client.py +7 -7
- oci/onesubscription/billing_schedule_client.py +1 -1
- oci/onesubscription/commitment_client.py +2 -2
- oci/onesubscription/computed_usage_client.py +3 -3
- oci/onesubscription/invoice_summary_client.py +2 -2
- oci/onesubscription/organization_subscription_client.py +1 -1
- oci/onesubscription/ratecard_client.py +1 -1
- oci/onesubscription/subscribed_service_client.py +2 -2
- oci/onesubscription/subscription_client.py +1 -1
- oci/ons/notification_control_plane_client.py +6 -6
- oci/ons/notification_data_plane_client.py +10 -10
- oci/opa/opa_instance_client.py +13 -13
- oci/opensearch/opensearch_cluster_backup_client.py +4 -4
- oci/opensearch/opensearch_cluster_client.py +14 -14
- oci/operator_access_control/access_requests_client.py +10 -10
- oci/operator_access_control/operator_actions_client.py +2 -2
- oci/operator_access_control/operator_control_assignment_client.py +8 -8
- oci/operator_access_control/operator_control_client.py +6 -6
- oci/opsi/models/__init__.py +8 -0
- oci/opsi/models/host_configuration_metric_group.py +11 -3
- oci/opsi/models/host_containers.py +65 -3
- oci/opsi/models/host_cpu_hardware_configuration.py +1 -1
- oci/opsi/models/host_cpu_statistics.py +1 -1
- oci/opsi/models/host_cpu_usage.py +1 -1
- oci/opsi/models/host_entities.py +1 -1
- oci/opsi/models/host_filesystem_configuration.py +1 -1
- oci/opsi/models/host_filesystem_usage.py +1 -1
- oci/opsi/models/host_gpu_configuration.py +1 -1
- oci/opsi/models/host_gpu_processes.py +1 -1
- oci/opsi/models/host_gpu_usage.py +1 -1
- oci/opsi/models/host_hardware_configuration.py +1 -1
- oci/opsi/models/host_io_statistics.py +160 -0
- oci/opsi/models/host_io_usage.py +1 -1
- oci/opsi/models/host_memory_configuration.py +1 -1
- oci/opsi/models/host_memory_statistics.py +1 -1
- oci/opsi/models/host_memory_usage.py +1 -1
- oci/opsi/models/host_network_activity_summary.py +1 -1
- oci/opsi/models/host_network_configuration.py +1 -1
- oci/opsi/models/host_network_statistics.py +1 -1
- oci/opsi/models/host_performance_metric_group.py +3 -11
- oci/opsi/models/host_product.py +1 -1
- oci/opsi/models/host_resource_allocation.py +1 -1
- oci/opsi/models/host_resource_statistics.py +11 -3
- oci/opsi/models/host_storage_statistics.py +1 -1
- oci/opsi/models/host_top_processes.py +1 -1
- oci/opsi/models/io_usage_trend.py +227 -0
- oci/opsi/models/io_usage_trend_aggregation.py +103 -0
- oci/opsi/models/summarize_host_insight_host_recommendation_aggregation.py +7 -3
- oci/opsi/models/summarize_host_insight_io_usage_trend_aggregation_collection.py +165 -0
- oci/opsi/models/summarize_host_insight_resource_capacity_trend_aggregation_collection.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_forecast_trend_aggregation.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_statistics_aggregation_collection.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_usage_aggregation.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_usage_trend_aggregation_collection.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_utilization_insight_aggregation.py +7 -3
- oci/opsi/operations_insights_client.py +362 -179
- oci/optimizer/optimizer_client.py +26 -26
- oci/os_management/event_client.py +8 -8
- oci/os_management/os_management_client.py +69 -69
- oci/os_management_hub/event_client.py +8 -8
- oci/os_management_hub/lifecycle_environment_client.py +12 -12
- oci/os_management_hub/managed_instance_client.py +31 -31
- oci/os_management_hub/managed_instance_group_client.py +25 -25
- oci/os_management_hub/management_station_client.py +10 -10
- oci/os_management_hub/onboarding_client.py +6 -6
- oci/os_management_hub/reporting_managed_instance_client.py +3 -3
- oci/os_management_hub/scheduled_job_client.py +7 -7
- oci/os_management_hub/software_source_client.py +27 -27
- oci/os_management_hub/work_request_client.py +4 -4
- oci/osp_gateway/address_rule_service_client.py +1 -1
- oci/osp_gateway/address_service_client.py +2 -2
- oci/osp_gateway/invoice_service_client.py +5 -5
- oci/osp_gateway/subscription_service_client.py +5 -5
- oci/osub_billing_schedule/billing_schedule_client.py +1 -1
- oci/osub_organization_subscription/organization_subscription_client.py +1 -1
- oci/osub_subscription/commitment_client.py +2 -2
- oci/osub_subscription/ratecard_client.py +1 -1
- oci/osub_subscription/subscription_client.py +1 -1
- oci/osub_usage/computed_usage_client.py +3 -3
- oci/psql/postgresql_client.py +33 -33
- oci/queue/queue_admin_client.py +11 -11
- oci/queue/queue_client.py +8 -8
- oci/recovery/database_recovery_client.py +26 -26
- oci/redis/redis_cluster_client.py +12 -12
- oci/resource_manager/resource_manager_client.py +52 -52
- oci/resource_scheduler/schedule_client.py +13 -13
- oci/resource_search/resource_search_client.py +3 -3
- oci/rover/rover_bundle_client.py +8 -8
- oci/rover/rover_cluster_client.py +8 -8
- oci/rover/rover_entitlement_client.py +6 -6
- oci/rover/rover_node_client.py +15 -15
- oci/rover/shape_client.py +1 -1
- oci/rover/work_requests_client.py +5 -5
- oci/sch/connector_plugins_client.py +2 -2
- oci/sch/service_connector_client.py +12 -12
- oci/secrets/secrets_client.py +3 -3
- oci/security_attribute/security_attribute_client.py +36 -36
- oci/service_catalog/service_catalog_client.py +26 -26
- oci/service_manager_proxy/service_manager_proxy_client.py +2 -2
- oci/service_mesh/service_mesh_client.py +48 -48
- oci/stack_monitoring/stack_monitoring_client.py +71 -71
- oci/streaming/stream_admin_client.py +18 -18
- oci/streaming/stream_client.py +8 -8
- oci/tenant_manager_control_plane/domain_client.py +5 -5
- oci/tenant_manager_control_plane/domain_governance_client.py +5 -5
- oci/tenant_manager_control_plane/governance_client.py +2 -2
- oci/tenant_manager_control_plane/link_client.py +3 -3
- oci/tenant_manager_control_plane/orders_client.py +2 -2
- oci/tenant_manager_control_plane/organization_client.py +10 -10
- oci/tenant_manager_control_plane/recipient_invitation_client.py +5 -5
- oci/tenant_manager_control_plane/sender_invitation_client.py +5 -5
- oci/tenant_manager_control_plane/subscription_client.py +11 -11
- oci/tenant_manager_control_plane/work_request_client.py +4 -4
- oci/threat_intelligence/threatintel_client.py +5 -5
- oci/usage/resources_client.py +2 -2
- oci/usage/rewards_client.py +6 -6
- oci/usage/usagelimits_client.py +1 -1
- oci/usage_api/usageapi_client.py +33 -33
- oci/util.py +2 -1
- oci/vault/vaults_client.py +13 -13
- oci/vbs_inst/vbs_instance_client.py +10 -10
- oci/version.py +1 -1
- oci/visual_builder/vb_instance_client.py +13 -13
- oci/vn_monitoring/vn_monitoring_client.py +12 -12
- oci/vulnerability_scanning/vulnerability_scanning_client.py +58 -58
- oci/waa/waa_client.py +13 -13
- oci/waa/work_request_client.py +4 -4
- oci/waas/redirect_client.py +6 -6
- oci/waas/waas_client.py +66 -66
- oci/waf/waf_client.py +24 -24
- oci/work_requests/work_request_client.py +4 -4
- oci/zpr/zpr_client.py +30 -30
- {oci-2.135.2.dist-info → oci-2.137.0.dist-info}/METADATA +1 -1
- {oci-2.135.2.dist-info → oci-2.137.0.dist-info}/RECORD +668 -686
- oci/_vendor/jwt/__main__.py +0 -173
- oci/_vendor/jwt/compat.py +0 -73
- oci/_vendor/jwt/contrib/__init__.py +0 -0
- oci/_vendor/jwt/contrib/algorithms/__init__.py +0 -0
- oci/_vendor/jwt/contrib/algorithms/py_ecdsa.py +0 -60
- oci/_vendor/jwt/contrib/algorithms/pycrypto.py +0 -46
- oci/ai_language/models/entity_document.py +0 -136
- oci/ai_language/models/key_phrase_document.py +0 -136
- oci/ai_language/models/pre_trained_phi_model_details.py +0 -91
- oci/ai_language/models/sentiments_document.py +0 -136
- oci/ai_language/models/text_classification_document.py +0 -136
- oci/capacity_management/models/occ_capacity_request_compute_details.py +0 -148
- oci/cims/user_client.py +0 -207
- oci/cims/user_client_composite_operations.py +0 -26
- oci/compute_instance_agent/models/instance_agent_command_content_info.py +0 -252
- oci/data_integration/models/connection_from_lakehouse.py +0 -140
- oci/data_integration/models/connection_from_lakehouse_details.py +0 -133
- oci/data_integration/models/connection_summary_from_lakehouse.py +0 -140
- oci/data_integration/models/create_connection_from_lakehouse.py +0 -112
- oci/data_integration/models/create_data_asset_from_lakehouse.py +0 -232
- oci/data_integration/models/data_asset_from_lakehouse_details.py +0 -260
- oci/data_integration/models/data_asset_summary_from_lakehouse.py +0 -253
- oci/data_integration/models/update_connection_from_lakehouse.py +0 -119
- oci/data_integration/models/update_data_asset_from_lakehouse.py +0 -239
- oci/database_migration/models/advisor_settings.py +0 -103
- oci/database_migration/models/aws_s3_data_transfer_medium_details.py +0 -211
- oci/database_migration/models/aws_s3_details.py +0 -108
- oci/database_migration/models/connect_descriptor.py +0 -165
- oci/database_migration/models/create_advisor_settings.py +0 -103
- oci/database_migration/models/create_aws_s3_details.py +0 -174
- oci/database_migration/models/create_connect_descriptor.py +0 -174
- oci/database_migration/models/create_data_pump_settings.py +0 -251
- oci/database_migration/models/create_data_transfer_medium_details.py +0 -124
- oci/database_migration/models/create_database_link_details.py +0 -99
- oci/database_migration/models/create_dump_transfer_details.py +0 -126
- oci/database_migration/models/create_golden_gate_details.py +0 -95
- oci/database_migration/models/create_golden_gate_hub.py +0 -275
- oci/database_migration/models/create_golden_gate_service_details.py +0 -149
- oci/database_migration/models/create_golden_gate_settings.py +0 -126
- oci/database_migration/models/create_private_endpoint.py +0 -151
- oci/database_migration/models/create_ssh_details.py +0 -166
- oci/database_migration/models/create_vault_details.py +0 -134
- oci/database_migration/models/data_pump_settings.py +0 -251
- oci/database_migration/models/data_transfer_medium_details.py +0 -122
- oci/database_migration/models/data_transfer_medium_details_v2.py +0 -125
- oci/database_migration/models/database_credentials.py +0 -103
- oci/database_migration/models/database_link_details.py +0 -99
- oci/database_migration/models/database_object.py +0 -167
- oci/database_migration/models/db_link_data_transfer_medium_details.py +0 -109
- oci/database_migration/models/dump_transfer_details.py +0 -126
- oci/database_migration/models/generate_token.py +0 -70
- oci/database_migration/models/golden_gate_details.py +0 -95
- oci/database_migration/models/golden_gate_hub.py +0 -275
- oci/database_migration/models/golden_gate_service_details.py +0 -95
- oci/database_migration/models/golden_gate_settings.py +0 -126
- oci/database_migration/models/migration_object_summary.py +0 -214
- oci/database_migration/models/nfs_data_transfer_medium_details.py +0 -78
- oci/database_migration/models/object_storage_data_transfer_medium_details.py +0 -78
- oci/database_migration/models/private_endpoint_details.py +0 -185
- oci/database_migration/models/ssh_details.py +0 -134
- oci/database_migration/models/update_advisor_settings.py +0 -103
- oci/database_migration/models/update_aws_s3_details.py +0 -174
- oci/database_migration/models/update_connect_descriptor.py +0 -173
- oci/database_migration/models/update_data_pump_settings.py +0 -253
- oci/database_migration/models/update_data_transfer_medium_details.py +0 -125
- oci/database_migration/models/update_database_link_details.py +0 -99
- oci/database_migration/models/update_dump_transfer_details.py +0 -126
- oci/database_migration/models/update_golden_gate_details.py +0 -95
- oci/database_migration/models/update_golden_gate_hub.py +0 -275
- oci/database_migration/models/update_golden_gate_service_details.py +0 -149
- oci/database_migration/models/update_golden_gate_settings.py +0 -127
- oci/database_migration/models/update_private_endpoint.py +0 -151
- oci/database_migration/models/update_ssh_details.py +0 -165
- oci/database_migration/models/update_vault_details.py +0 -134
- oci/database_migration/models/vault_details.py +0 -134
- oci/database_tools/models/database_tools_allowed_network_sources.py +0 -107
- oci/database_tools/models/database_tools_virtual_source.py +0 -107
- oci/devops/models/run_pipeline_deploy_stage_execution_progress.py +0 -98
- oci/devops/models/run_validation_test_on_compute_instance_deploy_stage_execution_progress.py +0 -98
- oci/em_warehouse/em_data_lake_client.py +0 -1610
- oci/em_warehouse/em_data_lake_client_composite_operations.py +0 -190
- oci/fusion_apps/data_masking_activity_client.py +0 -456
- oci/fusion_apps/data_masking_activity_client_composite_operations.py +0 -65
- oci/fusion_apps/fusion_environment_client.py +0 -1772
- oci/fusion_apps/fusion_environment_client_composite_operations.py +0 -324
- oci/fusion_apps/fusion_environment_family_client.py +0 -943
- oci/fusion_apps/fusion_environment_family_client_composite_operations.py +0 -190
- oci/fusion_apps/models/attach_existing_instance_details.py +0 -194
- oci/fusion_apps/models/create_new_instance_details.py +0 -142
- oci/fusion_apps/models/create_oax_service_instance_details.py +0 -152
- oci/fusion_apps/models/create_oic_service_instance_details.py +0 -142
- oci/fusion_apps/models/create_service_instance_details.py +0 -170
- oci/fusion_apps/models/faw_admin_info_details.py +0 -132
- oci/fusion_apps/refresh_activity_client.py +0 -607
- oci/fusion_apps/refresh_activity_client_composite_operations.py +0 -65
- oci/fusion_apps/scheduled_activity_client.py +0 -380
- oci/fusion_apps/scheduled_activity_client_composite_operations.py +0 -24
- oci/fusion_apps/service_attachment_client.py +0 -370
- oci/fusion_apps/service_attachment_client_composite_operations.py +0 -24
- oci/jms/models/request_summarized_application_usage_details.py +0 -504
- oci/jms/models/request_summarized_installation_usage_details.py +0 -448
- oci/jms/models/request_summarized_jre_usage_details.py +0 -421
- oci/jms/models/request_summarized_managed_instance_usage_details.py +0 -480
- oci/log_analytics/models/attribute.py +0 -602
- oci/log_analytics/models/create_namespace_details.py +0 -70
- oci/log_analytics/models/field_map.py +0 -101
- oci/log_analytics/models/generate_agent_object_name_details.py +0 -163
- oci/log_analytics/models/log_analytics.py +0 -370
- oci/log_analytics/models/log_analytics_summary.py +0 -304
- oci/log_analytics/models/out_of_box_entity_type_details.py +0 -211
- oci/log_analytics/models/query.py +0 -70
- oci/log_analytics/models/register_entity_types_details.py +0 -70
- oci/log_analytics/models/service_tenancy.py +0 -70
- oci/logging/models/log_included_search.py +0 -307
- oci/logging/models/log_included_search_summary.py +0 -165
- oci/media_services/models/media_workflow_job_fact.py +0 -198
- oci/media_services/models/media_workflow_job_fact_summary.py +0 -165
- oci/mysql/models/add_analytics_cluster_details.py +0 -108
- oci/mysql/models/analytics_cluster.py +0 -338
- oci/mysql/models/analytics_cluster_memory_estimate.py +0 -241
- oci/mysql/models/analytics_cluster_node.py +0 -210
- oci/mysql/models/analytics_cluster_schema_memory_estimate.py +0 -107
- oci/mysql/models/analytics_cluster_summary.py +0 -209
- oci/mysql/models/analytics_cluster_table_memory_estimate.py +0 -239
- oci/mysql/models/update_analytics_cluster_details.py +0 -120
- oci/network_firewall/models/tcp_application.py +0 -112
- oci/network_firewall/models/udp_application.py +0 -112
- oci/oce/models/delete_oce_instance_details.py +0 -70
- oci/ocvp/models/datastore_summary.py +0 -154
- oci/ocvp/models/supported_sku_summary.py +0 -96
- oci/os_management/models/updatable_package_summary.py +0 -287
- oci/osp_gateway/models/billing_address.py +0 -382
- oci/service_mesh/models/create_ingress_gateway_mutual_transport_layer_security_details.py +0 -76
- oci/service_mesh/models/create_mutual_transport_layer_security_details.py +0 -111
- oci/usage_api/models/create_schedule_report_details.py +0 -128
- oci/usage_api/models/saved_schedule_report.py +0 -145
- oci/usage_api/models/schedule_report.py +0 -159
- oci/usage_api/models/schedule_report_summary.py +0 -97
- oci/usage_api/models/update_schedule_report_details.py +0 -66
- {oci-2.135.2.dist-info → oci-2.137.0.dist-info}/LICENSE.txt +0 -0
- {oci-2.135.2.dist-info → oci-2.137.0.dist-info}/THIRD_PARTY_LICENSES.txt +0 -0
- {oci-2.135.2.dist-info → oci-2.137.0.dist-info}/WHEEL +0 -0
- {oci-2.135.2.dist-info → oci-2.137.0.dist-info}/top_level.txt +0 -0
oci/_vendor/jwt/algorithms.py
CHANGED
@@ -1,43 +1,80 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# Modified Work: Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
|
3
3
|
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
|
4
|
-
# Original Work: Copyright (c) 2015 José Padilla
|
4
|
+
# Original Work: Copyright (c) 2015-2022 José Padilla
|
5
5
|
|
6
6
|
import hashlib
|
7
7
|
import hmac
|
8
8
|
import json
|
9
9
|
|
10
|
-
|
11
|
-
from .compat import constant_time_compare, string_types
|
12
10
|
from .exceptions import InvalidKeyError
|
13
11
|
from .utils import (
|
14
|
-
base64url_decode,
|
15
|
-
|
16
|
-
|
12
|
+
base64url_decode,
|
13
|
+
base64url_encode,
|
14
|
+
der_to_raw_signature,
|
15
|
+
force_bytes,
|
16
|
+
from_base64url_uint,
|
17
|
+
is_pem_format,
|
18
|
+
is_ssh_key,
|
19
|
+
raw_to_der_signature,
|
20
|
+
to_base64url_uint,
|
17
21
|
)
|
18
22
|
|
19
23
|
try:
|
24
|
+
import cryptography.exceptions
|
25
|
+
from cryptography.exceptions import InvalidSignature
|
20
26
|
from cryptography.hazmat.primitives import hashes
|
21
|
-
from cryptography.hazmat.primitives.
|
22
|
-
|
27
|
+
from cryptography.hazmat.primitives.asymmetric import ec, padding
|
28
|
+
from cryptography.hazmat.primitives.asymmetric.ec import (
|
29
|
+
EllipticCurvePrivateKey,
|
30
|
+
EllipticCurvePublicKey,
|
31
|
+
)
|
32
|
+
from cryptography.hazmat.primitives.asymmetric.ed448 import (
|
33
|
+
Ed448PrivateKey,
|
34
|
+
Ed448PublicKey,
|
35
|
+
)
|
36
|
+
from cryptography.hazmat.primitives.asymmetric.ed25519 import (
|
37
|
+
Ed25519PrivateKey,
|
38
|
+
Ed25519PublicKey,
|
23
39
|
)
|
24
40
|
from cryptography.hazmat.primitives.asymmetric.rsa import (
|
25
|
-
RSAPrivateKey,
|
26
|
-
|
41
|
+
RSAPrivateKey,
|
42
|
+
RSAPrivateNumbers,
|
43
|
+
RSAPublicKey,
|
44
|
+
RSAPublicNumbers,
|
45
|
+
rsa_crt_dmp1,
|
46
|
+
rsa_crt_dmq1,
|
47
|
+
rsa_crt_iqmp,
|
48
|
+
rsa_recover_prime_factors,
|
27
49
|
)
|
28
|
-
from cryptography.hazmat.primitives.
|
29
|
-
|
50
|
+
from cryptography.hazmat.primitives.serialization import (
|
51
|
+
Encoding,
|
52
|
+
NoEncryption,
|
53
|
+
PrivateFormat,
|
54
|
+
PublicFormat,
|
55
|
+
load_pem_private_key,
|
56
|
+
load_pem_public_key,
|
57
|
+
load_ssh_public_key,
|
30
58
|
)
|
31
|
-
from cryptography.hazmat.primitives.asymmetric import ec, padding
|
32
|
-
from cryptography.hazmat.backends import default_backend
|
33
|
-
from cryptography.exceptions import InvalidSignature
|
34
59
|
|
35
60
|
has_crypto = True
|
36
|
-
except
|
61
|
+
except ModuleNotFoundError:
|
37
62
|
has_crypto = False
|
38
63
|
|
39
|
-
requires_cryptography =
|
40
|
-
|
64
|
+
requires_cryptography = {
|
65
|
+
"RS256",
|
66
|
+
"RS384",
|
67
|
+
"RS512",
|
68
|
+
"ES256",
|
69
|
+
"ES256K",
|
70
|
+
"ES384",
|
71
|
+
"ES521",
|
72
|
+
"ES512",
|
73
|
+
"PS256",
|
74
|
+
"PS384",
|
75
|
+
"PS512",
|
76
|
+
"EdDSA",
|
77
|
+
}
|
41
78
|
|
42
79
|
|
43
80
|
def get_default_algorithms():
|
@@ -45,33 +82,40 @@ def get_default_algorithms():
|
|
45
82
|
Returns the algorithms that are implemented by the library.
|
46
83
|
"""
|
47
84
|
default_algorithms = {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
85
|
+
"none": NoneAlgorithm(),
|
86
|
+
"HS256": HMACAlgorithm(HMACAlgorithm.SHA256),
|
87
|
+
"HS384": HMACAlgorithm(HMACAlgorithm.SHA384),
|
88
|
+
"HS512": HMACAlgorithm(HMACAlgorithm.SHA512),
|
52
89
|
}
|
53
90
|
|
54
91
|
if has_crypto:
|
55
|
-
default_algorithms.update(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
92
|
+
default_algorithms.update(
|
93
|
+
{
|
94
|
+
"RS256": RSAAlgorithm(RSAAlgorithm.SHA256),
|
95
|
+
"RS384": RSAAlgorithm(RSAAlgorithm.SHA384),
|
96
|
+
"RS512": RSAAlgorithm(RSAAlgorithm.SHA512),
|
97
|
+
"ES256": ECAlgorithm(ECAlgorithm.SHA256),
|
98
|
+
"ES256K": ECAlgorithm(ECAlgorithm.SHA256),
|
99
|
+
"ES384": ECAlgorithm(ECAlgorithm.SHA384),
|
100
|
+
"ES521": ECAlgorithm(ECAlgorithm.SHA512),
|
101
|
+
"ES512": ECAlgorithm(
|
102
|
+
ECAlgorithm.SHA512
|
103
|
+
), # Backward compat for #219 fix
|
104
|
+
"PS256": RSAPSSAlgorithm(RSAPSSAlgorithm.SHA256),
|
105
|
+
"PS384": RSAPSSAlgorithm(RSAPSSAlgorithm.SHA384),
|
106
|
+
"PS512": RSAPSSAlgorithm(RSAPSSAlgorithm.SHA512),
|
107
|
+
"EdDSA": OKPAlgorithm(),
|
108
|
+
}
|
109
|
+
)
|
67
110
|
|
68
111
|
return default_algorithms
|
69
112
|
|
70
113
|
|
71
|
-
class Algorithm
|
114
|
+
class Algorithm:
|
72
115
|
"""
|
73
116
|
The interface for an algorithm used to sign and verify tokens.
|
74
117
|
"""
|
118
|
+
|
75
119
|
def prepare_key(self, key):
|
76
120
|
"""
|
77
121
|
Performs necessary validation and conversions on the key and returns
|
@@ -113,8 +157,9 @@ class NoneAlgorithm(Algorithm):
|
|
113
157
|
Placeholder for use when no signing or verification
|
114
158
|
operations are required.
|
115
159
|
"""
|
160
|
+
|
116
161
|
def prepare_key(self, key):
|
117
|
-
if key ==
|
162
|
+
if key == "":
|
118
163
|
key = None
|
119
164
|
|
120
165
|
if key is not None:
|
@@ -123,7 +168,7 @@ class NoneAlgorithm(Algorithm):
|
|
123
168
|
return key
|
124
169
|
|
125
170
|
def sign(self, msg, key):
|
126
|
-
return b
|
171
|
+
return b""
|
127
172
|
|
128
173
|
def verify(self, msg, key, sig):
|
129
174
|
return False
|
@@ -134,6 +179,7 @@ class HMACAlgorithm(Algorithm):
|
|
134
179
|
Performs signing and verification operations using HMAC
|
135
180
|
and the specified hash function.
|
136
181
|
"""
|
182
|
+
|
137
183
|
SHA256 = hashlib.sha256
|
138
184
|
SHA384 = hashlib.sha384
|
139
185
|
SHA512 = hashlib.sha512
|
@@ -144,41 +190,45 @@ class HMACAlgorithm(Algorithm):
|
|
144
190
|
def prepare_key(self, key):
|
145
191
|
key = force_bytes(key)
|
146
192
|
|
147
|
-
|
148
|
-
b'-----BEGIN PUBLIC KEY-----',
|
149
|
-
b'-----BEGIN CERTIFICATE-----',
|
150
|
-
b'-----BEGIN RSA PUBLIC KEY-----',
|
151
|
-
b'ssh-rsa'
|
152
|
-
]
|
153
|
-
|
154
|
-
if any([string_value in key for string_value in invalid_strings]):
|
193
|
+
if is_pem_format(key) or is_ssh_key(key):
|
155
194
|
raise InvalidKeyError(
|
156
|
-
|
157
|
-
|
195
|
+
"The specified key is an asymmetric key or x509 certificate and"
|
196
|
+
" should not be used as an HMAC secret."
|
197
|
+
)
|
158
198
|
|
159
199
|
return key
|
160
200
|
|
161
201
|
@staticmethod
|
162
202
|
def to_jwk(key_obj):
|
163
|
-
return json.dumps(
|
164
|
-
|
165
|
-
|
166
|
-
|
203
|
+
return json.dumps(
|
204
|
+
{
|
205
|
+
"k": base64url_encode(force_bytes(key_obj)).decode(),
|
206
|
+
"kty": "oct",
|
207
|
+
}
|
208
|
+
)
|
167
209
|
|
168
210
|
@staticmethod
|
169
211
|
def from_jwk(jwk):
|
170
|
-
|
212
|
+
try:
|
213
|
+
if isinstance(jwk, str):
|
214
|
+
obj = json.loads(jwk)
|
215
|
+
elif isinstance(jwk, dict):
|
216
|
+
obj = jwk
|
217
|
+
else:
|
218
|
+
raise ValueError
|
219
|
+
except ValueError:
|
220
|
+
raise InvalidKeyError("Key is not valid JSON")
|
171
221
|
|
172
|
-
if obj.get(
|
173
|
-
raise InvalidKeyError(
|
222
|
+
if obj.get("kty") != "oct":
|
223
|
+
raise InvalidKeyError("Not an HMAC key")
|
174
224
|
|
175
|
-
return base64url_decode(obj[
|
225
|
+
return base64url_decode(obj["k"])
|
176
226
|
|
177
227
|
def sign(self, msg, key):
|
178
228
|
return hmac.new(key, msg, self.hash_alg).digest()
|
179
229
|
|
180
230
|
def verify(self, msg, key, sig):
|
181
|
-
return
|
231
|
+
return hmac.compare_digest(sig, self.sign(msg, key))
|
182
232
|
|
183
233
|
|
184
234
|
if has_crypto:
|
@@ -188,6 +238,7 @@ if has_crypto:
|
|
188
238
|
Performs signing and verification operations using
|
189
239
|
RSASSA-PKCS-v1_5 and the specified hash function.
|
190
240
|
"""
|
241
|
+
|
191
242
|
SHA256 = hashes.SHA256
|
192
243
|
SHA384 = hashes.SHA384
|
193
244
|
SHA512 = hashes.SHA512
|
@@ -196,99 +247,107 @@ if has_crypto:
|
|
196
247
|
self.hash_alg = hash_alg
|
197
248
|
|
198
249
|
def prepare_key(self, key):
|
199
|
-
if isinstance(key, RSAPrivateKey)
|
200
|
-
isinstance(key, RSAPublicKey):
|
250
|
+
if isinstance(key, (RSAPrivateKey, RSAPublicKey)):
|
201
251
|
return key
|
202
252
|
|
203
|
-
if isinstance(key,
|
204
|
-
|
253
|
+
if not isinstance(key, (bytes, str)):
|
254
|
+
raise TypeError("Expecting a PEM-formatted key.")
|
205
255
|
|
206
|
-
|
207
|
-
if key.startswith(b'ssh-rsa'):
|
208
|
-
key = load_ssh_public_key(key, backend=default_backend())
|
209
|
-
else:
|
210
|
-
key = load_pem_private_key(key, password=None, backend=default_backend())
|
211
|
-
except ValueError:
|
212
|
-
key = load_pem_public_key(key, backend=default_backend())
|
213
|
-
else:
|
214
|
-
raise TypeError('Expecting a PEM-formatted key.')
|
256
|
+
key = force_bytes(key)
|
215
257
|
|
258
|
+
try:
|
259
|
+
if key.startswith(b"ssh-rsa"):
|
260
|
+
key = load_ssh_public_key(key)
|
261
|
+
else:
|
262
|
+
key = load_pem_private_key(key, password=None)
|
263
|
+
except ValueError:
|
264
|
+
key = load_pem_public_key(key)
|
216
265
|
return key
|
217
266
|
|
218
267
|
@staticmethod
|
219
268
|
def to_jwk(key_obj):
|
220
269
|
obj = None
|
221
270
|
|
222
|
-
if getattr(key_obj,
|
271
|
+
if getattr(key_obj, "private_numbers", None):
|
223
272
|
# Private key
|
224
273
|
numbers = key_obj.private_numbers()
|
225
274
|
|
226
275
|
obj = {
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
276
|
+
"kty": "RSA",
|
277
|
+
"key_ops": ["sign"],
|
278
|
+
"n": to_base64url_uint(numbers.public_numbers.n).decode(),
|
279
|
+
"e": to_base64url_uint(numbers.public_numbers.e).decode(),
|
280
|
+
"d": to_base64url_uint(numbers.d).decode(),
|
281
|
+
"p": to_base64url_uint(numbers.p).decode(),
|
282
|
+
"q": to_base64url_uint(numbers.q).decode(),
|
283
|
+
"dp": to_base64url_uint(numbers.dmp1).decode(),
|
284
|
+
"dq": to_base64url_uint(numbers.dmq1).decode(),
|
285
|
+
"qi": to_base64url_uint(numbers.iqmp).decode(),
|
237
286
|
}
|
238
287
|
|
239
|
-
elif getattr(key_obj,
|
288
|
+
elif getattr(key_obj, "verify", None):
|
240
289
|
# Public key
|
241
290
|
numbers = key_obj.public_numbers()
|
242
291
|
|
243
292
|
obj = {
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
293
|
+
"kty": "RSA",
|
294
|
+
"key_ops": ["verify"],
|
295
|
+
"n": to_base64url_uint(numbers.n).decode(),
|
296
|
+
"e": to_base64url_uint(numbers.e).decode(),
|
248
297
|
}
|
249
298
|
else:
|
250
|
-
raise InvalidKeyError(
|
299
|
+
raise InvalidKeyError("Not a public or private key")
|
251
300
|
|
252
301
|
return json.dumps(obj)
|
253
302
|
|
254
303
|
@staticmethod
|
255
304
|
def from_jwk(jwk):
|
256
305
|
try:
|
257
|
-
|
306
|
+
if isinstance(jwk, str):
|
307
|
+
obj = json.loads(jwk)
|
308
|
+
elif isinstance(jwk, dict):
|
309
|
+
obj = jwk
|
310
|
+
else:
|
311
|
+
raise ValueError
|
258
312
|
except ValueError:
|
259
|
-
raise InvalidKeyError(
|
313
|
+
raise InvalidKeyError("Key is not valid JSON")
|
260
314
|
|
261
|
-
if obj.get(
|
262
|
-
raise InvalidKeyError(
|
315
|
+
if obj.get("kty") != "RSA":
|
316
|
+
raise InvalidKeyError("Not an RSA key")
|
263
317
|
|
264
|
-
if
|
318
|
+
if "d" in obj and "e" in obj and "n" in obj:
|
265
319
|
# Private key
|
266
|
-
if
|
267
|
-
raise InvalidKeyError(
|
320
|
+
if "oth" in obj:
|
321
|
+
raise InvalidKeyError(
|
322
|
+
"Unsupported RSA private key: > 2 primes not supported"
|
323
|
+
)
|
268
324
|
|
269
|
-
other_props = [
|
325
|
+
other_props = ["p", "q", "dp", "dq", "qi"]
|
270
326
|
props_found = [prop in obj for prop in other_props]
|
271
327
|
any_props_found = any(props_found)
|
272
328
|
|
273
329
|
if any_props_found and not all(props_found):
|
274
|
-
raise InvalidKeyError(
|
330
|
+
raise InvalidKeyError(
|
331
|
+
"RSA key must include all parameters if any are present besides d"
|
332
|
+
)
|
275
333
|
|
276
334
|
public_numbers = RSAPublicNumbers(
|
277
|
-
from_base64url_uint(obj[
|
335
|
+
from_base64url_uint(obj["e"]),
|
336
|
+
from_base64url_uint(obj["n"]),
|
278
337
|
)
|
279
338
|
|
280
339
|
if any_props_found:
|
281
340
|
numbers = RSAPrivateNumbers(
|
282
|
-
d=from_base64url_uint(obj[
|
283
|
-
p=from_base64url_uint(obj[
|
284
|
-
q=from_base64url_uint(obj[
|
285
|
-
dmp1=from_base64url_uint(obj[
|
286
|
-
dmq1=from_base64url_uint(obj[
|
287
|
-
iqmp=from_base64url_uint(obj[
|
288
|
-
public_numbers=public_numbers
|
341
|
+
d=from_base64url_uint(obj["d"]),
|
342
|
+
p=from_base64url_uint(obj["p"]),
|
343
|
+
q=from_base64url_uint(obj["q"]),
|
344
|
+
dmp1=from_base64url_uint(obj["dp"]),
|
345
|
+
dmq1=from_base64url_uint(obj["dq"]),
|
346
|
+
iqmp=from_base64url_uint(obj["qi"]),
|
347
|
+
public_numbers=public_numbers,
|
289
348
|
)
|
290
349
|
else:
|
291
|
-
d = from_base64url_uint(obj[
|
350
|
+
d = from_base64url_uint(obj["d"])
|
292
351
|
p, q = rsa_recover_prime_factors(
|
293
352
|
public_numbers.n, d, public_numbers.e
|
294
353
|
)
|
@@ -300,19 +359,20 @@ if has_crypto:
|
|
300
359
|
dmp1=rsa_crt_dmp1(d, p),
|
301
360
|
dmq1=rsa_crt_dmq1(d, q),
|
302
361
|
iqmp=rsa_crt_iqmp(p, q),
|
303
|
-
public_numbers=public_numbers
|
362
|
+
public_numbers=public_numbers,
|
304
363
|
)
|
305
364
|
|
306
|
-
return numbers.private_key(
|
307
|
-
elif
|
365
|
+
return numbers.private_key()
|
366
|
+
elif "n" in obj and "e" in obj:
|
308
367
|
# Public key
|
309
368
|
numbers = RSAPublicNumbers(
|
310
|
-
from_base64url_uint(obj[
|
369
|
+
from_base64url_uint(obj["e"]),
|
370
|
+
from_base64url_uint(obj["n"]),
|
311
371
|
)
|
312
372
|
|
313
|
-
return numbers.public_key(
|
373
|
+
return numbers.public_key()
|
314
374
|
else:
|
315
|
-
raise InvalidKeyError(
|
375
|
+
raise InvalidKeyError("Not a public or private key")
|
316
376
|
|
317
377
|
def sign(self, msg, key):
|
318
378
|
return key.sign(msg, padding.PKCS1v15(), self.hash_alg())
|
@@ -329,6 +389,7 @@ if has_crypto:
|
|
329
389
|
Performs signing and verification operations using
|
330
390
|
ECDSA and the specified hash function
|
331
391
|
"""
|
392
|
+
|
332
393
|
SHA256 = hashes.SHA256
|
333
394
|
SHA384 = hashes.SHA384
|
334
395
|
SHA512 = hashes.SHA512
|
@@ -337,26 +398,30 @@ if has_crypto:
|
|
337
398
|
self.hash_alg = hash_alg
|
338
399
|
|
339
400
|
def prepare_key(self, key):
|
340
|
-
if isinstance(key, EllipticCurvePrivateKey)
|
341
|
-
isinstance(key, EllipticCurvePublicKey):
|
401
|
+
if isinstance(key, (EllipticCurvePrivateKey, EllipticCurvePublicKey)):
|
342
402
|
return key
|
343
403
|
|
344
|
-
if isinstance(key,
|
345
|
-
|
404
|
+
if not isinstance(key, (bytes, str)):
|
405
|
+
raise TypeError("Expecting a PEM-formatted key.")
|
346
406
|
|
347
|
-
|
348
|
-
# a Signing Key or a Verifying Key, so we try
|
349
|
-
# the Verifying Key first.
|
350
|
-
try:
|
351
|
-
if key.startswith(b'ecdsa-sha2-'):
|
352
|
-
key = load_ssh_public_key(key, backend=default_backend())
|
353
|
-
else:
|
354
|
-
key = load_pem_public_key(key, backend=default_backend())
|
355
|
-
except ValueError:
|
356
|
-
key = load_pem_private_key(key, password=None, backend=default_backend())
|
407
|
+
key = force_bytes(key)
|
357
408
|
|
358
|
-
|
359
|
-
|
409
|
+
# Attempt to load key. We don't know if it's
|
410
|
+
# a Signing Key or a Verifying Key, so we try
|
411
|
+
# the Verifying Key first.
|
412
|
+
try:
|
413
|
+
if key.startswith(b"ecdsa-sha2-"):
|
414
|
+
key = load_ssh_public_key(key)
|
415
|
+
else:
|
416
|
+
key = load_pem_public_key(key)
|
417
|
+
except ValueError:
|
418
|
+
key = load_pem_private_key(key, password=None)
|
419
|
+
|
420
|
+
# Explicit check the key to prevent confusing errors from cryptography
|
421
|
+
if not isinstance(key, (EllipticCurvePrivateKey, EllipticCurvePublicKey)):
|
422
|
+
raise InvalidKeyError(
|
423
|
+
"Expecting a EllipticCurvePrivateKey/EllipticCurvePublicKey. Wrong key provided for ECDSA algorithms"
|
424
|
+
)
|
360
425
|
|
361
426
|
return key
|
362
427
|
|
@@ -372,11 +437,79 @@ if has_crypto:
|
|
372
437
|
return False
|
373
438
|
|
374
439
|
try:
|
440
|
+
if isinstance(key, EllipticCurvePrivateKey):
|
441
|
+
key = key.public_key()
|
375
442
|
key.verify(der_sig, msg, ec.ECDSA(self.hash_alg()))
|
376
443
|
return True
|
377
444
|
except InvalidSignature:
|
378
445
|
return False
|
379
446
|
|
447
|
+
@staticmethod
|
448
|
+
def from_jwk(jwk):
|
449
|
+
try:
|
450
|
+
if isinstance(jwk, str):
|
451
|
+
obj = json.loads(jwk)
|
452
|
+
elif isinstance(jwk, dict):
|
453
|
+
obj = jwk
|
454
|
+
else:
|
455
|
+
raise ValueError
|
456
|
+
except ValueError:
|
457
|
+
raise InvalidKeyError("Key is not valid JSON")
|
458
|
+
|
459
|
+
if obj.get("kty") != "EC":
|
460
|
+
raise InvalidKeyError("Not an Elliptic curve key")
|
461
|
+
|
462
|
+
if "x" not in obj or "y" not in obj:
|
463
|
+
raise InvalidKeyError("Not an Elliptic curve key")
|
464
|
+
|
465
|
+
x = base64url_decode(obj.get("x"))
|
466
|
+
y = base64url_decode(obj.get("y"))
|
467
|
+
|
468
|
+
curve = obj.get("crv")
|
469
|
+
if curve == "P-256":
|
470
|
+
if len(x) == len(y) == 32:
|
471
|
+
curve_obj = ec.SECP256R1()
|
472
|
+
else:
|
473
|
+
raise InvalidKeyError("Coords should be 32 bytes for curve P-256")
|
474
|
+
elif curve == "P-384":
|
475
|
+
if len(x) == len(y) == 48:
|
476
|
+
curve_obj = ec.SECP384R1()
|
477
|
+
else:
|
478
|
+
raise InvalidKeyError("Coords should be 48 bytes for curve P-384")
|
479
|
+
elif curve == "P-521":
|
480
|
+
if len(x) == len(y) == 66:
|
481
|
+
curve_obj = ec.SECP521R1()
|
482
|
+
else:
|
483
|
+
raise InvalidKeyError("Coords should be 66 bytes for curve P-521")
|
484
|
+
elif curve == "secp256k1":
|
485
|
+
if len(x) == len(y) == 32:
|
486
|
+
curve_obj = ec.SECP256K1()
|
487
|
+
else:
|
488
|
+
raise InvalidKeyError(
|
489
|
+
"Coords should be 32 bytes for curve secp256k1"
|
490
|
+
)
|
491
|
+
else:
|
492
|
+
raise InvalidKeyError(f"Invalid curve: {curve}")
|
493
|
+
|
494
|
+
public_numbers = ec.EllipticCurvePublicNumbers(
|
495
|
+
x=int.from_bytes(x, byteorder="big"),
|
496
|
+
y=int.from_bytes(y, byteorder="big"),
|
497
|
+
curve=curve_obj,
|
498
|
+
)
|
499
|
+
|
500
|
+
if "d" not in obj:
|
501
|
+
return public_numbers.public_key()
|
502
|
+
|
503
|
+
d = base64url_decode(obj.get("d"))
|
504
|
+
if len(d) != len(x):
|
505
|
+
raise InvalidKeyError(
|
506
|
+
"D should be {} bytes for curve {}", len(x), curve
|
507
|
+
)
|
508
|
+
|
509
|
+
return ec.EllipticCurvePrivateNumbers(
|
510
|
+
int.from_bytes(d, byteorder="big"), public_numbers
|
511
|
+
).private_key()
|
512
|
+
|
380
513
|
class RSAPSSAlgorithm(RSAAlgorithm):
|
381
514
|
"""
|
382
515
|
Performs a signature using RSASSA-PSS with MGF1
|
@@ -387,9 +520,9 @@ if has_crypto:
|
|
387
520
|
msg,
|
388
521
|
padding.PSS(
|
389
522
|
mgf=padding.MGF1(self.hash_alg()),
|
390
|
-
salt_length=self.hash_alg.digest_size
|
523
|
+
salt_length=self.hash_alg.digest_size,
|
391
524
|
),
|
392
|
-
self.hash_alg()
|
525
|
+
self.hash_alg(),
|
393
526
|
)
|
394
527
|
|
395
528
|
def verify(self, msg, key, sig):
|
@@ -399,10 +532,151 @@ if has_crypto:
|
|
399
532
|
msg,
|
400
533
|
padding.PSS(
|
401
534
|
mgf=padding.MGF1(self.hash_alg()),
|
402
|
-
salt_length=self.hash_alg.digest_size
|
535
|
+
salt_length=self.hash_alg.digest_size,
|
403
536
|
),
|
404
|
-
self.hash_alg()
|
537
|
+
self.hash_alg(),
|
405
538
|
)
|
406
539
|
return True
|
407
540
|
except InvalidSignature:
|
408
541
|
return False
|
542
|
+
|
543
|
+
class OKPAlgorithm(Algorithm):
|
544
|
+
"""
|
545
|
+
Performs signing and verification operations using EdDSA
|
546
|
+
|
547
|
+
This class requires ``cryptography>=2.6`` to be installed.
|
548
|
+
"""
|
549
|
+
|
550
|
+
def __init__(self, **kwargs):
|
551
|
+
pass
|
552
|
+
|
553
|
+
def prepare_key(self, key):
|
554
|
+
if isinstance(key, (bytes, str)):
|
555
|
+
if isinstance(key, str):
|
556
|
+
key = key.encode("utf-8")
|
557
|
+
str_key = key.decode("utf-8")
|
558
|
+
|
559
|
+
if "-----BEGIN PUBLIC" in str_key:
|
560
|
+
key = load_pem_public_key(key)
|
561
|
+
elif "-----BEGIN PRIVATE" in str_key:
|
562
|
+
key = load_pem_private_key(key, password=None)
|
563
|
+
elif str_key[0:4] == "ssh-":
|
564
|
+
key = load_ssh_public_key(key)
|
565
|
+
|
566
|
+
# Explicit check the key to prevent confusing errors from cryptography
|
567
|
+
if not isinstance(
|
568
|
+
key,
|
569
|
+
(Ed25519PrivateKey, Ed25519PublicKey, Ed448PrivateKey, Ed448PublicKey),
|
570
|
+
):
|
571
|
+
raise InvalidKeyError(
|
572
|
+
"Expecting a EllipticCurvePrivateKey/EllipticCurvePublicKey. Wrong key provided for EdDSA algorithms"
|
573
|
+
)
|
574
|
+
|
575
|
+
return key
|
576
|
+
|
577
|
+
def sign(self, msg, key):
|
578
|
+
"""
|
579
|
+
Sign a message ``msg`` using the EdDSA private key ``key``
|
580
|
+
:param str|bytes msg: Message to sign
|
581
|
+
:param Ed25519PrivateKey}Ed448PrivateKey key: A :class:`.Ed25519PrivateKey`
|
582
|
+
or :class:`.Ed448PrivateKey` iinstance
|
583
|
+
:return bytes signature: The signature, as bytes
|
584
|
+
"""
|
585
|
+
msg = bytes(msg, "utf-8") if type(msg) is not bytes else msg
|
586
|
+
return key.sign(msg)
|
587
|
+
|
588
|
+
def verify(self, msg, key, sig):
|
589
|
+
"""
|
590
|
+
Verify a given ``msg`` against a signature ``sig`` using the EdDSA key ``key``
|
591
|
+
|
592
|
+
:param str|bytes sig: EdDSA signature to check ``msg`` against
|
593
|
+
:param str|bytes msg: Message to sign
|
594
|
+
:param Ed25519PrivateKey|Ed25519PublicKey|Ed448PrivateKey|Ed448PublicKey key:
|
595
|
+
A private or public EdDSA key instance
|
596
|
+
:return bool verified: True if signature is valid, False if not.
|
597
|
+
"""
|
598
|
+
try:
|
599
|
+
msg = bytes(msg, "utf-8") if type(msg) is not bytes else msg
|
600
|
+
sig = bytes(sig, "utf-8") if type(sig) is not bytes else sig
|
601
|
+
|
602
|
+
if isinstance(key, (Ed25519PrivateKey, Ed448PrivateKey)):
|
603
|
+
key = key.public_key()
|
604
|
+
key.verify(sig, msg)
|
605
|
+
return True # If no exception was raised, the signature is valid.
|
606
|
+
except cryptography.exceptions.InvalidSignature:
|
607
|
+
return False
|
608
|
+
|
609
|
+
@staticmethod
|
610
|
+
def to_jwk(key):
|
611
|
+
if isinstance(key, (Ed25519PublicKey, Ed448PublicKey)):
|
612
|
+
x = key.public_bytes(
|
613
|
+
encoding=Encoding.Raw,
|
614
|
+
format=PublicFormat.Raw,
|
615
|
+
)
|
616
|
+
crv = "Ed25519" if isinstance(key, Ed25519PublicKey) else "Ed448"
|
617
|
+
return json.dumps(
|
618
|
+
{
|
619
|
+
"x": base64url_encode(force_bytes(x)).decode(),
|
620
|
+
"kty": "OKP",
|
621
|
+
"crv": crv,
|
622
|
+
}
|
623
|
+
)
|
624
|
+
|
625
|
+
if isinstance(key, (Ed25519PrivateKey, Ed448PrivateKey)):
|
626
|
+
d = key.private_bytes(
|
627
|
+
encoding=Encoding.Raw,
|
628
|
+
format=PrivateFormat.Raw,
|
629
|
+
encryption_algorithm=NoEncryption(),
|
630
|
+
)
|
631
|
+
|
632
|
+
x = key.public_key().public_bytes(
|
633
|
+
encoding=Encoding.Raw,
|
634
|
+
format=PublicFormat.Raw,
|
635
|
+
)
|
636
|
+
|
637
|
+
crv = "Ed25519" if isinstance(key, Ed25519PrivateKey) else "Ed448"
|
638
|
+
return json.dumps(
|
639
|
+
{
|
640
|
+
"x": base64url_encode(force_bytes(x)).decode(),
|
641
|
+
"d": base64url_encode(force_bytes(d)).decode(),
|
642
|
+
"kty": "OKP",
|
643
|
+
"crv": crv,
|
644
|
+
}
|
645
|
+
)
|
646
|
+
|
647
|
+
raise InvalidKeyError("Not a public or private key")
|
648
|
+
|
649
|
+
@staticmethod
|
650
|
+
def from_jwk(jwk):
|
651
|
+
try:
|
652
|
+
if isinstance(jwk, str):
|
653
|
+
obj = json.loads(jwk)
|
654
|
+
elif isinstance(jwk, dict):
|
655
|
+
obj = jwk
|
656
|
+
else:
|
657
|
+
raise ValueError
|
658
|
+
except ValueError:
|
659
|
+
raise InvalidKeyError("Key is not valid JSON")
|
660
|
+
|
661
|
+
if obj.get("kty") != "OKP":
|
662
|
+
raise InvalidKeyError("Not an Octet Key Pair")
|
663
|
+
|
664
|
+
curve = obj.get("crv")
|
665
|
+
if curve != "Ed25519" and curve != "Ed448":
|
666
|
+
raise InvalidKeyError(f"Invalid curve: {curve}")
|
667
|
+
|
668
|
+
if "x" not in obj:
|
669
|
+
raise InvalidKeyError('OKP should have "x" parameter')
|
670
|
+
x = base64url_decode(obj.get("x"))
|
671
|
+
|
672
|
+
try:
|
673
|
+
if "d" not in obj:
|
674
|
+
if curve == "Ed25519":
|
675
|
+
return Ed25519PublicKey.from_public_bytes(x)
|
676
|
+
return Ed448PublicKey.from_public_bytes(x)
|
677
|
+
d = base64url_decode(obj.get("d"))
|
678
|
+
if curve == "Ed25519":
|
679
|
+
return Ed25519PrivateKey.from_private_bytes(d)
|
680
|
+
return Ed448PrivateKey.from_private_bytes(d)
|
681
|
+
except ValueError as err:
|
682
|
+
raise InvalidKeyError("Invalid key parameter") from err
|