{"version":3,"file":"index.js","sources":["../src/log.ts","../src/generated/models/index.ts","../src/generated/models/mappers.ts","../src/generated/models/parameters.ts","../src/generated/keyVaultClient.ts","../src/constants.ts","../../keyvault-common/src/parseWWWAuthenticate.ts","../../keyvault-common/src/challengeBasedAuthenticationPolicy.ts","../../keyvault-common/src/parseKeyVaultIdentifier.ts","../src/tracing.ts","../src/identifier.ts","../src/transformations.ts","../src/lro/keyVaultKeyPoller.ts","../src/lro/delete/operation.ts","../src/lro/delete/poller.ts","../src/lro/recover/operation.ts","../src/lro/recover/poller.ts","../src/keysModels.ts","../src/cryptography/crypto.ts","../src/cryptography/remoteCryptographyProvider.ts","../src/cryptography/conversions.ts","../src/cryptography/models.ts","../src/cryptography/rsaCryptographyProvider.ts","../src/cryptography/aesCryptographyProvider.ts","../src/cryptographyClient.ts","../src/cryptographyClientModels.ts","../src/index.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"keyvault-keys\");\n","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\n\n/** The key create parameters. */\nexport interface KeyCreateParameters {\n /** The type of key to create. For valid values, see JsonWebKeyType. */\n kty: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The object attributes managed by the KeyVault service. */\nexport interface Attributes {\n /** Determines whether the object is enabled. */\n enabled?: boolean;\n /** Not before date in UTC. */\n notBefore?: Date;\n /** Expiry date in UTC. */\n expires?: Date;\n /**\n * Creation time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * Last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The policy rules under which the key can be exported. */\nexport interface KeyReleasePolicy {\n /** Content type and version of key release policy */\n contentType?: string;\n /** Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed under any circumstances. */\n immutable?: boolean;\n /** Blob encoding the policy rules under which the key can be released. Blob must be base64 URL encoded. */\n encodedPolicy?: Uint8Array;\n}\n\n/** A KeyBundle consisting of a WebKey plus its attributes. */\nexport interface KeyBundle {\n /** The Json web key. */\n key?: JsonWebKey;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 */\nexport interface JsonWebKey {\n /** Key identifier. */\n kid?: string;\n /** JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. */\n kty?: JsonWebKeyType;\n keyOps?: string[];\n /** RSA modulus. */\n n?: Uint8Array;\n /** RSA public exponent. */\n e?: Uint8Array;\n /** RSA private exponent, or the D component of an EC private key. */\n d?: Uint8Array;\n /** RSA private key parameter. */\n dp?: Uint8Array;\n /** RSA private key parameter. */\n dq?: Uint8Array;\n /** RSA private key parameter. */\n qi?: Uint8Array;\n /** RSA secret prime. */\n p?: Uint8Array;\n /** RSA secret prime, with p < q. */\n q?: Uint8Array;\n /** Symmetric key. */\n k?: Uint8Array;\n /** Protected Key, used with 'Bring Your Own Key'. */\n t?: Uint8Array;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n crv?: JsonWebKeyCurveName;\n /** X component of an EC public key. */\n x?: Uint8Array;\n /** Y component of an EC public key. */\n y?: Uint8Array;\n}\n\n/** The key vault error exception. */\nexport interface KeyVaultError {\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly error?: ErrorModel;\n}\n\n/** The key vault server error. */\nexport interface ErrorModel {\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code?: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message?: string;\n /**\n * The key vault server error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly innerError?: ErrorModel;\n}\n\n/** The key import parameters. */\nexport interface KeyImportParameters {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The Json web key */\n key: JsonWebKey;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key update parameters. */\nexport interface KeyUpdateParameters {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** The key list result. */\nexport interface KeyListResult {\n /**\n * A response message containing a list of keys in the key vault along with a link to the next page of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: KeyItem[];\n /**\n * The URL to get the next set of keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** The key item containing key metadata. */\nexport interface KeyItem {\n /** Key identifier. */\n kid?: string;\n /** The key management attributes. */\n attributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /**\n * True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly managed?: boolean;\n}\n\n/** The backup key result, containing the backup blob. */\nexport interface BackupKeyResult {\n /**\n * The backup blob containing the backed up key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: Uint8Array;\n}\n\n/** The key restore parameters. */\nexport interface KeyRestoreParameters {\n /** The backup blob associated with a key bundle. */\n keyBundleBackup: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeyOperationsParameters {\n /** algorithm identifier */\n algorithm: JsonWebKeyEncryptionAlgorithm;\n value: Uint8Array;\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** The key operation result. */\nexport interface KeyOperationResult {\n /**\n * Key identifier\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly kid?: string;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly result?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly iv?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly authenticationTag?: Uint8Array;\n /** NOTE: This property will not be serialized. It can only be populated by the server. */\n readonly additionalAuthenticatedData?: Uint8Array;\n}\n\n/** The key operations parameters. */\nexport interface KeySignParameters {\n /** The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n value: Uint8Array;\n}\n\n/** The key verify parameters. */\nexport interface KeyVerifyParameters {\n /** The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. */\n algorithm: JsonWebKeySignatureAlgorithm;\n /** The digest used for signing. */\n digest: Uint8Array;\n /** The signature to be verified. */\n signature: Uint8Array;\n}\n\n/** The key verify result. */\nexport interface KeyVerifyResult {\n /**\n * True if the signature is verified, otherwise false.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: boolean;\n}\n\n/** The release key parameters. */\nexport interface KeyReleaseParameters {\n /** The attestation assertion for the target of the key release. */\n targetAttestationToken: string;\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The release result, containing the released key. */\nexport interface KeyReleaseResult {\n /**\n * A signed object containing the released key.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: string;\n}\n\n/** A list of keys that have been deleted in this vault. */\nexport interface DeletedKeyListResult {\n /**\n * A response message containing a list of deleted keys in the vault along with a link to the next page of deleted keys\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: DeletedKeyItem[];\n /**\n * The URL to get the next set of deleted keys.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Management policy for a key. */\nexport interface KeyRotationPolicy {\n /**\n * The key policy id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, one for notify. Notification time would be default to 30 days before expiry and it is not configurable. */\n lifetimeActions?: LifetimeActions[];\n /** The key rotation policy attributes. */\n attributes?: KeyRotationPolicyAttributes;\n}\n\n/** Action and its trigger that will be performed by Key Vault over the lifetime of a key. */\nexport interface LifetimeActions {\n /** The condition that will execute the action. */\n trigger?: LifetimeActionsTrigger;\n /** The action that will be executed. */\n action?: LifetimeActionsType;\n}\n\n/** A condition to be satisfied for an action to be executed. */\nexport interface LifetimeActionsTrigger {\n /** Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeAfterCreate?: string;\n /** Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : \"P90D\" */\n timeBeforeExpiry?: string;\n}\n\n/** The action that will be executed. */\nexport interface LifetimeActionsType {\n /** The type of the action. The value should be compared case-insensitively. */\n type?: ActionType;\n}\n\n/** The key rotation policy attributes. */\nexport interface KeyRotationPolicyAttributes {\n /** The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D */\n expiryTime?: string;\n /**\n * The key rotation policy created time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly created?: Date;\n /**\n * The key rotation policy's last updated time in UTC.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly updated?: Date;\n}\n\n/** The get random bytes request object. */\nexport interface GetRandomBytesRequest {\n /** The requested number of random bytes. */\n count: number;\n}\n\n/** The get random bytes response object containing the bytes. */\nexport interface RandomBytes {\n /** The bytes encoded as a base64url string. */\n value: Uint8Array;\n}\n\n/** Properties of the key pair backing a certificate. */\nexport interface KeyProperties {\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /** The type of key pair to be used for the certificate. */\n keyType?: JsonWebKeyType;\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** Indicates if the same key pair will be used on certificate renewal. */\n reuseKey?: boolean;\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n}\n\n/** The export key parameters. */\nexport interface KeyExportParameters {\n /** The export key encryption Json web key. This key MUST be a RSA key that supports encryption. */\n wrappingKey?: JsonWebKey;\n /** The export key encryption key identifier. This key MUST be a RSA key that supports encryption. */\n wrappingKid?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** The attributes of a key managed by the key vault service. */\nexport type KeyAttributes = Attributes & {\n /**\n * softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoverableDays?: number;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system can purge the key, at the end of the retention interval.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /** Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable key. */\n exportable?: boolean;\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n};\n\n/** A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info */\nexport type DeletedKeyBundle = KeyBundle & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** The deleted key item containing the deleted key metadata and information about deletion. */\nexport type DeletedKeyItem = KeyItem & {\n /** The url of the recovery object, used to identify and recover the deleted key. */\n recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedDate?: Date;\n};\n\n/** Known values of {@link ApiVersion75} that the service accepts. */\nexport enum KnownApiVersion75 {\n /** Api Version '7.5' */\n Seven5 = \"7.5\"\n}\n\n/**\n * Defines values for ApiVersion75. \\\n * {@link KnownApiVersion75} can be used interchangeably with ApiVersion75,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **7.5**: Api Version '7.5'\n */\nexport type ApiVersion75 = string;\n\n/** Known values of {@link JsonWebKeyType} that the service accepts. */\nexport enum KnownJsonWebKeyType {\n /** Elliptic Curve. */\n EC = \"EC\",\n /** Elliptic Curve with a private key which is stored in the HSM. */\n ECHSM = \"EC-HSM\",\n /** RSA (https://tools.ietf.org/html/rfc3447) */\n RSA = \"RSA\",\n /** RSA with a private key which is stored in the HSM. */\n RSAHSM = \"RSA-HSM\",\n /** Octet sequence (used to represent symmetric keys) */\n Oct = \"oct\",\n /** Octet sequence (used to represent symmetric keys) which is stored the HSM. */\n OctHSM = \"oct-HSM\"\n}\n\n/**\n * Defines values for JsonWebKeyType. \\\n * {@link KnownJsonWebKeyType} can be used interchangeably with JsonWebKeyType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **EC**: Elliptic Curve. \\\n * **EC-HSM**: Elliptic Curve with a private key which is stored in the HSM. \\\n * **RSA**: RSA (https:\\/\\/tools.ietf.org\\/html\\/rfc3447) \\\n * **RSA-HSM**: RSA with a private key which is stored in the HSM. \\\n * **oct**: Octet sequence (used to represent symmetric keys) \\\n * **oct-HSM**: Octet sequence (used to represent symmetric keys) which is stored the HSM.\n */\nexport type JsonWebKeyType = string;\n\n/** Known values of {@link JsonWebKeyOperation} that the service accepts. */\nexport enum KnownJsonWebKeyOperation {\n Encrypt = \"encrypt\",\n Decrypt = \"decrypt\",\n Sign = \"sign\",\n Verify = \"verify\",\n WrapKey = \"wrapKey\",\n UnwrapKey = \"unwrapKey\",\n Import = \"import\",\n Export = \"export\"\n}\n\n/**\n * Defines values for JsonWebKeyOperation. \\\n * {@link KnownJsonWebKeyOperation} can be used interchangeably with JsonWebKeyOperation,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **encrypt** \\\n * **decrypt** \\\n * **sign** \\\n * **verify** \\\n * **wrapKey** \\\n * **unwrapKey** \\\n * **import** \\\n * **export**\n */\nexport type JsonWebKeyOperation = string;\n\n/** Known values of {@link DeletionRecoveryLevel} that the service accepts. */\nexport enum KnownDeletionRecoveryLevel {\n /** Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) */\n Purgeable = \"Purgeable\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered */\n RecoverablePurgeable = \"Recoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered */\n Recoverable = \"Recoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered */\n RecoverableProtectedSubscription = \"Recoverable+ProtectedSubscription\",\n /** Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. */\n CustomizedRecoverablePurgeable = \"CustomizedRecoverable+Purgeable\",\n /** Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. */\n CustomizedRecoverable = \"CustomizedRecoverable\",\n /** Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled. */\n CustomizedRecoverableProtectedSubscription = \"CustomizedRecoverable+ProtectedSubscription\"\n}\n\n/**\n * Defines values for DeletionRecoveryLevel. \\\n * {@link KnownDeletionRecoveryLevel} can be used interchangeably with DeletionRecoveryLevel,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Purgeable**: Denotes a vault state in which deletion is an irreversible operation, without the possibility for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.) \\\n * **Recoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not recovered \\\n * **Recoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered \\\n * **CustomizedRecoverable+Purgeable**: Denotes a vault state in which deletion is recoverable, and which also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription is cancelled. \\\n * **CustomizedRecoverable**: Denotes a vault state in which deletion is recoverable without the possibility for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability of the deleted entity during the retention interval and while the subscription is still available. \\\n * **CustomizedRecoverable+ProtectedSubscription**: Denotes a vault and subscription state in which deletion is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled.\n */\nexport type DeletionRecoveryLevel = string;\n\n/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */\nexport enum KnownJsonWebKeyCurveName {\n /** The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. */\n P256 = \"P-256\",\n /** The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. */\n P384 = \"P-384\",\n /** The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. */\n P521 = \"P-521\",\n /** The SECG SECP256K1 elliptic curve. */\n P256K = \"P-256K\"\n}\n\n/**\n * Defines values for JsonWebKeyCurveName. \\\n * {@link KnownJsonWebKeyCurveName} can be used interchangeably with JsonWebKeyCurveName,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **P-256**: The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. \\\n * **P-384**: The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. \\\n * **P-521**: The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. \\\n * **P-256K**: The SECG SECP256K1 elliptic curve.\n */\nexport type JsonWebKeyCurveName = string;\n\n/** Known values of {@link JsonWebKeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeyEncryptionAlgorithm {\n RSAOaep = \"RSA-OAEP\",\n RSAOaep256 = \"RSA-OAEP-256\",\n RSA15 = \"RSA1_5\",\n A128GCM = \"A128GCM\",\n A192GCM = \"A192GCM\",\n A256GCM = \"A256GCM\",\n A128KW = \"A128KW\",\n A192KW = \"A192KW\",\n A256KW = \"A256KW\",\n A128CBC = \"A128CBC\",\n A192CBC = \"A192CBC\",\n A256CBC = \"A256CBC\",\n A128Cbcpad = \"A128CBCPAD\",\n A192Cbcpad = \"A192CBCPAD\",\n A256Cbcpad = \"A256CBCPAD\"\n}\n\n/**\n * Defines values for JsonWebKeyEncryptionAlgorithm. \\\n * {@link KnownJsonWebKeyEncryptionAlgorithm} can be used interchangeably with JsonWebKeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **RSA-OAEP** \\\n * **RSA-OAEP-256** \\\n * **RSA1_5** \\\n * **A128GCM** \\\n * **A192GCM** \\\n * **A256GCM** \\\n * **A128KW** \\\n * **A192KW** \\\n * **A256KW** \\\n * **A128CBC** \\\n * **A192CBC** \\\n * **A256CBC** \\\n * **A128CBCPAD** \\\n * **A192CBCPAD** \\\n * **A256CBCPAD**\n */\nexport type JsonWebKeyEncryptionAlgorithm = string;\n\n/** Known values of {@link JsonWebKeySignatureAlgorithm} that the service accepts. */\nexport enum KnownJsonWebKeySignatureAlgorithm {\n /** RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n PS256 = \"PS256\",\n /** RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n PS384 = \"PS384\",\n /** RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n PS512 = \"PS512\",\n /** RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n RS256 = \"RS256\",\n /** RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n RS384 = \"RS384\",\n /** RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n RS512 = \"RS512\",\n /** Reserved */\n Rsnull = \"RSNULL\",\n /** ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. */\n ES256 = \"ES256\",\n /** ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 */\n ES384 = \"ES384\",\n /** ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 */\n ES512 = \"ES512\",\n /** ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 */\n ES256K = \"ES256K\"\n}\n\n/**\n * Defines values for JsonWebKeySignatureAlgorithm. \\\n * {@link KnownJsonWebKeySignatureAlgorithm} can be used interchangeably with JsonWebKeySignatureAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **PS256**: RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS384**: RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **PS512**: RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS256**: RSASSA-PKCS1-v1_5 using SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS384**: RSASSA-PKCS1-v1_5 using SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RS512**: RSASSA-PKCS1-v1_5 using SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **RSNULL**: Reserved \\\n * **ES256**: ECDSA using P-256 and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518. \\\n * **ES384**: ECDSA using P-384 and SHA-384, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES512**: ECDSA using P-521 and SHA-512, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518 \\\n * **ES256K**: ECDSA using P-256K and SHA-256, as described in https:\\/\\/tools.ietf.org\\/html\\/rfc7518\n */\nexport type JsonWebKeySignatureAlgorithm = string;\n\n/** Known values of {@link KeyEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyEncryptionAlgorithm {\n CKMRSAAESKEYWrap = \"CKM_RSA_AES_KEY_WRAP\",\n RSAAESKEYWrap256 = \"RSA_AES_KEY_WRAP_256\",\n RSAAESKEYWrap384 = \"RSA_AES_KEY_WRAP_384\"\n}\n\n/**\n * Defines values for KeyEncryptionAlgorithm. \\\n * {@link KnownKeyEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyEncryptionAlgorithm = string;\n/** Defines values for ActionType. */\nexport type ActionType = \"Rotate\" | \"Notify\";\n\n/** Optional parameters. */\nexport interface CreateKeyOptionalParams extends coreClient.OperationOptions {\n /** The key size in bits. For example: 2048, 3072, or 4096 for RSA. */\n keySize?: number;\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n /** Array of JsonWebKeyOperation */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Elliptic curve name. For valid values, see JsonWebKeyCurveName. */\n curve?: JsonWebKeyCurveName;\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the createKey operation. */\nexport type CreateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface RotateKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the rotateKey operation. */\nexport type RotateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface ImportKeyOptionalParams extends coreClient.OperationOptions {\n /** Whether to import as a hardware key (HSM) or software key. */\n hsm?: boolean;\n /** The key management attributes. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the importKey operation. */\nexport type ImportKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface DeleteKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the deleteKey operation. */\nexport type DeleteKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface UpdateKeyOptionalParams extends coreClient.OperationOptions {\n /** Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. */\n keyOps?: JsonWebKeyOperation[];\n /** The attributes of a key managed by the key vault service. */\n keyAttributes?: KeyAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** The policy rules under which the key can be exported. */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/** Contains response data for the updateKey operation. */\nexport type UpdateKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKey operation. */\nexport type GetKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersions operation. */\nexport type GetKeyVersionsResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeys operation. */\nexport type GetKeysResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface BackupKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the backupKey operation. */\nexport type BackupKeyResponse = BackupKeyResult;\n\n/** Optional parameters. */\nexport interface RestoreKeyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the restoreKey operation. */\nexport type RestoreKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface EncryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the encrypt operation. */\nexport type EncryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface DecryptOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the decrypt operation. */\nexport type DecryptResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface SignOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the sign operation. */\nexport type SignResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface VerifyOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the verify operation. */\nexport type VerifyResponse = KeyVerifyResult;\n\n/** Optional parameters. */\nexport interface WrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the wrapKey operation. */\nexport type WrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface UnwrapKeyOptionalParams extends coreClient.OperationOptions {\n /** Cryptographically random, non-repeating initialization vector for symmetric algorithms. */\n iv?: Uint8Array;\n /** Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. */\n additionalAuthenticatedData?: Uint8Array;\n /** The tag to authenticate when performing decryption with an authenticated algorithm. */\n authenticationTag?: Uint8Array;\n}\n\n/** Contains response data for the unwrapKey operation. */\nexport type UnwrapKeyResponse = KeyOperationResult;\n\n/** Optional parameters. */\nexport interface ReleaseOptionalParams extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n /** The encryption algorithm to use to protected the exported key material */\n enc?: KeyEncryptionAlgorithm;\n}\n\n/** Contains response data for the release operation. */\nexport type ReleaseResponse = KeyReleaseResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeys operation. */\nexport type GetDeletedKeysResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getDeletedKey operation. */\nexport type GetDeletedKeyResponse = DeletedKeyBundle;\n\n/** Optional parameters. */\nexport interface PurgeDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface RecoverDeletedKeyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the recoverDeletedKey operation. */\nexport type RecoverDeletedKeyResponse = KeyBundle;\n\n/** Optional parameters. */\nexport interface GetKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getKeyRotationPolicy operation. */\nexport type GetKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface UpdateKeyRotationPolicyOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the updateKeyRotationPolicy operation. */\nexport type UpdateKeyRotationPolicyResponse = KeyRotationPolicy;\n\n/** Optional parameters. */\nexport interface GetRandomBytesOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getRandomBytes operation. */\nexport type GetRandomBytesResponse = RandomBytes;\n\n/** Optional parameters. */\nexport interface GetKeyVersionsNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeyVersionsNext operation. */\nexport type GetKeyVersionsNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetKeysNextOptionalParams extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getKeysNext operation. */\nexport type GetKeysNextResponse = KeyListResult;\n\n/** Optional parameters. */\nexport interface GetDeletedKeysNextOptionalParams\n extends coreClient.OperationOptions {\n /** Maximum number of results to return in a page. If not specified the service will return up to 25 results. */\n maxresults?: number;\n}\n\n/** Contains response data for the getDeletedKeysNext operation. */\nexport type GetDeletedKeysNextResponse = DeletedKeyListResult;\n\n/** Optional parameters. */\nexport interface KeyVaultClientOptionalParams\n extends coreHttpCompat.ExtendedServiceClientOptions {\n /** Overrides client endpoint. */\n endpoint?: string;\n}\n","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nexport const KeyCreateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyCreateParameters\",\n modelProperties: {\n kty: {\n serializedName: \"kty\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n publicExponent: {\n serializedName: \"public_exponent\",\n type: {\n name: \"Number\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const Attributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Attributes\",\n modelProperties: {\n enabled: {\n serializedName: \"enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n notBefore: {\n serializedName: \"nbf\",\n type: {\n name: \"UnixTime\"\n }\n },\n expires: {\n serializedName: \"exp\",\n type: {\n name: \"UnixTime\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const KeyReleasePolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\",\n modelProperties: {\n contentType: {\n defaultValue: \"application/json; charset=utf-8\",\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n },\n immutable: {\n serializedName: \"immutable\",\n type: {\n name: \"Boolean\"\n }\n },\n encodedPolicy: {\n serializedName: \"data\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyBundle\",\n modelProperties: {\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const JsonWebKey: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n kty: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n n: {\n serializedName: \"n\",\n type: {\n name: \"Base64Url\"\n }\n },\n e: {\n serializedName: \"e\",\n type: {\n name: \"Base64Url\"\n }\n },\n d: {\n serializedName: \"d\",\n type: {\n name: \"Base64Url\"\n }\n },\n dp: {\n serializedName: \"dp\",\n type: {\n name: \"Base64Url\"\n }\n },\n dq: {\n serializedName: \"dq\",\n type: {\n name: \"Base64Url\"\n }\n },\n qi: {\n serializedName: \"qi\",\n type: {\n name: \"Base64Url\"\n }\n },\n p: {\n serializedName: \"p\",\n type: {\n name: \"Base64Url\"\n }\n },\n q: {\n serializedName: \"q\",\n type: {\n name: \"Base64Url\"\n }\n },\n k: {\n serializedName: \"k\",\n type: {\n name: \"Base64Url\"\n }\n },\n t: {\n serializedName: \"key_hsm\",\n type: {\n name: \"Base64Url\"\n }\n },\n crv: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n },\n x: {\n serializedName: \"x\",\n type: {\n name: \"Base64Url\"\n }\n },\n y: {\n serializedName: \"y\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVaultError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const ErrorModel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorModel\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n innerError: {\n serializedName: \"innererror\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n }\n }\n }\n};\n\nexport const KeyImportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyImportParameters\",\n modelProperties: {\n hsm: {\n serializedName: \"Hsm\",\n type: {\n name: \"Boolean\"\n }\n },\n key: {\n serializedName: \"key\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyUpdateParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyUpdateParameters\",\n modelProperties: {\n keyOps: {\n serializedName: \"key_ops\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n keyAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n releasePolicy: {\n serializedName: \"release_policy\",\n type: {\n name: \"Composite\",\n className: \"KeyReleasePolicy\"\n }\n }\n }\n }\n};\n\nexport const KeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"KeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyItem\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n managed: {\n serializedName: \"managed\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const BackupKeyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BackupKeyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyRestoreParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRestoreParameters\",\n modelProperties: {\n keyBundleBackup: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationsParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationsParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyOperationResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyOperationResult\",\n modelProperties: {\n kid: {\n serializedName: \"kid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n result: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n iv: {\n serializedName: \"iv\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n authenticationTag: {\n serializedName: \"tag\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n additionalAuthenticatedData: {\n serializedName: \"aad\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeySignParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeySignParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyParameters\",\n modelProperties: {\n algorithm: {\n serializedName: \"alg\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n digest: {\n serializedName: \"digest\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n },\n signature: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyVerifyResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVerifyResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseParameters\",\n modelProperties: {\n targetAttestationToken: {\n constraints: {\n MinLength: 1\n },\n serializedName: \"target\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyReleaseResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyReleaseResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\"\n }\n }\n }\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicy: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicy\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n lifetimeActions: {\n serializedName: \"lifetimeActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\"\n }\n }\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActions: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActions\",\n modelProperties: {\n trigger: {\n serializedName: \"trigger\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\"\n }\n },\n action: {\n serializedName: \"action\",\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsTrigger: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsTrigger\",\n modelProperties: {\n timeAfterCreate: {\n serializedName: \"timeAfterCreate\",\n type: {\n name: \"String\"\n }\n },\n timeBeforeExpiry: {\n serializedName: \"timeBeforeExpiry\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const LifetimeActionsType: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeActionsType\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Rotate\", \"Notify\"]\n }\n }\n }\n }\n};\n\nexport const KeyRotationPolicyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyRotationPolicyAttributes\",\n modelProperties: {\n expiryTime: {\n serializedName: \"expiryTime\",\n type: {\n name: \"String\"\n }\n },\n created: {\n serializedName: \"created\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n updated: {\n serializedName: \"updated\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const GetRandomBytesRequest: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GetRandomBytesRequest\",\n modelProperties: {\n count: {\n constraints: {\n InclusiveMaximum: 128,\n InclusiveMinimum: 1\n },\n serializedName: \"count\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const RandomBytes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RandomBytes\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const KeyProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyProperties\",\n modelProperties: {\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n keyType: {\n serializedName: \"kty\",\n type: {\n name: \"String\"\n }\n },\n keySize: {\n serializedName: \"key_size\",\n type: {\n name: \"Number\"\n }\n },\n reuseKey: {\n serializedName: \"reuse_key\",\n type: {\n name: \"Boolean\"\n }\n },\n curve: {\n serializedName: \"crv\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyExportParameters: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyExportParameters\",\n modelProperties: {\n wrappingKey: {\n serializedName: \"wrappingKey\",\n type: {\n name: \"Composite\",\n className: \"JsonWebKey\"\n }\n },\n wrappingKid: {\n serializedName: \"wrappingKid\",\n type: {\n name: \"String\"\n }\n },\n enc: {\n serializedName: \"enc\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyAttributes: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyAttributes\",\n modelProperties: {\n ...Attributes.type.modelProperties,\n recoverableDays: {\n serializedName: \"recoverableDays\",\n readOnly: true,\n type: {\n name: \"Number\"\n }\n },\n recoveryLevel: {\n serializedName: \"recoveryLevel\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n exportable: {\n serializedName: \"exportable\",\n type: {\n name: \"Boolean\"\n }\n },\n hsmPlatform: {\n serializedName: \"hsmPlatform\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyBundle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyBundle\",\n modelProperties: {\n ...KeyBundle.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n\nexport const DeletedKeyItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedKeyItem\",\n modelProperties: {\n ...KeyItem.type.modelProperties,\n recoveryId: {\n serializedName: \"recoveryId\",\n type: {\n name: \"String\"\n }\n },\n scheduledPurgeDate: {\n serializedName: \"scheduledPurgeDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n },\n deletedDate: {\n serializedName: \"deletedDate\",\n readOnly: true,\n type: {\n name: \"UnixTime\"\n }\n }\n }\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter\n} from \"@azure/core-client\";\nimport {\n KeyCreateParameters as KeyCreateParametersMapper,\n KeyImportParameters as KeyImportParametersMapper,\n KeyUpdateParameters as KeyUpdateParametersMapper,\n KeyRestoreParameters as KeyRestoreParametersMapper,\n KeyOperationsParameters as KeyOperationsParametersMapper,\n KeySignParameters as KeySignParametersMapper,\n KeyVerifyParameters as KeyVerifyParametersMapper,\n KeyReleaseParameters as KeyReleaseParametersMapper,\n KeyRotationPolicy as KeyRotationPolicyMapper,\n GetRandomBytesRequest as GetRandomBytesRequestMapper\n} from \"../models/mappers\";\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const kty: OperationParameter = {\n parameterPath: \"kty\",\n mapper: KeyCreateParametersMapper\n};\n\nexport const keySize: OperationParameter = {\n parameterPath: [\"options\", \"keySize\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const publicExponent: OperationParameter = {\n parameterPath: [\"options\", \"publicExponent\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyOps: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const keyAttributes: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const tags: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const curve: OperationParameter = {\n parameterPath: [\"options\", \"curve\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const releasePolicy: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyCreateParametersMapper\n};\n\nexport const vaultBaseUrl: OperationURLParameter = {\n parameterPath: \"vaultBaseUrl\",\n mapper: {\n serializedName: \"vaultBaseUrl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n\nexport const keyName: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[0-9a-zA-Z-]+$\")\n },\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const apiVersion: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const hsm: OperationParameter = {\n parameterPath: [\"options\", \"hsm\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const key: OperationParameter = {\n parameterPath: \"key\",\n mapper: KeyImportParametersMapper\n};\n\nexport const keyAttributes1: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const tags1: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const releasePolicy1: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyImportParametersMapper\n};\n\nexport const keyName1: OperationURLParameter = {\n parameterPath: \"keyName\",\n mapper: {\n serializedName: \"key-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const keyOps1: OperationParameter = {\n parameterPath: [\"options\", \"keyOps\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyAttributes2: OperationParameter = {\n parameterPath: [\"options\", \"keyAttributes\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const tags2: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const releasePolicy2: OperationParameter = {\n parameterPath: [\"options\", \"releasePolicy\"],\n mapper: KeyUpdateParametersMapper\n};\n\nexport const keyVersion: OperationURLParameter = {\n parameterPath: \"keyVersion\",\n mapper: {\n serializedName: \"key-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const maxresults: OperationQueryParameter = {\n parameterPath: [\"options\", \"maxresults\"],\n mapper: {\n constraints: {\n InclusiveMaximum: 25,\n InclusiveMinimum: 1\n },\n serializedName: \"maxresults\",\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const keyBundleBackup: OperationParameter = {\n parameterPath: \"keyBundleBackup\",\n mapper: KeyRestoreParametersMapper\n};\n\nexport const algorithm: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const value: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeyOperationsParametersMapper\n};\n\nexport const iv: OperationParameter = {\n parameterPath: [\"options\", \"iv\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const additionalAuthenticatedData: OperationParameter = {\n parameterPath: [\"options\", \"additionalAuthenticatedData\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const authenticationTag: OperationParameter = {\n parameterPath: [\"options\", \"authenticationTag\"],\n mapper: KeyOperationsParametersMapper\n};\n\nexport const algorithm1: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeySignParametersMapper\n};\n\nexport const value1: OperationParameter = {\n parameterPath: \"value\",\n mapper: KeySignParametersMapper\n};\n\nexport const algorithm2: OperationParameter = {\n parameterPath: \"algorithm\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const digest: OperationParameter = {\n parameterPath: \"digest\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const signature: OperationParameter = {\n parameterPath: \"signature\",\n mapper: KeyVerifyParametersMapper\n};\n\nexport const targetAttestationToken: OperationParameter = {\n parameterPath: \"targetAttestationToken\",\n mapper: KeyReleaseParametersMapper\n};\n\nexport const nonce: OperationParameter = {\n parameterPath: [\"options\", \"nonce\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const enc: OperationParameter = {\n parameterPath: [\"options\", \"enc\"],\n mapper: KeyReleaseParametersMapper\n};\n\nexport const keyRotationPolicy: OperationParameter = {\n parameterPath: \"keyRotationPolicy\",\n mapper: KeyRotationPolicyMapper\n};\n\nexport const count: OperationParameter = {\n parameterPath: \"count\",\n mapper: GetRandomBytesRequestMapper\n};\n\nexport const nextLink: OperationURLParameter = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport {\n ApiVersion75,\n KeyVaultClientOptionalParams,\n JsonWebKeyType,\n CreateKeyOptionalParams,\n CreateKeyResponse,\n RotateKeyOptionalParams,\n RotateKeyResponse,\n JsonWebKey,\n ImportKeyOptionalParams,\n ImportKeyResponse,\n DeleteKeyOptionalParams,\n DeleteKeyResponse,\n UpdateKeyOptionalParams,\n UpdateKeyResponse,\n GetKeyOptionalParams,\n GetKeyResponse,\n GetKeyVersionsOptionalParams,\n GetKeyVersionsResponse,\n GetKeysOptionalParams,\n GetKeysResponse,\n BackupKeyOptionalParams,\n BackupKeyResponse,\n RestoreKeyOptionalParams,\n RestoreKeyResponse,\n JsonWebKeyEncryptionAlgorithm,\n EncryptOptionalParams,\n EncryptResponse,\n DecryptOptionalParams,\n DecryptResponse,\n JsonWebKeySignatureAlgorithm,\n SignOptionalParams,\n SignResponse,\n VerifyOptionalParams,\n VerifyResponse,\n WrapKeyOptionalParams,\n WrapKeyResponse,\n UnwrapKeyOptionalParams,\n UnwrapKeyResponse,\n ReleaseOptionalParams,\n ReleaseResponse,\n GetDeletedKeysOptionalParams,\n GetDeletedKeysResponse,\n GetDeletedKeyOptionalParams,\n GetDeletedKeyResponse,\n PurgeDeletedKeyOptionalParams,\n RecoverDeletedKeyOptionalParams,\n RecoverDeletedKeyResponse,\n GetKeyRotationPolicyOptionalParams,\n GetKeyRotationPolicyResponse,\n KeyRotationPolicy,\n UpdateKeyRotationPolicyOptionalParams,\n UpdateKeyRotationPolicyResponse,\n GetRandomBytesOptionalParams,\n GetRandomBytesResponse,\n GetKeyVersionsNextOptionalParams,\n GetKeyVersionsNextResponse,\n GetKeysNextOptionalParams,\n GetKeysNextResponse,\n GetDeletedKeysNextOptionalParams,\n GetDeletedKeysNextResponse\n} from \"./models\";\n\nexport class KeyVaultClient extends coreHttpCompat.ExtendedServiceClient {\n apiVersion: ApiVersion75;\n\n /**\n * Initializes a new instance of the KeyVaultClient class.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(\n apiVersion: ApiVersion75,\n options?: KeyVaultClientOptionalParams\n ) {\n if (apiVersion === undefined) {\n throw new Error(\"'apiVersion' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: KeyVaultClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-keyvault-keys/4.8.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{vaultBaseUrl}\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n // Parameter assignments\n this.apiVersion = apiVersion;\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name for the new key. The system will generate the version name for the new key.\n * The value you provide may be copied globally for the purpose of running the service. The value\n * provided should not include personally identifiable or sensitive information.\n * @param kty The type of key to create. For valid values, see JsonWebKeyType.\n * @param options The options parameters.\n */\n createKey(\n vaultBaseUrl: string,\n keyName: string,\n kty: JsonWebKeyType,\n options?: CreateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, kty, options },\n createKeyOperationSpec\n );\n }\n\n /**\n * The operation will rotate the key based on the key policy. It requires the keys/rotate permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to be rotated. The system will generate a new version in the\n * specified key.\n * @param options The options parameters.\n */\n rotateKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RotateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n rotateKeyOperationSpec\n );\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the named\n * key already exists, Azure Key Vault creates a new version of the key. This operation requires the\n * keys/import permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName Name for the imported key. The value you provide may be copied globally for the\n * purpose of running the service. The value provided should not include personally identifiable or\n * sensitive information.\n * @param key The Json web key\n * @param options The options parameters.\n */\n importKey(\n vaultBaseUrl: string,\n keyName: string,\n key: JsonWebKey,\n options?: ImportKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, key, options },\n importKeyOperationSpec\n );\n }\n\n /**\n * The delete key operation cannot be used to remove individual versions of a key. This operation\n * removes the cryptographic material associated with the key, which means the key is not usable for\n * Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to delete.\n * @param options The options parameters.\n */\n deleteKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: DeleteKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n deleteKeyOperationSpec\n );\n }\n\n /**\n * In order to perform this operation, the key must already exist in the Key Vault. Note: The\n * cryptographic material of a key itself cannot be changed. This operation requires the keys/update\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of key to update.\n * @param keyVersion The version of the key to update.\n * @param options The options parameters.\n */\n updateKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: UpdateKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n updateKeyOperationSpec\n );\n }\n\n /**\n * The get key operation is applicable to all key types. If the requested key is symmetric, then no key\n * material is released in the response. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key. This URI\n * fragment is optional. If not specified, the latest version of the key is returned.\n * @param options The options parameters.\n */\n getKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n options?: GetKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, options },\n getKeyOperationSpec\n );\n }\n\n /**\n * The full key identifier, attributes, and tags are provided in the response. This operation requires\n * the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getKeyVersions(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyVersionsOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyVersionsOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a stored key. The LIST operation is applicable to all key types, however only the base key\n * identifier, attributes, and tags are provided in the response. Individual versions of a key are not\n * listed in the response. This operation requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getKeys(\n vaultBaseUrl: string,\n options?: GetKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getKeysOperationSpec\n );\n }\n\n /**\n * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this\n * operation does NOT return key material in a form that can be used outside the Azure Key Vault\n * system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault\n * itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault\n * instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP\n * operation may be used to export, in protected form, any key type from Azure Key Vault. Individual\n * versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical\n * boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another\n * geographical area. For example, a backup from the US geographical area cannot be restored in an EU\n * geographical area. This operation requires the key/backup permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n backupKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: BackupKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n backupKeyOperationSpec\n );\n }\n\n /**\n * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier,\n * attributes and access control policies. The RESTORE operation may be used to import a previously\n * backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety\n * with the same key name as it had when it was backed up. If the key name is not available in the\n * target Key Vault, the RESTORE operation will be rejected. While the key name is retained during\n * restore, the final key identifier will change if the key is restored to a different vault. Restore\n * will restore all versions and preserve version identifiers. The RESTORE operation is subject to\n * security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as\n * the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation\n * requires the keys/restore permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyBundleBackup The backup blob associated with a key bundle.\n * @param options The options parameters.\n */\n restoreKey(\n vaultBaseUrl: string,\n keyBundleBackup: Uint8Array,\n options?: RestoreKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyBundleBackup, options },\n restoreKeyOperationSpec\n );\n }\n\n /**\n * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored\n * in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size\n * of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT\n * operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection\n * with an asymmetric key can be performed using public portion of the key. This operation is supported\n * for asymmetric keys as a convenience for callers that have a key-reference but do not have access to\n * the public key material. This operation requires the keys/encrypt permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n encrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: EncryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n encryptOperationSpec\n );\n }\n\n /**\n * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and\n * specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of\n * data may be decrypted, the size of this block is dependent on the target key and the algorithm to be\n * used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since\n * it uses the private portion of the key. This operation requires the keys/decrypt permission.\n * Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity\n * of the ciphertext using an HMAC, for example. See\n * https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n decrypt(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: DecryptOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n decryptOperationSpec\n );\n }\n\n /**\n * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since\n * this operation uses the private portion of the key. This operation requires the keys/sign\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm identifier. For more information on possible\n * algorithm types, see JsonWebKeySignatureAlgorithm.\n * @param value\n * @param options The options parameters.\n */\n sign(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n value: Uint8Array,\n options?: SignOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n signOperationSpec\n );\n }\n\n /**\n * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not\n * strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be\n * performed using the public portion of the key but this operation is supported as a convenience for\n * callers that only have a key-reference and not the public portion of the key. This operation\n * requires the keys/verify permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm The signing/verification algorithm. For more information on possible algorithm\n * types, see JsonWebKeySignatureAlgorithm.\n * @param digest The digest used for signing.\n * @param signature The signature to be verified.\n * @param options The options parameters.\n */\n verify(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeySignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n {\n vaultBaseUrl,\n keyName,\n keyVersion,\n algorithm,\n digest,\n signature,\n options\n },\n verifyOperationSpec\n );\n }\n\n /**\n * The WRAP operation supports encryption of a symmetric key using a key encryption key that has\n * previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for\n * symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed\n * using the public portion of the key. This operation is supported for asymmetric keys as a\n * convenience for callers that have a key-reference but do not have access to the public key material.\n * This operation requires the keys/wrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n wrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: WrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n wrapKeyOperationSpec\n );\n }\n\n /**\n * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key.\n * This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and\n * symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This\n * operation requires the keys/unwrapKey permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param keyVersion The version of the key.\n * @param algorithm algorithm identifier\n * @param value\n * @param options The options parameters.\n */\n unwrapKey(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n algorithm: JsonWebKeyEncryptionAlgorithm,\n value: Uint8Array,\n options?: UnwrapKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, algorithm, value, options },\n unwrapKeyOperationSpec\n );\n }\n\n /**\n * The release key operation is applicable to all key types. The target key must be marked exportable.\n * This operation requires the keys/release permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key to get.\n * @param keyVersion Adding the version parameter retrieves a specific version of a key.\n * @param targetAttestationToken The attestation assertion for the target of the key release.\n * @param options The options parameters.\n */\n release(\n vaultBaseUrl: string,\n keyName: string,\n keyVersion: string,\n targetAttestationToken: string,\n options?: ReleaseOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyVersion, targetAttestationToken, options },\n releaseOperationSpec\n );\n }\n\n /**\n * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public\n * part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys\n * operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on\n * any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation\n * requires the keys/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getDeletedKeys(\n vaultBaseUrl: string,\n options?: GetDeletedKeysOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, options },\n getDeletedKeysOperationSpec\n );\n }\n\n /**\n * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can\n * be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This\n * operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param options The options parameters.\n */\n getDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation\n * can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault.\n * This operation requires the keys/purge permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key\n * @param options The options parameters.\n */\n purgeDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: PurgeDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n purgeDeletedKeyOperationSpec\n );\n }\n\n /**\n * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It\n * recovers the deleted key back to its latest version under /keys. An attempt to recover an\n * non-deleted key will return an error. Consider this the inverse of the delete operation on\n * soft-delete enabled vaults. This operation requires the keys/recover permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the deleted key.\n * @param options The options parameters.\n */\n recoverDeletedKey(\n vaultBaseUrl: string,\n keyName: string,\n options?: RecoverDeletedKeyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n recoverDeletedKeyOperationSpec\n );\n }\n\n /**\n * The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key\n * vault. This operation requires the keys/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in a given key vault.\n * @param options The options parameters.\n */\n getKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n options?: GetKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, options },\n getKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Set specified members in the key policy. Leave others as undefined. This operation requires the\n * keys/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key in the given vault.\n * @param keyRotationPolicy The policy for the key.\n * @param options The options parameters.\n */\n updateKeyRotationPolicy(\n vaultBaseUrl: string,\n keyName: string,\n keyRotationPolicy: KeyRotationPolicy,\n options?: UpdateKeyRotationPolicyOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, keyRotationPolicy, options },\n updateKeyRotationPolicyOperationSpec\n );\n }\n\n /**\n * Get the requested number of bytes containing random values from a managed HSM.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param count The requested number of random bytes.\n * @param options The options parameters.\n */\n getRandomBytes(\n vaultBaseUrl: string,\n count: number,\n options?: GetRandomBytesOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, count, options },\n getRandomBytesOperationSpec\n );\n }\n\n /**\n * GetKeyVersionsNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param keyName The name of the key.\n * @param nextLink The nextLink from the previous successful call to the GetKeyVersions method.\n * @param options The options parameters.\n */\n getKeyVersionsNext(\n vaultBaseUrl: string,\n keyName: string,\n nextLink: string,\n options?: GetKeyVersionsNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, keyName, nextLink, options },\n getKeyVersionsNextOperationSpec\n );\n }\n\n /**\n * GetKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetKeys method.\n * @param options The options parameters.\n */\n getKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getKeysNextOperationSpec\n );\n }\n\n /**\n * GetDeletedKeysNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param nextLink The nextLink from the previous successful call to the GetDeletedKeys method.\n * @param options The options parameters.\n */\n getDeletedKeysNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetDeletedKeysNextOptionalParams\n ): Promise {\n return this.sendOperationRequest(\n { vaultBaseUrl, nextLink, options },\n getDeletedKeysNextOperationSpec\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst createKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/create\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n kty: [\"kty\"],\n keySize: [\"options\", \"keySize\"],\n publicExponent: [\"options\", \"publicExponent\"],\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n curve: [\"options\", \"curve\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyCreateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst rotateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst importKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n hsm: [\"options\", \"hsm\"],\n key: [\"key\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyImportParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst deleteKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n keyOps: [\"options\", \"keyOps\"],\n keyAttributes: [\"options\", \"keyAttributes\"],\n tags: [\"options\", \"tags\"],\n releasePolicy: [\"options\", \"releasePolicy\"]\n },\n mapper: { ...Mappers.KeyUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyVersionsOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/versions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/keys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst backupKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/backup\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.BackupKeyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst restoreKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/restore\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { keyBundleBackup: [\"keyBundleBackup\"] },\n mapper: { ...Mappers.KeyRestoreParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst encryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/encrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decryptOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/decrypt\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst signOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/sign\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { algorithm: [\"algorithm\"], value: [\"value\"] },\n mapper: { ...Mappers.KeySignParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst verifyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/verify\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyVerifyResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n digest: [\"digest\"],\n signature: [\"signature\"]\n },\n mapper: { ...Mappers.KeyVerifyParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst wrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/wrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst unwrapKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/unwrapkey\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyOperationResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n algorithm: [\"algorithm\"],\n value: [\"value\"],\n iv: [\"options\", \"iv\"],\n additionalAuthenticatedData: [\"options\", \"additionalAuthenticatedData\"],\n authenticationTag: [\"options\", \"authenticationTag\"]\n },\n mapper: { ...Mappers.KeyOperationsParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst releaseOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/{key-version}/release\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyReleaseResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n targetAttestationToken: [\"targetAttestationToken\"],\n nonce: [\"options\", \"nonce\"],\n enc: [\"options\", \"enc\"]\n },\n mapper: { ...Mappers.KeyReleaseParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.keyVersion\n ],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getDeletedKeysOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst purgeDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst recoverDeletedKeyOperationSpec: coreClient.OperationSpec = {\n path: \"/deletedkeys/{key-name}/recover\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateKeyRotationPolicyOperationSpec: coreClient.OperationSpec = {\n path: \"/keys/{key-name}/rotationpolicy\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyRotationPolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.keyRotationPolicy,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.keyName1],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getRandomBytesOperationSpec: coreClient.OperationSpec = {\n path: \"/rng\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.RandomBytes\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { count: [\"count\"] },\n mapper: { ...Mappers.GetRandomBytesRequest, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getKeyVersionsNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.keyName1,\n Parameters.nextLink\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedKeysNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedKeyListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion, Parameters.maxresults],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const SDK_VERSION: string = \"4.8.0\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Parameters parsed out of the WWW-Authenticate header value by the parseWWWAuthenticate function.\n */\nexport interface WWWAuthenticate {\n /**\n * The authorization parameter, if present.\n */\n authorization?: string;\n\n /**\n * The authorization_url parameter, if present.\n */\n authorization_url?: string;\n\n /**\n * The resource parameter, if present.\n */\n resource?: string;\n\n /**\n * The scope parameter, if present.\n */\n scope?: string;\n\n /**\n * The tenantId parameter, if present.\n */\n tenantId?: string;\n}\n\nconst validWWWAuthenticateProperties: readonly (keyof WWWAuthenticate)[] = [\n \"authorization\",\n \"authorization_url\",\n \"resource\",\n \"scope\",\n \"tenantId\",\n] as const;\n\n/**\n * Parses an WWW-Authenticate response header.\n * This transforms a string value like:\n * `Bearer authorization=\"https://some.url/tenantId\", resource=\"https://some.url\"`\n * into an object like:\n * `{ authorization: \"https://some.url/tenantId\", resource: \"https://some.url\" }`\n * @param headerValue - String value in the WWW-Authenticate header\n */\nexport function parseWWWAuthenticateHeader(headerValue: string): WWWAuthenticate {\n const pairDelimiter = /,? +/;\n const parsed = headerValue.split(pairDelimiter).reduce((kvPairs, p) => {\n if (p.match(/\\w=\"/)) {\n // 'sampleKey=\"sample_value\"' -> [sampleKey, \"sample_value\"] -> { sampleKey: sample_value }\n const [key, value] = p.split(\"=\");\n if (validWWWAuthenticateProperties.includes(key as keyof WWWAuthenticate)) {\n // The values will be wrapped in quotes, which need to be stripped out.\n return { ...kvPairs, [key]: value.slice(1, -1) };\n }\n }\n return kvPairs;\n }, {});\n\n // Finally, we pull the tenantId from the authorization header to support multi-tenant authentication.\n if (parsed.authorization) {\n try {\n const tenantId = new URL(parsed.authorization).pathname.substring(1);\n if (tenantId) {\n parsed.tenantId = tenantId;\n }\n } catch (_) {\n throw new Error(`The challenge authorization URI '${parsed.authorization}' is invalid.`);\n }\n }\n\n return parsed;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AuthorizeRequestOnChallengeOptions,\n AuthorizeRequestOptions,\n ChallengeCallbacks,\n PipelineRequest,\n RequestBodyType,\n} from \"@azure/core-rest-pipeline\";\nimport { WWWAuthenticate, parseWWWAuthenticateHeader } from \"./parseWWWAuthenticate\";\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * @internal\n * Holds the state of Challenge Auth.\n * When making the first request we force Key Vault to begin a challenge\n * by clearing out the request body and storing it locally.\n *\n * Later on, the authorizeRequestOnChallenge callback will process the\n * challenge and, if ready to resend the original request, reset the body\n * so that it may be sent again.\n *\n * Once a client has succeeded once, we can start skipping CAE.\n */\ntype ChallengeState =\n | {\n status: \"none\";\n }\n | {\n status: \"started\";\n originalBody?: RequestBodyType;\n }\n | {\n status: \"complete\";\n scopes: string[];\n };\n\n/**\n * Additional options for the challenge based authentication policy.\n */\nexport interface CreateChallengeCallbacksOptions {\n /**\n * Whether to disable verification that the challenge resource matches the Key Vault or Managed HSM domain.\n *\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\nfunction verifyChallengeResource(scope: string, request: PipelineRequest): void {\n let scopeAsUrl: URL;\n try {\n scopeAsUrl = new URL(scope);\n } catch (e) {\n throw new Error(`The challenge contains invalid scope '${scope}'`);\n }\n\n const requestUrl = new URL(request.url);\n\n if (!requestUrl.hostname.endsWith(`.${scopeAsUrl.hostname}`)) {\n throw new Error(\n `The challenge resource '${scopeAsUrl.hostname}' does not match the requested domain. Set disableChallengeResourceVerification to true in your client options to disable. See https://aka.ms/azsdk/blog/vault-uri for more information.`,\n );\n }\n}\n\n/**\n * Creates challenge callback handlers to manage CAE lifecycle in Azure Key Vault.\n *\n * Key Vault supports other authentication schemes, but we ensure challenge authentication\n * is used by first sending a copy of the request, without authorization or content.\n *\n * when the challenge is received, it will be authenticated and used to send the original\n * request with authorization.\n *\n * Following the first request of a client, follow-up requests will get the cached token\n * if possible.\n *\n */\nexport function createKeyVaultChallengeCallbacks(\n options: CreateChallengeCallbacksOptions = {},\n): ChallengeCallbacks {\n const { disableChallengeResourceVerification } = options;\n let challengeState: ChallengeState = { status: \"none\" };\n\n function requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout > 0 ? request.timeout : undefined,\n },\n tracingOptions: request.tracingOptions,\n };\n }\n\n async function authorizeRequest({\n request,\n getAccessToken,\n }: AuthorizeRequestOptions): Promise {\n const requestOptions: GetTokenOptions = requestToOptions(request);\n\n switch (challengeState.status) {\n case \"none\":\n challengeState = {\n status: \"started\",\n originalBody: request.body,\n };\n request.body = null;\n break;\n case \"started\":\n break; // Retry, we should not overwrite the original body\n case \"complete\": {\n const token = await getAccessToken(challengeState.scopes, requestOptions);\n if (token) {\n request.headers.set(\"authorization\", `Bearer ${token.token}`);\n }\n break;\n }\n }\n return Promise.resolve();\n }\n\n async function authorizeRequestOnChallenge({\n request,\n response,\n getAccessToken,\n }: AuthorizeRequestOnChallengeOptions): Promise {\n if (request.body === null && challengeState.status === \"started\") {\n // Reset the original body before doing anything else.\n // Note: If successful status will be \"complete\", otherwise \"none\" will\n // restart the process.\n request.body = challengeState.originalBody;\n }\n\n const getTokenOptions = requestToOptions(request);\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n throw new Error(\"Missing challenge.\");\n }\n const parsedChallenge: WWWAuthenticate = parseWWWAuthenticateHeader(challenge) || {};\n\n const scope = parsedChallenge.resource\n ? parsedChallenge.resource + \"/.default\"\n : parsedChallenge.scope;\n\n if (!scope) {\n throw new Error(\"Missing scope.\");\n }\n\n if (!disableChallengeResourceVerification) {\n verifyChallengeResource(scope, request);\n }\n\n const accessToken = await getAccessToken([scope], {\n ...getTokenOptions,\n tenantId: parsedChallenge.tenantId,\n });\n\n if (!accessToken) {\n return false;\n }\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n\n challengeState = {\n status: \"complete\",\n scopes: [scope],\n };\n\n return true;\n }\n\n return {\n authorizeRequest,\n authorizeRequestOnChallenge,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The parsed components of a Key Vault entity identifier.\n */\nexport interface KeyVaultEntityIdentifier {\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of key/secret/certificate. May be undefined.\n */\n version?: string;\n /**\n * The name of key/secret/certificate.\n */\n name: string;\n}\n\n/**\n * Parses a Key Vault identifier into its components.\n *\n * @param collection - The collection of the Key Vault identifier.\n * @param identifier - The Key Vault identifier to be parsed.\n */\nexport function parseKeyVaultIdentifier(\n collection: string,\n identifier: string | undefined,\n): KeyVaultEntityIdentifier {\n if (typeof collection !== \"string\" || !(collection = collection.trim())) {\n throw new Error(\"Invalid collection argument\");\n }\n\n if (typeof identifier !== \"string\" || !(identifier = identifier.trim())) {\n throw new Error(\"Invalid identifier argument\");\n }\n\n let baseUri;\n try {\n baseUri = new URL(identifier);\n } catch (e: any) {\n throw new Error(`Invalid ${collection} identifier: ${identifier}. Not a valid URI`);\n }\n\n // Path is of the form '/collection/name[/version]'\n const segments = (baseUri.pathname || \"\").split(\"/\");\n if (segments.length !== 3 && segments.length !== 4) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. Bad number of segments: ${segments.length}`,\n );\n }\n\n if (collection !== segments[1]) {\n throw new Error(\n `Invalid ${collection} identifier: ${identifier}. segment [1] should be \"${collection}\", found \"${segments[1]}\"`,\n );\n }\n\n const vaultUrl = `${baseUri.protocol}//${baseUri.host}`;\n const name = segments[2];\n const version = segments.length === 4 ? segments[3] : undefined;\n return {\n vaultUrl,\n name,\n version,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants\";\n\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.KeyVault\",\n packageName: \"@azure/keyvault-keys\",\n packageVersion: SDK_VERSION,\n});\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { parseKeyVaultIdentifier } from \"../../keyvault-common/src\";\n\n/**\n * Represents the segments that compose a Key Vault Key Id.\n */\nexport interface KeyVaultKeyIdentifier {\n /**\n * The complete representation of the Key Vault Key Id. For example:\n *\n * https://.vault.azure.net/keys//\n *\n */\n sourceId: string;\n\n /**\n * The URL of the Azure Key Vault instance to which the Key belongs.\n */\n vaultUrl: string;\n\n /**\n * The version of Key Vault Key. Might be undefined.\n */\n version?: string;\n\n /**\n * The name of the Key Vault Key.\n */\n name: string;\n}\n\n/**\n * Parses the given Key Vault Key Id. An example is:\n *\n * https://.vault.azure.net/keys//\n *\n * On parsing the above Id, this function returns:\n *```ts\n * {\n * sourceId: \"https://.vault.azure.net/keys//\",\n * vaultUrl: \"https://.vault.azure.net\",\n * version: \"\",\n * name: \"\"\n * }\n *```\n * @param id - The Id of the Key Vault Key.\n */\nexport function parseKeyVaultKeyIdentifier(id: string): KeyVaultKeyIdentifier {\n const urlParts = id.split(\"/\");\n const collection = urlParts[3];\n\n return {\n sourceId: id,\n ...parseKeyVaultIdentifier(collection, id),\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { ActionType } from \"./generated\";\nimport {\n DeletedKeyBundle,\n DeletedKeyItem,\n KeyRotationPolicy as GeneratedPolicy,\n KeyAttributes,\n KeyBundle,\n KeyItem,\n LifetimeActions,\n} from \"./generated/models\";\nimport { parseKeyVaultKeyIdentifier } from \"./identifier\";\nimport {\n DeletedKey,\n KeyProperties,\n KeyRotationPolicy,\n KeyRotationPolicyProperties,\n KeyVaultKey,\n} from \"./keysModels\";\n\n/**\n * @internal\n * Shapes the exposed {@link KeyVaultKey} based on either a received key bundle or deleted key bundle.\n */\nexport function getKeyFromKeyBundle(\n bundle: KeyBundle | DeletedKeyBundle,\n): KeyVaultKey | DeletedKey {\n const keyBundle = bundle as KeyBundle;\n const deletedKeyBundle = bundle as DeletedKeyBundle;\n\n const parsedId = parseKeyVaultKeyIdentifier(keyBundle.key!.kid!);\n\n const attributes: KeyAttributes = keyBundle.attributes || {};\n delete keyBundle.attributes;\n\n const resultObject: KeyVaultKey | DeletedKey = {\n key: keyBundle.key,\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n name: parsedId.name,\n keyOperations: keyBundle.key ? keyBundle.key.keyOps : undefined,\n keyType: keyBundle.key ? keyBundle.key.kty : undefined,\n properties: {\n tags: keyBundle.tags,\n\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n expiresOn: attributes.expires,\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n recoverableDays: attributes.recoverableDays,\n recoveryLevel: attributes.recoveryLevel,\n exportable: attributes.exportable,\n releasePolicy: keyBundle.releasePolicy,\n hsmPlatform: attributes.hsmPlatform,\n\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n name: parsedId.name,\n managed: keyBundle.managed,\n\n id: keyBundle.key ? keyBundle.key.kid : undefined,\n },\n };\n\n if (deletedKeyBundle.recoveryId) {\n (resultObject as any).properties.recoveryId = deletedKeyBundle.recoveryId;\n (resultObject as any).properties.scheduledPurgeDate = deletedKeyBundle.scheduledPurgeDate;\n (resultObject as any).properties.deletedOn = deletedKeyBundle.deletedDate;\n }\n\n return resultObject;\n}\n\n/**\n * @internal\n * Shapes the exposed {@link DeletedKey} based on a received KeyItem.\n */\nexport function getDeletedKeyFromDeletedKeyItem(keyItem: DeletedKeyItem): DeletedKey {\n const commonProperties = getKeyPropertiesFromKeyItem(keyItem);\n\n return {\n key: {\n kid: keyItem.kid,\n },\n id: keyItem.kid,\n name: commonProperties.name,\n properties: {\n ...commonProperties,\n recoveryId: keyItem.recoveryId,\n scheduledPurgeDate: keyItem.scheduledPurgeDate,\n deletedOn: keyItem.deletedDate,\n },\n };\n}\n\n/**\n * @internal\n * Shapes the exposed {@link KeyProperties} based on a received KeyItem.\n */\nexport function getKeyPropertiesFromKeyItem(keyItem: KeyItem): KeyProperties {\n const parsedId = parseKeyVaultKeyIdentifier(keyItem.kid!);\n const attributes = keyItem.attributes || {};\n\n const resultObject: KeyProperties = {\n createdOn: attributes.created,\n enabled: attributes?.enabled,\n expiresOn: attributes?.expires,\n id: keyItem.kid,\n managed: keyItem.managed,\n name: parsedId.name,\n notBefore: attributes?.notBefore,\n recoverableDays: attributes?.recoverableDays,\n recoveryLevel: attributes?.recoveryLevel,\n hsmPlatform: attributes?.hsmPlatform,\n tags: keyItem.tags,\n updatedOn: attributes.updated,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n };\n\n return resultObject;\n}\n\nconst actionTypeCaseInsensitiveMapping: Record = {\n rotate: \"Rotate\",\n notify: \"Notify\",\n};\n\nfunction getNormalizedActionType(caseInsensitiveActionType: string): ActionType {\n const result = actionTypeCaseInsensitiveMapping[caseInsensitiveActionType.toLowerCase()];\n if (result) {\n return result as ActionType;\n }\n\n throw new Error(`Unrecognized action type: ${caseInsensitiveActionType}`);\n}\n\n/**\n * @internal\n */\nexport const keyRotationTransformations = {\n propertiesToGenerated: function (\n parameters: KeyRotationPolicyProperties,\n ): Partial {\n const policy: GeneratedPolicy = {\n attributes: {\n expiryTime: parameters.expiresIn,\n },\n lifetimeActions: parameters.lifetimeActions?.map((action) => {\n const generatedAction: LifetimeActions = {\n action: { type: action.action },\n trigger: {},\n };\n\n if (action.timeAfterCreate) {\n generatedAction.trigger!.timeAfterCreate = action.timeAfterCreate;\n }\n\n if (action.timeBeforeExpiry) {\n generatedAction.trigger!.timeBeforeExpiry = action.timeBeforeExpiry;\n }\n\n return generatedAction;\n }),\n };\n return policy;\n },\n generatedToPublic(generated: GeneratedPolicy): KeyRotationPolicy {\n const policy: KeyRotationPolicy = {\n id: generated.id,\n createdOn: generated.attributes?.created,\n updatedOn: generated.attributes?.updated,\n expiresIn: generated.attributes?.expiryTime,\n lifetimeActions: generated.lifetimeActions?.map((action) => {\n return {\n action: getNormalizedActionType(action.action!.type!),\n timeAfterCreate: action.trigger?.timeAfterCreate,\n timeBeforeExpiry: action.trigger?.timeBeforeExpiry,\n };\n }),\n };\n return policy;\n },\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { delay } from \"@azure/core-util\";\nimport { Poller, PollOperation, PollOperationState } from \"@azure/core-lro\";\nimport { KeyVaultClient } from \"../generated/keyVaultClient\";\n\n/**\n * Common parameters to a Key Vault Key Poller.\n */\nexport interface KeyVaultKeyPollerOptions {\n vaultUrl: string;\n client: KeyVaultClient;\n name: string;\n operationOptions?: OperationOptions;\n intervalInMs?: number;\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the state of a Key Vault Key Poller's operation.\n */\nexport interface KeyVaultKeyPollOperationState extends PollOperationState {\n /**\n * The name of the key.\n */\n name: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Pollers.\n */\nexport abstract class KeyVaultKeyPoller<\n TState extends KeyVaultKeyPollOperationState,\n TResult,\n> extends Poller {\n /**\n * Defines how much time the poller is going to wait before making a new request to the service.\n */\n public intervalInMs: number = 2000;\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n async delay(): Promise {\n return delay(this.intervalInMs);\n }\n}\n\n/**\n * Optional parameters to the KeyVaultKeyPollOperation\n */\nexport interface KeyVaultKeyPollOperationOptions {\n cancelMessage?: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Key Poller operations.\n */\nexport class KeyVaultKeyPollOperation implements PollOperation {\n private cancelMessage: string = \"\";\n\n constructor(\n public state: TState,\n options: KeyVaultKeyPollOperationOptions = {},\n ) {\n if (options.cancelMessage) {\n this.cancelMessage = options.cancelMessage;\n }\n }\n\n /**\n * Meant to reach to the service and update the Poller operation.\n */\n public async update(): Promise> {\n throw new Error(\"Operation not supported.\");\n }\n\n /**\n * Meant to reach to the service and cancel the Poller operation.\n */\n public async cancel(): Promise> {\n throw new Error(this.cancelMessage);\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport { DeleteKeyOptions, DeletedKey, GetDeletedKeyOptions } from \"../../keysModels\";\nimport { tracingClient } from \"../../tracing\";\nimport { getKeyFromKeyBundle } from \"../../transformations\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface DeleteKeyPollOperationState extends KeyVaultKeyPollOperationState {}\n\nexport class DeleteKeyPollOperation extends KeyVaultKeyPollOperation<\n DeleteKeyPollOperationState,\n DeletedKey\n> {\n constructor(\n public state: DeleteKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the deletion of a key is not supported.\" });\n }\n\n /**\n * Sends a delete request for the given Key Vault Key's name to the Key Vault service.\n * Since the Key Vault Key won't be immediately deleted, we have {@link beginDeleteKey}.\n */\n private deleteKey(name: string, options: DeleteKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"DeleteKeyPoller.deleteKey\", options, async (updatedOptions) => {\n const response = await this.client.deleteKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n */\n private getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"DeleteKeyPoller.getDeletedKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: DeleteKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n const deletedKey = await this.deleteKey(name, this.operationOptions);\n state.isStarted = true;\n state.result = deletedKey;\n if (!deletedKey.properties.recoveryId) {\n state.isCompleted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getDeletedKey(name, this.operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeleteKeyPollOperation, DeleteKeyPollOperationState } from \"./operation\";\nimport { DeletedKey } from \"../../keysModels\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller\";\n\n/**\n * Class that creates a poller that waits until a key finishes being deleted.\n */\nexport class DeleteKeyPoller extends KeyVaultKeyPoller {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: DeleteKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new DeleteKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-client\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport { GetKeyOptions, KeyVaultKey, RecoverDeletedKeyOptions } from \"../../keysModels\";\nimport { tracingClient } from \"../../tracing\";\nimport { getKeyFromKeyBundle } from \"../../transformations\";\nimport { KeyVaultKeyPollOperation, KeyVaultKeyPollOperationState } from \"../keyVaultKeyPoller\";\n\n/**\n * An interface representing the state of a delete key's poll operation\n */\nexport interface RecoverDeletedKeyPollOperationState\n extends KeyVaultKeyPollOperationState {}\n\nexport class RecoverDeletedKeyPollOperation extends KeyVaultKeyPollOperation<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(\n public state: RecoverDeletedKeyPollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {},\n ) {\n super(state, { cancelMessage: \"Canceling the recovery of a deleted key is not supported.\" });\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n */\n private getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RecoverDeleteKeyPoller.getKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n updatedOptions?.version || \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Sends a request to recover a deleted Key Vault Key based on the given name.\n * Since the Key Vault Key won't be immediately recover the deleted key, we have {@link beginRecoverDeletedKey}.\n */\n private async recoverDeletedKey(\n name: string,\n options: RecoverDeletedKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RecoverDeletedKeyPoller.recoverDeleteKey\",\n options,\n async (updatedOptions) => {\n const response = await this.client.recoverDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Reaches to the service and updates the delete key's poll operation.\n */\n public async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: RecoverDeletedKeyPollOperationState) => void;\n } = {},\n ): Promise {\n const state = this.state;\n const { name } = state;\n\n const operationOptions = this.operationOptions;\n if (options.abortSignal) {\n operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch {\n // Nothing to do here.\n }\n if (!state.isCompleted) {\n state.result = await this.recoverDeletedKey(name, operationOptions);\n state.isStarted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getKey(name, operationOptions);\n state.isCompleted = true;\n } catch (error: any) {\n if (error.statusCode === 403) {\n // At this point, the resource exists but the user doesn't have access to it.\n state.isCompleted = true;\n } else if (error.statusCode !== 404) {\n state.error = error;\n state.isCompleted = true;\n throw error;\n }\n }\n }\n\n return this;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { RecoverDeletedKeyPollOperation, RecoverDeletedKeyPollOperationState } from \"./operation\";\nimport { KeyVaultKey } from \"../../keysModels\";\nimport { KeyVaultKeyPoller, KeyVaultKeyPollerOptions } from \"../keyVaultKeyPoller\";\n\n/**\n * Class that deletes a poller that waits until a key finishes being deleted\n */\nexport class RecoverDeletedKeyPoller extends KeyVaultKeyPoller<\n RecoverDeletedKeyPollOperationState,\n KeyVaultKey\n> {\n constructor(options: KeyVaultKeyPollerOptions) {\n const { vaultUrl, client, name, operationOptions, intervalInMs = 2000, resumeFrom } = options;\n\n let state: RecoverDeletedKeyPollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new RecoverDeletedKeyPollOperation(\n {\n ...state,\n name,\n },\n vaultUrl,\n client,\n operationOptions,\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as coreClient from \"@azure/core-client\";\nimport { ExtendedCommonClientOptions } from \"@azure/core-http-compat\";\n\nimport {\n DeletionRecoveryLevel,\n JsonWebKeyOperation as KeyOperation,\n JsonWebKeyType as KeyType,\n KnownJsonWebKeyType as KnownKeyTypes,\n} from \"./generated/models\";\n\nimport { KeyCurveName } from \"./cryptographyClientModels\";\n\nexport { KeyType, KnownKeyTypes, KeyOperation };\n\n/**\n * The latest supported Key Vault service API version\n */\nexport const LATEST_API_VERSION = \"7.5\";\n\n/**\n * The optional parameters accepted by the KeyVault's KeyClient\n */\nexport interface KeyClientOptions extends ExtendedCommonClientOptions {\n /**\n * The version of the KeyVault's service API to make calls against.\n */\n serviceVersion?: string;\n\n /**\n * Whether to disable verification that the authentication challenge resource matches the Key Vault or Managed HSM domain.\n * Defaults to false.\n */\n disableChallengeResourceVerification?: boolean;\n}\n\n/**\n * The optional parameters accepted by the KeyVault's CryptographyClient\n */\nexport interface CryptographyClientOptions extends KeyClientOptions {}\n\n/**\n * As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18\n */\nexport interface JsonWebKey {\n /**\n * Key identifier.\n */\n kid?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n kty?: KeyType;\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * RSA modulus.\n */\n n?: Uint8Array;\n /**\n * RSA public exponent.\n */\n e?: Uint8Array;\n /**\n * RSA private exponent, or the D component of an EC private key.\n */\n d?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dp?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n dq?: Uint8Array;\n /**\n * RSA private key parameter.\n */\n qi?: Uint8Array;\n /**\n * RSA secret prime.\n */\n p?: Uint8Array;\n /**\n * RSA secret prime, with `p < q`.\n */\n q?: Uint8Array;\n /**\n * Symmetric key.\n */\n k?: Uint8Array;\n /**\n * HSM Token, used with 'Bring Your Own Key'.\n */\n t?: Uint8Array;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName. Possible values include:\n * 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n crv?: KeyCurveName;\n /**\n * X component of an EC public key.\n */\n x?: Uint8Array;\n /**\n * Y component of an EC public key.\n */\n y?: Uint8Array;\n}\n\n/**\n * An interface representing a Key Vault Key, with its name, value and {@link KeyProperties}.\n */\nexport interface KeyVaultKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties;\n}\n\n/**\n * An interface representing the Properties of {@link KeyVaultKey}\n */\nexport interface KeyProperties {\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * The vault URI.\n */\n vaultUrl: string;\n /**\n * The version of the key. May be undefined.\n */\n version?: string;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Creation time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly createdOn?: Date;\n /**\n * Last updated time in UTC.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly updatedOn?: Date;\n /**\n * Reflects the deletion recovery level currently in effect for keys in the current vault.\n * If it contains 'Purgeable' the key can be permanently deleted by a privileged\n * user; otherwise, only the system can purge the key, at the end of the\n * retention interval. Possible values include: 'Purgeable',\n * 'Recoverable+Purgeable', 'Recoverable',\n * 'Recoverable+ProtectedSubscription'\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /**\n * The retention dates of the softDelete data.\n * The value should be `>=7` and `<=90` when softDelete enabled.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n recoverableDays?: number;\n\n /**\n * True if the secret's lifetime is managed by\n * key vault. If this is a secret backing a certificate, then managed will be\n * true.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly managed?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n\n /**\n * The underlying HSM Platform.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly hsmPlatform?: string;\n}\n\n/**\n * An interface representing a deleted Key Vault Key.\n */\nexport interface DeletedKey {\n /**\n * The key value.\n */\n key?: JsonWebKey;\n /**\n * The name of the key.\n */\n name: string;\n /**\n * Key identifier.\n */\n id?: string;\n /**\n * JsonWebKey Key Type (kty), as defined in\n * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. Possible values include:\n * 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', \"oct-HSM\"\n */\n keyType?: KeyType;\n /**\n * Operations allowed on this key\n */\n keyOperations?: KeyOperation[];\n /**\n * The properties of the key.\n */\n properties: KeyProperties & {\n /**\n * The url of the recovery object, used to\n * identify and recover the deleted key.\n */\n readonly recoveryId?: string;\n /**\n * The time when the key is scheduled to be purged, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly scheduledPurgeDate?: Date;\n /**\n * The time when the key was deleted, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n deletedOn?: Date;\n };\n}\n\n/**\n * The policy rules under which a key can be exported.\n */\nexport interface KeyReleasePolicy {\n /**\n * Content type and version of key release policy.\n *\n * Defaults to \"application/json; charset=utf-8\" if omitted.\n */\n contentType?: string;\n\n /**\n * The policy rules under which the key can be released. Encoded based on the {@link KeyReleasePolicy.contentType}.\n *\n * For more information regarding the release policy grammar for Azure Key Vault, please refer to:\n * - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar.\n * - https://aka.ms/policygrammarmhsm for Azure Managed HSM release policy grammar.\n */\n encodedPolicy?: Uint8Array;\n\n /** Marks a release policy as immutable. An immutable release policy cannot be changed or updated after being marked immutable. */\n immutable?: boolean;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createKey}\n */\nexport interface CreateKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n readonly expiresOn?: Date;\n /**\n * The key size in bits. For example: 2048, 3072, or 4096 for RSA.\n */\n keySize?: number;\n /**\n * Elliptic curve name. For valid values, see KeyCurveName.\n * Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n curve?: KeyCurveName;\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hsm?: boolean;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey} and {@link beginRecoverDeletedKey}\n */\nexport interface KeyPollerOptions extends coreClient.OperationOptions {\n /**\n * Time between each polling\n */\n intervalInMs?: number;\n /**\n * A serialized poller, used to resume an existing operation\n */\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteKey}\n */\nexport interface BeginDeleteKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginRecoverDeletedKey}\n */\nexport interface BeginRecoverDeletedKeyOptions extends KeyPollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createEcKey}\n */\nexport interface CreateEcKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createRsaKey}\n */\nexport interface CreateRsaKeyOptions extends CreateKeyOptions {\n /** The public exponent for a RSA key. */\n publicExponent?: number;\n}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link createOctKey}\n */\nexport interface CreateOctKeyOptions extends CreateKeyOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link importKey}\n */\nexport interface ImportKeyOptions extends coreClient.OperationOptions {\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n /**\n * Whether to import as a hardware key (HSM) or software key.\n */\n hardwareProtected?: boolean;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n\n /**\n * Indicates whether the private key can be exported.\n */\n exportable?: boolean;\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link updateKeyProperties}.\n */\nexport interface UpdateKeyPropertiesOptions extends coreClient.OperationOptions {\n /**\n * Json web key operations. For more\n * information on possible key operations, see KeyOperation.\n */\n keyOps?: KeyOperation[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Expiry date in UTC.\n */\n expiresOn?: Date;\n /**\n * Application specific metadata in the form of key-value pairs.\n */\n tags?: { [propertyName: string]: string };\n\n /**\n * A {@link KeyReleasePolicy} object specifying the rules under which the key can be exported.\n * Only valid if the key is marked exportable, which cannot be changed after key creation.\n */\n releasePolicy?: KeyReleasePolicy;\n}\n\n/**\n * Options for {@link getKey}.\n */\nexport interface GetKeyOptions extends coreClient.OperationOptions {\n /**\n * The version of the secret to retrieve. If not\n * specified the latest version of the secret will be retrieved.\n */\n version?: string;\n}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listKeys}.\n */\nexport interface ListKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeys}.\n */\nexport interface ListPropertiesOfKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listPropertiesOfKeyVersions}.\n */\nexport interface ListPropertiesOfKeyVersionsOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing optional parameters for KeyClient paged operations passed to {@link listDeletedKeys}.\n */\nexport interface ListDeletedKeysOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link getDeletedKey}.\n */\nexport interface GetDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link purgeDeletedKey}.\n */\nexport interface PurgeDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link recoverDeletedKey}.\n */\nexport interface RecoverDeletedKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * @internal\n * Options for {@link deleteKey}.\n */\nexport interface DeleteKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link backupKey}.\n */\nexport interface BackupKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link restoreKeyBackup}.\n */\nexport interface RestoreKeyBackupOptions extends coreClient.OperationOptions {}\n\n/**\n * An interface representing the options of the cryptography API methods, go to the {@link CryptographyClient} for more information.\n */\nexport interface CryptographyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRandomBytes}\n */\nexport interface GetRandomBytesOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.releaseKey}\n */\nexport interface ReleaseKeyOptions extends coreClient.OperationOptions {\n /** A client provided nonce for freshness. */\n nonce?: string;\n\n /** The {@link KeyExportEncryptionAlgorithm} to for protecting the exported key material. */\n algorithm?: KeyExportEncryptionAlgorithm;\n\n /**\n * The version of the key to release. Defaults to the latest version of the key if omitted.\n */\n version?: string;\n}\n\n/**\n * Result of the {@link KeyClient.releaseKey} operation.\n */\nexport interface ReleaseKeyResult {\n /** A signed token containing the released key. */\n value: string;\n}\n\n/** Known values of {@link KeyOperation} that the service accepts. */\nexport enum KnownKeyOperations {\n /** Key operation - encrypt */\n Encrypt = \"encrypt\",\n /** Key operation - decrypt */\n Decrypt = \"decrypt\",\n /** Key operation - sign */\n Sign = \"sign\",\n /** Key operation - verify */\n Verify = \"verify\",\n /** Key operation - wrapKey */\n WrapKey = \"wrapKey\",\n /** Key operation - unwrapKey */\n UnwrapKey = \"unwrapKey\",\n /** Key operation - import */\n Import = \"import\",\n}\n\n/** Known values of {@link KeyExportEncryptionAlgorithm} that the service accepts. */\nexport enum KnownKeyExportEncryptionAlgorithm {\n /** CKM_RSA_AES_KEY_WRAP Key Export Encryption Algorithm */\n CkmRsaAesKeyWrap = \"CKM_RSA_AES_KEY_WRAP\",\n /** RSA_AES_KEY_WRAP_256 Key Export Encryption Algorithm */\n RsaAesKeyWrap256 = \"RSA_AES_KEY_WRAP_256\",\n /** RSA_AES_KEY_WRAP_384 Key Export Encryption Algorithm */\n RsaAesKeyWrap384 = \"RSA_AES_KEY_WRAP_384\",\n}\n\n/* eslint-disable tsdoc/syntax */\n/**\n * Defines values for KeyEncryptionAlgorithm.\n * {@link KnownKeyExportEncryptionAlgorithm} can be used interchangeably with KeyEncryptionAlgorithm,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **CKM_RSA_AES_KEY_WRAP** \\\n * **RSA_AES_KEY_WRAP_256** \\\n * **RSA_AES_KEY_WRAP_384**\n */\nexport type KeyExportEncryptionAlgorithm = string;\n/* eslint-enable tsdoc/syntax */\n\n/**\n * Options for {@link KeyClient.getCryptographyClient}.\n */\nexport interface GetCryptographyClientOptions {\n /**\n * The version of the key to use for cryptographic operations.\n *\n * When undefined, the latest version of the key will be used.\n */\n keyVersion?: string;\n}\n\n/**\n * Options for {@link KeyClient.rotateKey}\n */\nexport interface RotateKeyOptions extends coreClient.OperationOptions {}\n\n/**\n * The properties of a key rotation policy that the client can set for a given key.\n *\n * You may also reset the key rotation policy to its default values by setting lifetimeActions to an empty array.\n */\nexport interface KeyRotationPolicyProperties {\n /**\n * Optional key expiration period used to define the duration after which a newly rotated key will expire, defined as an ISO 8601 duration.\n */\n expiresIn?: string;\n\n /**\n * Actions that will be performed by Key Vault over the lifetime of a key.\n *\n * You may also pass an empty array to restore to its default values.\n */\n lifetimeActions?: KeyRotationLifetimeAction[];\n}\n\n/**\n * The complete key rotation policy that belongs to a key.\n */\nexport interface KeyRotationPolicy extends KeyRotationPolicyProperties {\n /**\n * The identifier of the Key Rotation Policy.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly id?: string;\n\n /**\n * The created time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly createdOn?: Date;\n\n /**\n * The last updated time in UTC.\n * May be undefined if a policy has not been explicitly set.\n */\n readonly updatedOn?: Date;\n}\n\n/**\n * An action and its corresponding trigger that will be performed by Key Vault over the lifetime of a key.\n */\nexport interface KeyRotationLifetimeAction {\n /**\n * Time after creation to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeAfterCreate?: string;\n\n /**\n * Time before expiry to attempt the specified action, defined as an ISO 8601 duration.\n */\n timeBeforeExpiry?: string;\n\n /**\n * The action that will be executed.\n */\n action: KeyRotationPolicyAction;\n}\n\n/**\n * The action that will be executed.\n */\nexport type KeyRotationPolicyAction = \"Rotate\" | \"Notify\";\n\n/**\n * Options for {@link KeyClient.updateKeyRotationPolicy}\n */\nexport interface UpdateKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n\n/**\n * Options for {@link KeyClient.getRotationPolicy}\n */\nexport interface GetKeyRotationPolicyOptions extends coreClient.OperationOptions {}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Verify,\n createHash as cryptoCreateHash,\n createVerify as cryptoCreateVerify,\n randomBytes as cryptoRandomBytes,\n} from \"crypto\";\n\n/**\n * @internal\n * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing.\n **/\nconst algorithmToHashAlgorithm: { [s: string]: string } = {\n ES256: \"SHA256\",\n ES256K: \"SHA256\",\n PS256: \"SHA256\",\n RS256: \"SHA256\",\n ES384: \"SHA384\",\n PS384: \"SHA384\",\n RS384: \"SHA384\",\n ES512: \"SHA512\",\n PS512: \"SHA512\",\n RS512: \"SHA512\",\n};\n\n/**\n * @internal\n * Use the platform-local hashing functionality\n */\nexport async function createHash(algorithm: string, data: Uint8Array): Promise {\n const hashAlgorithm = algorithmToHashAlgorithm[algorithm];\n if (!hashAlgorithm) {\n throw new Error(\n `Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(\n algorithmToHashAlgorithm,\n ).join(\", \")}`,\n );\n }\n const hash = cryptoCreateHash(hashAlgorithm);\n hash.update(Buffer.from(data));\n const digest = hash.digest();\n return digest;\n}\n\n/**\n * @internal\n * Use the platform-local verify functionality\n */\nexport function createVerify(algorithm: string, data: Uint8Array): Verify {\n const verifyAlgorithm = algorithmToHashAlgorithm[algorithm];\n if (!verifyAlgorithm) {\n throw new Error(\n `Invalid algorithm ${algorithm} passed to createHash. Supported algorithms: ${Object.keys(\n algorithmToHashAlgorithm,\n ).join(\", \")}`,\n );\n }\n const verifier = cryptoCreateVerify(verifyAlgorithm);\n verifier.update(Buffer.from(data));\n verifier.end();\n return verifier;\n}\n\n/**\n * @internal\n * Use the platform-local randomBytes functionality\n */\nexport function randomBytes(length: number): Uint8Array {\n return cryptoRandomBytes(length);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"../cryptographyClientModels\";\nimport { SDK_VERSION } from \"../constants\";\nimport { UnwrapResult } from \"../cryptographyClientModels\";\nimport { KeyVaultClient } from \"../generated\";\nimport { parseKeyVaultKeyIdentifier } from \"../identifier\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n KeyVaultKey,\n LATEST_API_VERSION,\n} from \"../keysModels\";\nimport { getKeyFromKeyBundle } from \"../transformations\";\nimport { createHash } from \"./crypto\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./models\";\nimport { logger } from \"../log\";\nimport { createKeyVaultChallengeCallbacks } from \"../../../keyvault-common/src\";\nimport { tracingClient } from \"../tracing\";\n\n/**\n * The remote cryptography provider is used to run crypto operations against KeyVault.\n * @internal\n */\nexport class RemoteCryptographyProvider implements CryptographyProvider {\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n this.client = getOrInitializeClient(credential, pipelineOptions);\n\n this.key = key;\n\n let keyId: string;\n if (typeof key === \"string\") {\n keyId = key;\n } else {\n keyId = key.id!;\n }\n\n try {\n const parsed = parseKeyVaultKeyIdentifier(keyId);\n if (parsed.name === \"\") {\n throw new Error(\"Could not find 'name' of key in key URL\");\n }\n\n if (!parsed.vaultUrl || parsed.vaultUrl === \"\") {\n throw new Error(\"Could not find 'vaultUrl' of key in key URL\");\n }\n\n this.vaultUrl = parsed.vaultUrl;\n this.name = parsed.name;\n this.version = parsed.version ?? \"\";\n } catch (err: any) {\n logger.error(err);\n\n throw new Error(`${keyId} is not a valid Key Vault key ID`);\n }\n }\n\n // The remote client supports all algorithms and all operations.\n isSupported(_algorithm: string, _operation: CryptographyProviderOperation): boolean {\n return true;\n }\n\n encrypt(\n encryptParameters: EncryptParameters,\n options: EncryptOptions = {},\n ): Promise {\n const { algorithm, plaintext, ...params } = encryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.encrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.encrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n plaintext,\n updatedOptions,\n );\n\n return {\n algorithm: encryptParameters.algorithm,\n result: result.result!,\n keyID: this.getKeyID(),\n additionalAuthenticatedData: result.additionalAuthenticatedData,\n authenticationTag: result.authenticationTag,\n iv: result.iv,\n };\n },\n );\n }\n\n decrypt(\n decryptParameters: DecryptParameters,\n options: DecryptOptions = {},\n ): Promise {\n const { algorithm, ciphertext, ...params } = decryptParameters;\n const requestOptions = { ...options, ...params };\n\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.decrypt\",\n requestOptions,\n async (updatedOptions) => {\n const result = await this.client.decrypt(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n ciphertext,\n updatedOptions,\n );\n return {\n result: result.result!,\n keyID: this.getKeyID(),\n algorithm,\n };\n },\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.wrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.wrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n keyToWrap,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.unwrapKey\",\n options,\n async (updatedOptions) => {\n const result = await this.client.unwrapKey(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n encryptedKey,\n updatedOptions,\n );\n\n return {\n result: result.result!,\n algorithm,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n sign(algorithm: string, digest: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.sign\",\n options,\n async (updatedOptions) => {\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verifyData\",\n options,\n async (updatedOptions) => {\n const hash = await createHash(algorithm, data);\n return this.verify(algorithm, hash, signature, updatedOptions);\n },\n );\n }\n\n verify(\n algorithm: string,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.verify\",\n options,\n async (updatedOptions) => {\n const response = await this.client.verify(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n signature,\n updatedOptions,\n );\n return {\n result: response.value ? response.value : false,\n keyID: this.getKeyID(),\n };\n },\n );\n }\n\n signData(algorithm: string, data: Uint8Array, options: SignOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.signData\",\n options,\n async (updatedOptions) => {\n const digest = await createHash(algorithm, data);\n const result = await this.client.sign(\n this.vaultUrl,\n this.name,\n this.version,\n algorithm,\n digest,\n updatedOptions,\n );\n return { result: result.result!, algorithm, keyID: this.getKeyID() };\n },\n );\n }\n\n /**\n * The base URL to the vault.\n */\n readonly vaultUrl: string;\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyId(): string | undefined {\n return this.getKeyID();\n }\n\n /**\n * Gets the {@link KeyVaultKey} used for cryptography operations, fetching it\n * from KeyVault if necessary.\n * @param options - Additional options.\n */\n getKey(options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(\n \"RemoteCryptographyProvider.getKey\",\n options,\n async (updatedOptions) => {\n if (typeof this.key === \"string\") {\n if (!this.name || this.name === \"\") {\n throw new Error(\"getKey requires a key with a name\");\n }\n const response = await this.client.getKey(\n this.vaultUrl,\n this.name,\n options && options.version ? options.version : this.version ? this.version : \"\",\n updatedOptions,\n );\n this.key = getKeyFromKeyBundle(response);\n }\n return this.key;\n },\n );\n }\n\n /**\n * A reference to the auto-generated KeyVault HTTP client.\n */\n private client: KeyVaultClient;\n\n /**\n * A reference to the key used for the cryptographic operations.\n * Based on what was provided to the CryptographyClient constructor,\n * it can be either a string with the URL of a Key Vault Key, or an already parsed {@link KeyVaultKey}.\n */\n private key: string | KeyVaultKey;\n\n /**\n * Name of the key the client represents\n */\n private name: string;\n\n /**\n * Version of the key the client represents\n */\n private version: string;\n\n /**\n * Attempts to retrieve the ID of the key.\n */\n private getKeyID(): string | undefined {\n let kid;\n if (typeof this.key !== \"string\") {\n kid = this.key.id;\n } else {\n kid = this.key;\n }\n\n return kid;\n }\n}\n\n/**\n * A helper method to either get the passed down generated client or initialize a new one.\n * An already constructed generated client may be passed down from {@link KeyClient} in which case we should reuse it.\n *\n * @internal\n * @param credential - The credential to use when initializing a new client.\n * @param options - The options for constructing a client or the underlying client if one already exists.\n * @returns - A generated client instance\n */\nfunction getOrInitializeClient(\n credential: TokenCredential,\n options: CryptographyClientOptions & { generatedClient?: KeyVaultClient },\n): KeyVaultClient {\n if (options.generatedClient) {\n return options.generatedClient;\n }\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = options.userAgentOptions;\n\n options.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const authPolicy = bearerTokenAuthenticationPolicy({\n credential,\n scopes: [], // Scopes are going to be defined by the challenge callbacks.\n challengeCallbacks: createKeyVaultChallengeCallbacks(options),\n });\n\n const internalPipelineOptions = {\n ...options,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n const client = new KeyVaultClient(\n options.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n client.pipeline.addPolicy(authPolicy);\n\n return client;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { JsonWebKey } from \"../keysModels\";\n\n/**\n * @internal\n * Encodes a length of a packet in DER format\n */\nfunction encodeLength(length: number): Uint8Array {\n if (length <= 127) {\n return Uint8Array.of(length);\n } else if (length < 256) {\n return Uint8Array.of(0x81, length);\n } else if (length < 65536) {\n return Uint8Array.of(0x82, length >> 8, length & 0xff);\n } else {\n throw new Error(\"Unsupported length to encode\");\n }\n}\n\n/**\n * @internal\n * Encodes a buffer for DER, as sets the id to the given id\n */\nfunction encodeBuffer(buffer: Uint8Array, bufferId: number): Uint8Array {\n if (buffer.length === 0) {\n return buffer;\n }\n\n let result = new Uint8Array(buffer);\n\n // If the high bit is set, prepend a 0\n if (result[0] & 0x80) {\n const array = new Uint8Array(result.length + 1);\n array[0] = 0;\n array.set(result, 1);\n result = array;\n }\n\n // Prepend the DER header for this buffer\n const encodedLength = encodeLength(result.length);\n const totalLength = 1 + encodedLength.length + result.length;\n\n const outputBuffer = new Uint8Array(totalLength);\n outputBuffer[0] = bufferId;\n outputBuffer.set(encodedLength, 1);\n outputBuffer.set(result, 1 + encodedLength.length);\n\n return outputBuffer;\n}\n\nfunction makeSequence(encodedParts: Uint8Array[]): string {\n const totalLength = encodedParts.reduce((sum, part) => sum + part.length, 0);\n const sequence = new Uint8Array(totalLength);\n\n for (let i = 0; i < encodedParts.length; i++) {\n const previousLength = i > 0 ? encodedParts[i - 1].length : 0;\n sequence.set(encodedParts[i], previousLength);\n }\n\n const full_encoded = encodeBuffer(sequence, 0x30); // SEQUENCE\n return Buffer.from(full_encoded).toString(\"base64\");\n}\n\n/**\n * Fill in the PEM with 64 character lines as per RFC:\n *\n * \"To represent the encapsulated text of a PEM message, the encoding\n * function's output is delimited into text lines (using local\n * conventions), with each line except the last containing exactly 64\n * printable characters and the final line containing 64 or fewer\n * printable characters.\"\n */\nfunction formatBase64Sequence(base64Sequence: string): string {\n const lines = base64Sequence.match(/.{1,64}/g);\n let result = \"\";\n if (lines) {\n for (const line of lines) {\n result += line;\n result += \"\\n\";\n }\n } else {\n throw new Error(\"Could not create correct PEM\");\n }\n return result;\n}\n\n/**\n * @internal\n * Encode a JWK to PEM format. To do so, it internally repackages the JWK as a DER\n * that is then encoded as a PEM.\n */\nexport function convertJWKtoPEM(key: JsonWebKey): string {\n let result = \"\";\n\n if (key.n && key.e) {\n const parts = [key.n, key.e];\n const encodedParts = parts.map((part) => encodeBuffer(part, 0x2)); // INTEGER\n const base64Sequence = makeSequence(encodedParts);\n result += \"-----BEGIN RSA PUBLIC KEY-----\\n\";\n result += formatBase64Sequence(base64Sequence);\n result += \"-----END RSA PUBLIC KEY-----\\n\";\n }\n\n if (!result.length) {\n throw new Error(\"Unsupported key format for local operations\");\n }\n\n return result.slice(0, -1); // Removing the last new line\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"..\";\n\nexport class LocalCryptographyUnsupportedError extends Error {}\n\n/**\n * The set of operations a {@link CryptographyProvider} supports.\n *\n * This corresponds to every single method on the interface so that providers\n * can declare whether they support this method or not.\n *\n * Purposely more granular than {@link KnownKeyOperations} because some providers\n * support verifyData but not verify.\n * @internal\n */\nexport type CryptographyProviderOperation =\n | \"encrypt\"\n | \"decrypt\"\n | \"wrapKey\"\n | \"unwrapKey\"\n | \"sign\"\n | \"signData\"\n | \"verify\"\n | \"verifyData\";\n\n/**\n *\n * Represents an object that can perform cryptography operations.\n * @internal\n */\nexport interface CryptographyProvider {\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * @internal\n *\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n encrypt(encryptParameters: EncryptParameters, options?: EncryptOptions): Promise;\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * @internal\n *\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n decrypt(decryptParameters: DecryptParameters, options?: DecryptOptions): Promise;\n\n /**\n *\n * @param algorithm - The algorithm to check support for.\n * @param operation - The {@link CryptographyProviderOperation} to check support for.\n */\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean;\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param keyToWrap - The key to wrap.\n * @param options - Additional options.\n */\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n options?: WrapKeyOptions,\n ): Promise;\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n * @internal\n *\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options?: UnwrapKeyOptions,\n ): Promise;\n\n /**\n * Cryptographically sign the digest of a message\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Cryptographically sign a block of data\n * @internal\n *\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n options?: SignOptions,\n ): Promise;\n\n /**\n * Verify the signed message digest\n * @internal\n *\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options?: VerifyOptions,\n ): Promise;\n\n /**\n * Verify the signed block of data\n * @internal\n *\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param updatedOptions - Additional options.\n */\n verifyData(\n algorithm: string,\n data: Uint8Array,\n signature: Uint8Array,\n updatedOptions: OperationOptions,\n ): Promise;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_PADDING } from \"constants\";\nimport { publicEncrypt } from \"crypto\";\nimport { createVerify } from \"./crypto\";\nimport {\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n JsonWebKey,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"..\";\nimport { convertJWKtoPEM } from \"./conversions\";\nimport {\n CryptographyProvider,\n CryptographyProviderOperation,\n LocalCryptographyUnsupportedError,\n} from \"./models\";\n\n/**\n * An RSA cryptography provider supporting RSA algorithms.\n */\nexport class RsaCryptographyProvider implements CryptographyProvider {\n constructor(key: JsonWebKey) {\n this.key = key;\n }\n\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean {\n return (\n this.applicableAlgorithms.includes(algorithm) && this.applicableOperations.includes(operation)\n );\n }\n\n encrypt(encryptParameters: EncryptParameters, _options?: EncryptOptions): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const padding =\n encryptParameters.algorithm === \"RSA1_5\" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING;\n\n return Promise.resolve({\n algorithm: encryptParameters.algorithm,\n keyID: this.key.kid,\n result: publicEncrypt(\n { key: keyPEM, padding: padding },\n Buffer.from(encryptParameters.plaintext),\n ),\n });\n }\n\n decrypt(\n _decryptParameters: DecryptParameters,\n _options?: DecryptOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Decrypting using a local JsonWebKey is not supported.\",\n );\n }\n\n wrapKey(\n algorithm: KeyWrapAlgorithm,\n keyToWrap: Uint8Array,\n _options?: WrapKeyOptions,\n ): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const padding = algorithm === \"RSA1_5\" ? RSA_PKCS1_PADDING : RSA_PKCS1_OAEP_PADDING;\n\n return Promise.resolve({\n algorithm: algorithm as KeyWrapAlgorithm,\n result: publicEncrypt({ key: keyPEM, padding }, Buffer.from(keyToWrap)),\n keyID: this.key.kid,\n });\n }\n\n unwrapKey(\n _algorithm: KeyWrapAlgorithm,\n _encryptedKey: Uint8Array,\n _options?: UnwrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Unwrapping a key using a local JsonWebKey is not supported.\",\n );\n }\n\n sign(\n _algorithm: SignatureAlgorithm,\n _digest: Uint8Array,\n _options?: SignOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing a digest using a local JsonWebKey is not supported.\",\n );\n }\n\n signData(\n _algorithm: SignatureAlgorithm,\n _data: Uint8Array,\n _options?: SignOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing a block of data using a local JsonWebKey is not supported.\",\n );\n }\n\n async verify(\n _algorithm: SignatureAlgorithm,\n _digest: Uint8Array,\n _signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying a digest using a local JsonWebKey is not supported.\",\n );\n }\n\n verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n this.ensureValid();\n const keyPEM = convertJWKtoPEM(this.key);\n\n const verifier = createVerify(algorithm, data);\n return Promise.resolve({\n result: verifier.verify(keyPEM, Buffer.from(signature)),\n keyID: this.key.kid,\n });\n }\n\n /**\n * The {@link JsonWebKey} used to perform crypto operations.\n */\n private key: JsonWebKey;\n\n /**\n * The set of algorithms this provider supports\n */\n private applicableAlgorithms: string[] = [\n \"RSA1_5\",\n \"RSA-OAEP\",\n \"PS256\",\n \"RS256\",\n \"PS384\",\n \"RS384\",\n \"PS512\",\n \"RS512\",\n ];\n\n /**\n * The set of operations this provider supports\n */\n private applicableOperations: CryptographyProviderOperation[] = [\n \"encrypt\",\n \"wrapKey\",\n \"verifyData\",\n ];\n\n /**\n * Mapping between signature algorithms and their corresponding hash algorithms. Externally used for testing.\n * @internal\n */\n signatureAlgorithmToHashAlgorithm: { [s: string]: string } = {\n PS256: \"SHA256\",\n RS256: \"SHA256\",\n PS384: \"SHA384\",\n RS384: \"SHA384\",\n PS512: \"SHA512\",\n RS512: \"SHA512\",\n };\n\n private ensureValid(): void {\n if (\n this.key &&\n this.key.kty?.toUpperCase() !== \"RSA\" &&\n this.key.kty?.toUpperCase() !== \"RSA-HSM\"\n ) {\n throw new Error(\"Key type does not match the algorithm RSA\");\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport * as crypto from \"crypto\";\nimport {\n AesCbcEncryptParameters,\n DecryptOptions,\n DecryptResult,\n EncryptOptions,\n EncryptResult,\n JsonWebKey,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"..\";\nimport { AesCbcDecryptParameters } from \"../cryptographyClientModels\";\nimport {\n CryptographyProvider,\n CryptographyProviderOperation,\n LocalCryptographyUnsupportedError,\n} from \"./models\";\n\n/**\n * An AES cryptography provider supporting AES algorithms.\n * @internal\n */\nexport class AesCryptographyProvider implements CryptographyProvider {\n private key: JsonWebKey;\n constructor(key: JsonWebKey) {\n this.key = key;\n }\n encrypt(\n encryptParameters: AesCbcEncryptParameters,\n _options?: EncryptOptions,\n ): Promise {\n const { algorithm, keySizeInBytes } = this.supportedAlgorithms[encryptParameters.algorithm];\n const iv = encryptParameters.iv || crypto.randomBytes(16);\n\n this.ensureValid(keySizeInBytes);\n\n const cipher = crypto.createCipheriv(algorithm, this.key.k!.subarray(0, keySizeInBytes), iv);\n let encrypted = cipher.update(Buffer.from(encryptParameters.plaintext));\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n\n return Promise.resolve({\n algorithm: encryptParameters.algorithm,\n result: encrypted,\n iv: iv,\n });\n }\n\n decrypt(\n decryptParameters: AesCbcDecryptParameters,\n _options?: DecryptOptions,\n ): Promise {\n const { algorithm, keySizeInBytes } = this.supportedAlgorithms[decryptParameters.algorithm];\n\n this.ensureValid(keySizeInBytes);\n\n const decipher = crypto.createDecipheriv(\n algorithm,\n this.key.k!.subarray(0, keySizeInBytes),\n decryptParameters.iv,\n );\n let dec = decipher.update(Buffer.from(decryptParameters.ciphertext));\n dec = Buffer.concat([dec, decipher.final()]);\n\n return Promise.resolve({\n algorithm: decryptParameters.algorithm,\n result: dec,\n });\n }\n\n isSupported(algorithm: string, operation: CryptographyProviderOperation): boolean {\n if (!this.key.k) {\n return false;\n }\n\n if (!Object.keys(this.supportedAlgorithms).includes(algorithm)) {\n return false;\n }\n\n if (!this.supportedOperations.includes(operation)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * The set of algorithms this provider supports.\n * For AES encryption, the values include the underlying algorithm used in crypto\n * as well as the key size in bytes.\n *\n * We start with support for A[SIZE]CBCPAD which uses the PKCS padding (the default padding scheme in node crypto)\n */\n private supportedAlgorithms: { [s: string]: { algorithm: string; keySizeInBytes: number } } = {\n A128CBCPAD: {\n algorithm: \"aes-128-cbc\",\n keySizeInBytes: 128 >> 3,\n },\n A192CBCPAD: {\n algorithm: \"aes-192-cbc\",\n keySizeInBytes: 192 >> 3,\n },\n A256CBCPAD: {\n algorithm: \"aes-256-cbc\",\n keySizeInBytes: 256 >> 3,\n },\n };\n\n private supportedOperations: CryptographyProviderOperation[] = [\"encrypt\", \"decrypt\"];\n\n wrapKey(\n _algorithm: KeyWrapAlgorithm,\n _keyToWrap: Uint8Array,\n _options?: WrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Wrapping a key using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n unwrapKey(\n _algorithm: KeyWrapAlgorithm,\n _encryptedKey: Uint8Array,\n _options?: UnwrapKeyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Unwrapping a key using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n sign(_algorithm: string, _digest: Uint8Array, _options?: SignOptions): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n signData(_algorithm: string, _data: Uint8Array, _options?: SignOptions): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Signing using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n verify(\n _algorithm: string,\n _digest: Uint8Array,\n _signature: Uint8Array,\n _options?: VerifyOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying using a local JsonWebKey is not supported for AES.\",\n );\n }\n verifyData(\n _algorithm: string,\n _data: Uint8Array,\n _signature: Uint8Array,\n _updatedOptions: OperationOptions,\n ): Promise {\n throw new LocalCryptographyUnsupportedError(\n \"Verifying using a local JsonWebKey is not supported for AES.\",\n );\n }\n\n private ensureValid(keySizeInBytes: number): void {\n if (\n this.key &&\n this.key.kty?.toUpperCase() !== \"OCT\" &&\n this.key.kty?.toUpperCase() !== \"OCT-HSM\"\n ) {\n throw new Error(\"Key type does not match the key type oct or oct-hsm\");\n }\n\n if (!this.key.k) {\n throw new Error(\"Symmetric key is required\");\n }\n\n if (this.key.k.length < keySizeInBytes) {\n throw new Error(`Key must be at least ${keySizeInBytes << 3} bits`);\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationOptions } from \"@azure/core-client\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport {\n CryptographyClientOptions,\n GetKeyOptions,\n JsonWebKey,\n KeyOperation,\n KeyVaultKey,\n KnownKeyOperations,\n} from \"./keysModels\";\nimport {\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n CryptographyClientKey,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyWrapAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels\";\nimport { RemoteCryptographyProvider } from \"./cryptography/remoteCryptographyProvider\";\nimport { randomBytes } from \"./cryptography/crypto\";\nimport { CryptographyProvider, CryptographyProviderOperation } from \"./cryptography/models\";\nimport { RsaCryptographyProvider } from \"./cryptography/rsaCryptographyProvider\";\nimport { AesCryptographyProvider } from \"./cryptography/aesCryptographyProvider\";\nimport { tracingClient } from \"./tracing\";\nimport { isRestError } from \"@azure/core-rest-pipeline\";\nimport { logger } from \"./log\";\n\n/**\n * A client used to perform cryptographic operations on an Azure Key vault key\n * or a local {@link JsonWebKey}.\n */\nexport class CryptographyClient {\n /**\n * The key the CryptographyClient currently holds.\n */\n private key: CryptographyClientKey;\n\n /**\n * The remote provider, which would be undefined if used in local mode.\n */\n private remoteProvider?: RemoteCryptographyProvider;\n\n /**\n * Constructs a new instance of the Cryptography client for the given key\n *\n * Example usage:\n * ```ts\n * import { KeyClient, CryptographyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let keyClient = new KeyClient(vaultUrl, credentials);\n * let keyVaultKey = await keyClient.getKey(\"MyKey\");\n *\n * let client = new CryptographyClient(keyVaultKey.id, credentials);\n * // or\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * ```\n * @param key - The key to use during cryptography tasks. You can also pass the identifier of the key i.e its url here.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests.\n * Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n key: string | KeyVaultKey,\n credential: TokenCredential,\n pipelineOptions?: CryptographyClientOptions,\n );\n /**\n * Constructs a new instance of the Cryptography client for the given key in local mode.\n *\n * Example usage:\n * ```ts\n * import { CryptographyClient } from \"@azure/keyvault-keys\";\n *\n * const jsonWebKey: JsonWebKey = {\n * // ...\n * };\n * const client = new CryptographyClient(jsonWebKey);\n * ```\n * @param key - The JsonWebKey to use during cryptography operations.\n */\n constructor(key: JsonWebKey);\n /**\n * Internal constructor implementation for either local or Key Vault backed keys.\n * @param key - The key to use during cryptography tasks.\n * @param credential - Teh credential to use when constructing a Key Vault Cryptography client.\n */\n constructor(\n key: string | KeyVaultKey | JsonWebKey,\n credential?: TokenCredential,\n pipelineOptions: CryptographyClientOptions = {},\n ) {\n if (typeof key === \"string\") {\n // Key URL for remote-local operations.\n this.key = {\n kind: \"identifier\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else if (\"name\" in key) {\n // KeyVault key for remote-local operations.\n this.key = {\n kind: \"KeyVaultKey\",\n value: key,\n };\n this.remoteProvider = new RemoteCryptographyProvider(key, credential!, pipelineOptions);\n } else {\n // JsonWebKey for local-only operations.\n this.key = {\n kind: \"JsonWebKey\",\n value: key,\n };\n }\n }\n\n /**\n * The base URL to the vault. If a local {@link JsonWebKey} is used vaultUrl will be empty.\n */\n get vaultUrl(): string {\n return this.remoteProvider?.vaultUrl || \"\";\n }\n\n /**\n * The ID of the key used to perform cryptographic operations for the client.\n */\n get keyID(): string | undefined {\n if (this.key.kind === \"identifier\" || this.key.kind === \"remoteOnlyIdentifier\") {\n return this.key.value;\n } else if (this.key.kind === \"KeyVaultKey\") {\n return this.key.value.id;\n } else {\n return this.key.value.kid;\n }\n }\n\n /**\n * Encrypts the given plaintext with the specified encryption parameters.\n * Depending on the algorithm set in the encryption parameters, the set of possible encryption parameters will change.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt({ algorithm: \"RSA1_5\", plaintext: Buffer.from(\"My Message\")});\n * let result = await client.encrypt({ algorithm: \"A256GCM\", plaintext: Buffer.from(\"My Message\"), additionalAuthenticatedData: Buffer.from(\"My authenticated data\")});\n * ```\n * @param encryptParameters - The encryption parameters, keyed on the encryption algorithm chosen.\n * @param options - Additional options.\n */\n public encrypt(\n encryptParameters: EncryptParameters,\n options?: EncryptOptions,\n ): Promise;\n /**\n * Encrypts the given plaintext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.encrypt(\"RSA1_5\", Buffer.from(\"My Message\"));\n * ```\n * @param algorithm - The algorithm to use.\n * @param plaintext - The text to encrypt.\n * @param options - Additional options.\n * @deprecated Use `encrypt({ algorithm, plaintext }, options)` instead.\n */\n public encrypt(\n algorithm: EncryptionAlgorithm,\n plaintext: Uint8Array,\n options?: EncryptOptions,\n ): Promise;\n public encrypt(\n ...args:\n | [EncryptParameters, EncryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, EncryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateEncryptArguments(args);\n return tracingClient.withSpan(\"CryptographyClient.encrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Encrypt);\n this.initializeIV(parameters);\n const provider = await this.getProvider(\"encrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.encrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.encrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n private initializeIV(parameters: EncryptParameters): void {\n // For AES-GCM the service **must** generate the IV, so we only populate it for AES-CBC\n const algorithmsRequiringIV: AesCbcEncryptionAlgorithm[] = [\n \"A128CBC\",\n \"A128CBCPAD\",\n \"A192CBC\",\n \"A192CBCPAD\",\n \"A256CBC\",\n \"A256CBCPAD\",\n ];\n\n if (parameters.algorithm in algorithmsRequiringIV) {\n try {\n const cbcParams = parameters as AesCbcEncryptParameters;\n if (!cbcParams.iv) {\n cbcParams.iv = randomBytes(16);\n }\n } catch (e: any) {\n throw new Error(\n `Unable to initialize IV for algorithm ${parameters.algorithm}. You may pass a valid IV to avoid this error. Error: ${e.message}`,\n );\n }\n }\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The encrypt arguments\n */\n private disambiguateEncryptArguments(\n args: [EncryptParameters, EncryptOptions?] | [string, Uint8Array, EncryptOptions?],\n ): [EncryptParameters, EncryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", buffer, options]\n return [\n {\n algorithm: args[0],\n plaintext: args[1],\n } as EncryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", plaintext: buffer }, options]\n return [args[0], (args[1] || {}) as EncryptOptions];\n }\n }\n\n /**\n * Decrypts the given ciphertext with the specified decryption parameters.\n * Depending on the algorithm used in the decryption parameters, the set of possible decryption parameters will change.\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt({ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer });\n * let result = await client.decrypt({ algorithm: \"A256GCM\", iv: ivFromEncryptResult, authenticationTag: tagFromEncryptResult });\n * ```\n * @param decryptParameters - The decryption parameters.\n * @param options - Additional options.\n */\n public async decrypt(\n decryptParameters: DecryptParameters,\n options?: DecryptOptions,\n ): Promise;\n /**\n * Decrypts the given ciphertext with the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.decrypt(\"RSA1_5\", encryptedBuffer);\n * ```\n *\n * Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using, for example, an HMAC. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n *\n * @param algorithm - The algorithm to use.\n * @param ciphertext - The text to decrypt.\n * @param options - Additional options.\n * @deprecated Use `decrypt({ algorithm, ciphertext }, options)` instead.\n */\n public decrypt(\n algorithm: EncryptionAlgorithm,\n ciphertext: Uint8Array,\n options?: DecryptOptions,\n ): Promise;\n public decrypt(\n ...args:\n | [DecryptParameters, DecryptOptions?]\n | [EncryptionAlgorithm, Uint8Array, DecryptOptions?]\n ): Promise {\n const [parameters, options] = this.disambiguateDecryptArguments(args);\n\n return tracingClient.withSpan(\"CryptographyClient.decrypt\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Decrypt);\n const provider = await this.getProvider(\"decrypt\", parameters.algorithm, updatedOptions);\n try {\n return provider.decrypt(parameters, updatedOptions);\n } catch (error: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.decrypt(parameters, updatedOptions);\n }\n throw error;\n }\n });\n }\n\n /**\n * Standardizes the arguments of multiple overloads into a single shape.\n * @param args - The decrypt arguments\n */\n private disambiguateDecryptArguments(\n args: [DecryptParameters, DecryptOptions?] | [string, Uint8Array, DecryptOptions?],\n ): [DecryptParameters, DecryptOptions] {\n if (typeof args[0] === \"string\") {\n // Sample shape: [\"RSA1_5\", encryptedBuffer, options]\n return [\n {\n algorithm: args[0],\n ciphertext: args[1],\n } as DecryptParameters,\n args[2] || {},\n ];\n } else {\n // Sample shape: [{ algorithm: \"RSA1_5\", ciphertext: encryptedBuffer }, options]\n return [args[0], (args[1] || {}) as DecryptOptions];\n }\n }\n\n /**\n * Wraps the given key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.wrapKey(\"RSA1_5\", keyToWrap);\n * ```\n * @param algorithm - The encryption algorithm to use to wrap the given key.\n * @param key - The key to wrap.\n * @param options - Additional options.\n */\n public wrapKey(\n algorithm: KeyWrapAlgorithm,\n key: Uint8Array,\n options: WrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.wrapKey\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.WrapKey);\n const provider = await this.getProvider(\"wrapKey\", algorithm, updatedOptions);\n try {\n return provider.wrapKey(algorithm, key, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.wrapKey(algorithm, key, options);\n }\n throw err;\n }\n });\n }\n\n /**\n * Unwraps the given wrapped key using the specified cryptography algorithm\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.unwrapKey(\"RSA1_5\", keyToUnwrap);\n * ```\n * @param algorithm - The decryption algorithm to use to unwrap the key.\n * @param encryptedKey - The encrypted key to unwrap.\n * @param options - Additional options.\n */\n public unwrapKey(\n algorithm: KeyWrapAlgorithm,\n encryptedKey: Uint8Array,\n options: UnwrapKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.unwrapKey\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.UnwrapKey);\n const provider = await this.getProvider(\"unwrapKey\", algorithm, updatedOptions);\n try {\n return provider.unwrapKey(algorithm, encryptedKey, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.unwrapKey(algorithm, encryptedKey, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Cryptographically sign the digest of a message\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.sign(\"RS256\", digest);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param digest - The digest of the data to sign.\n * @param options - Additional options.\n */\n public sign(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.sign\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"sign\", algorithm, updatedOptions);\n try {\n return provider.sign(algorithm, digest, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.sign(algorithm, digest, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Verify the signed message digest\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verify(\"RS256\", signedDigest, signature);\n * ```\n * @param algorithm - The signing algorithm to use to verify with.\n * @param digest - The digest to verify.\n * @param signature - The signature to verify the digest against.\n * @param options - Additional options.\n */\n public verify(\n algorithm: SignatureAlgorithm,\n digest: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"CryptographyClient.verify\", options, async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verify\", algorithm, updatedOptions);\n try {\n return provider.verify(algorithm, digest, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verify(algorithm, digest, signature, updatedOptions);\n }\n throw err;\n }\n });\n }\n\n /**\n * Cryptographically sign a block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.signData(\"RS256\", message);\n * ```\n * @param algorithm - The signing algorithm to use.\n * @param data - The data to sign.\n * @param options - Additional options.\n */\n public signData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n options: SignOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.signData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Sign);\n const provider = await this.getProvider(\"signData\", algorithm, updatedOptions);\n try {\n return provider.signData(algorithm, data, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.signData(algorithm, data, options);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Verify the signed block of data\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.verifyData(\"RS256\", signedMessage, signature);\n * ```\n * @param algorithm - The algorithm to use to verify with.\n * @param data - The signed block of data to verify.\n * @param signature - The signature to verify the block against.\n * @param options - Additional options.\n */\n public verifyData(\n algorithm: SignatureAlgorithm,\n data: Uint8Array,\n signature: Uint8Array,\n options: VerifyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"CryptographyClient.verifyData\",\n options,\n async (updatedOptions) => {\n this.ensureValid(await this.fetchKey(updatedOptions), KnownKeyOperations.Verify);\n const provider = await this.getProvider(\"verifyData\", algorithm, updatedOptions);\n try {\n return provider.verifyData(algorithm, data, signature, updatedOptions);\n } catch (err: any) {\n if (this.remoteProvider) {\n return this.remoteProvider.verifyData(algorithm, data, signature, updatedOptions);\n }\n throw err;\n }\n },\n );\n }\n\n /**\n * Retrieves the {@link JsonWebKey} from the Key Vault, if possible. Returns undefined if the key could not be retrieved due to insufficient permissions.\n *\n * Example usage:\n * ```ts\n * let client = new CryptographyClient(keyVaultKey, credentials);\n * let result = await client.getKeyMaterial();\n * ```\n */\n private async getKeyMaterial(options: GetKeyOptions): Promise {\n const key = await this.fetchKey(options);\n\n switch (key.kind) {\n case \"JsonWebKey\":\n return key.value;\n case \"KeyVaultKey\":\n return key.value.key!;\n default:\n return undefined;\n }\n }\n\n /**\n * Returns the underlying key used for cryptographic operations.\n * If needed, attempts to fetch the key from KeyVault and exchanges the ID for the actual key.\n * @param options - The additional options.\n */\n private async fetchKey(options: T): Promise {\n if (this.key.kind === \"identifier\") {\n // Exchange the identifier with the actual key when needed\n let key: KeyVaultKey | undefined;\n try {\n key = await this.remoteProvider!.getKey(options);\n } catch (e: unknown) {\n if (isRestError(e) && e.statusCode === 403) {\n // If we don't have permission to get the key, we'll fall back to using the remote provider.\n // Marking the key as a remoteOnlyIdentifier will ensure that we don't attempt to fetch the key again.\n logger.verbose(\n `Permission denied to get key ${this.key.value}. Falling back to remote operation.`,\n );\n this.key = { kind: \"remoteOnlyIdentifier\", value: this.key.value };\n } else {\n throw e;\n }\n }\n\n if (key) {\n this.key = { kind: \"KeyVaultKey\", value: key };\n }\n }\n\n return this.key;\n }\n\n private providers?: CryptographyProvider[];\n /**\n * Gets the provider that support this algorithm and operation.\n * The available providers are ordered by priority such that the first provider that supports this\n * operation is the one we should use.\n * @param operation - The {@link KeyOperation}.\n * @param algorithm - The algorithm to use.\n */\n private async getProvider(\n operation: CryptographyProviderOperation,\n algorithm: string,\n options: T,\n ): Promise {\n if (!this.providers) {\n const keyMaterial = await this.getKeyMaterial(options);\n this.providers = [];\n\n // Add local crypto providers as needed\n if (keyMaterial) {\n this.providers.push(\n new RsaCryptographyProvider(keyMaterial),\n new AesCryptographyProvider(keyMaterial),\n );\n }\n\n // If the remote provider exists, we're in hybrid-mode. Otherwise we're in local-only mode.\n // If we're in hybrid mode the remote provider is used as a catch-all and should be last in the list.\n if (this.remoteProvider) {\n this.providers.push(this.remoteProvider);\n }\n }\n\n const providers = this.providers.filter((p) => p.isSupported(algorithm, operation));\n\n if (providers.length === 0) {\n throw new Error(\n `Unable to support operation: \"${operation}\" with algorithm: \"${algorithm}\" ${\n this.key.kind === \"JsonWebKey\" ? \"using a local JsonWebKey\" : \"\"\n }`,\n );\n }\n\n // Return the first provider that supports this request\n return providers[0];\n }\n\n private ensureValid(key: CryptographyClientKey, operation?: KeyOperation): void {\n if (key.kind === \"KeyVaultKey\") {\n const keyOps = key.value.keyOperations;\n const { notBefore, expiresOn } = key.value.properties;\n const now = new Date();\n\n // Check KeyVault Key Expiration\n if (notBefore && now < notBefore) {\n throw new Error(`Key ${key.value.id} can't be used before ${notBefore.toISOString()}`);\n }\n\n if (expiresOn && now > expiresOn) {\n throw new Error(`Key ${key.value.id} expired at ${expiresOn.toISOString()}`);\n }\n\n // Check Key operations\n if (operation && keyOps && !keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.id}`);\n }\n } else if (key.kind === \"JsonWebKey\") {\n // Check JsonWebKey Key operations\n if (operation && key.value.keyOps && !key.value.keyOps?.includes(operation)) {\n throw new Error(`Operation ${operation} is not supported on key ${key.value.kid}`);\n }\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CryptographyOptions, KeyVaultKey } from \"./keysModels\";\n\nimport {\n JsonWebKeyEncryptionAlgorithm as EncryptionAlgorithm,\n JsonWebKey,\n JsonWebKeyCurveName as KeyCurveName,\n KnownJsonWebKeyCurveName as KnownKeyCurveNames,\n KnownJsonWebKeySignatureAlgorithm as KnownSignatureAlgorithms,\n JsonWebKeySignatureAlgorithm as SignatureAlgorithm,\n} from \"./generated/models\";\n\nexport {\n KeyCurveName,\n KnownKeyCurveNames,\n EncryptionAlgorithm,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n};\n\n/** Known values of {@link EncryptionAlgorithm} that the service accepts. */\nexport enum KnownEncryptionAlgorithms {\n /** Encryption Algorithm - RSA-OAEP */\n RSAOaep = \"RSA-OAEP\",\n /** Encryption Algorithm - RSA-OAEP-256 */\n RSAOaep256 = \"RSA-OAEP-256\",\n /** Encryption Algorithm - RSA1_5 */\n RSA15 = \"RSA1_5\",\n /** Encryption Algorithm - A128GCM */\n A128GCM = \"A128GCM\",\n /** Encryption Algorithm - A192GCM */\n A192GCM = \"A192GCM\",\n /** Encryption Algorithm - A256GCM */\n A256GCM = \"A256GCM\",\n /** Encryption Algorithm - A128KW */\n A128KW = \"A128KW\",\n /** Encryption Algorithm - A192KW */\n A192KW = \"A192KW\",\n /** Encryption Algorithm - A256KW */\n A256KW = \"A256KW\",\n /** Encryption Algorithm - A128CBC */\n A128CBC = \"A128CBC\",\n /** Encryption Algorithm - A192CBC */\n A192CBC = \"A192CBC\",\n /** Encryption Algorithm - A256CBC */\n A256CBC = \"A256CBC\",\n /** Encryption Algorithm - A128CBCPAD */\n A128Cbcpad = \"A128CBCPAD\",\n /** Encryption Algorithm - A192CBCPAD */\n A192Cbcpad = \"A192CBCPAD\",\n /** Encryption Algorithm - A256CBCPAD */\n A256Cbcpad = \"A256CBCPAD\",\n}\n\n/**\n * Supported algorithms for key wrapping/unwrapping\n */\nexport type KeyWrapAlgorithm =\n | \"A128KW\"\n | \"A192KW\"\n | \"A256KW\"\n | \"RSA-OAEP\"\n | \"RSA-OAEP-256\"\n | \"RSA1_5\";\n\n/**\n * Result of the {@link encrypt} operation.\n */\nexport interface EncryptResult {\n /**\n * Result of the {@link encrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The {@link EncryptionAlgorithm} used to encrypt the data.\n */\n algorithm: EncryptionAlgorithm;\n /**\n * The ID of the Key Vault Key used to encrypt the data.\n */\n keyID?: string;\n /**\n * The initialization vector used for encryption.\n */\n iv?: Uint8Array;\n /**\n * The authentication tag resulting from encryption with a symmetric key including A128GCM, A192GCM, and A256GCM.\n */\n authenticationTag?: Uint8Array;\n /**\n * Additional data that is authenticated during decryption but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Result of the {@link wrap} operation.\n */\nexport interface WrapResult {\n /**\n * Result of the {@link wrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to wrap the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to wrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n\n/**\n * Result of the {@link unwrap} operation.\n */\nexport interface UnwrapResult {\n /**\n * Result of the {@link unwrap} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to unwrap the data.\n */\n keyID?: string;\n /**\n * The {@link KeyWrapAlgorithm} used to unwrap the data.\n */\n algorithm: KeyWrapAlgorithm;\n}\n/**\n * Result of the {@link decrypt} operation.\n */\nexport interface DecryptResult {\n /**\n * Result of the {@link decrypt} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to decrypt the encrypted data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to decrypt the encrypted data.\n */\n algorithm: EncryptionAlgorithm;\n}\n\n/**\n * Result of the {@link sign} operation.\n */\nexport interface SignResult {\n /**\n * Result of the {@link sign} operation in bytes.\n */\n result: Uint8Array;\n /**\n * The ID of the Key Vault Key used to sign the data.\n */\n keyID?: string;\n /**\n * The {@link EncryptionAlgorithm} used to sign the data.\n */\n algorithm: SignatureAlgorithm;\n}\n\n/**\n * Result of the {@link verify} operation.\n */\nexport interface VerifyResult {\n /**\n * Result of the {@link verify} operation in bytes.\n */\n result: boolean;\n /**\n * The ID of the Key Vault Key used to verify the data.\n */\n keyID?: string;\n}\n\n/**\n * Options for {@link encrypt}.\n */\nexport interface EncryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link decrypt}.\n */\nexport interface DecryptOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link sign}.\n */\nexport interface SignOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verify}.\n */\nexport interface VerifyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link verifyData}\n */\nexport interface VerifyDataOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link wrapKey}.\n */\nexport interface WrapKeyOptions extends CryptographyOptions {}\n\n/**\n * Options for {@link unwrapKey}.\n */\nexport interface UnwrapKeyOptions extends CryptographyOptions {}\n\n/**\n * A union type representing all supported RSA encryption algorithms.\n */\nexport type RsaEncryptionAlgorithm = \"RSA1_5\" | \"RSA-OAEP\" | \"RSA-OAEP-256\";\n\n/**\n * Encryption parameters for RSA encryption algorithms.\n */\nexport interface RsaEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-GCM encryption algorithms.\n */\nexport type AesGcmEncryptionAlgorithm = \"A128GCM\" | \"A192GCM\" | \"A256GCM\";\n\n/**\n * Encryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * A union type representing all supported AES-CBC encryption algorithms.\n */\nexport type AesCbcEncryptionAlgorithm =\n | \"A128CBC\"\n | \"A192CBC\"\n | \"A256CBC\"\n | \"A128CBCPAD\"\n | \"A192CBCPAD\"\n | \"A256CBCPAD\";\n\n/**\n * Encryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcEncryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The plain text to encrypt.\n */\n plaintext: Uint8Array;\n /**\n * The initialization vector used for encryption. If omitted we will attempt to generate an IV using crypto's `randomBytes` functionality.\n * An error will be thrown if creating an IV fails, and you may recover by passing in your own cryptographically secure IV.\n *\n * When passing your own IV, make sure you use a cryptographically random, non-repeating IV.\n */\n iv?: Uint8Array;\n}\n\n/**\n * A type representing all currently supported encryption parameters as they apply to different encryption algorithms.\n */\nexport type EncryptParameters =\n | RsaEncryptParameters\n | AesGcmEncryptParameters\n | AesCbcEncryptParameters;\n\n/**\n * Decryption parameters for RSA encryption algorithms.\n */\nexport interface RsaDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: RsaEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-GCM encryption algorithms.\n */\nexport interface AesGcmDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesGcmEncryptionAlgorithm;\n /**\n * The ciphertext to decrypt.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector (or nonce) generated during encryption.\n */\n iv: Uint8Array;\n /**\n * The authentication tag generated during encryption.\n */\n authenticationTag: Uint8Array;\n /**\n * Optional data that is authenticated but not encrypted.\n */\n additionalAuthenticatedData?: Uint8Array;\n}\n\n/**\n * Decryption parameters for AES-CBC encryption algorithms.\n */\nexport interface AesCbcDecryptParameters {\n /**\n * The encryption algorithm to use.\n */\n algorithm: AesCbcEncryptionAlgorithm;\n /**\n * The initialization vector used during encryption.\n */\n /**\n * The ciphertext to decrypt. Microsoft recommends you not use CBC without first ensuring the integrity of the ciphertext using an HMAC, for example.\n * See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information.\n */\n ciphertext: Uint8Array;\n /**\n * The initialization vector generated during encryption.\n */\n iv: Uint8Array;\n}\n\n/**\n * A type representing all currently supported decryption parameters as they apply to different encryption algorithms.\n */\nexport type DecryptParameters =\n | RsaDecryptParameters\n | AesGcmDecryptParameters\n | AesCbcDecryptParameters;\n\n/**\n * The various key types a {@link CryptographyClient} can hold.\n * The key may be an identifier (URL) to a KeyVault key, the actual KeyVault key,\n * or a local-only JsonWebKey.\n *\n * If an identifier is used, an attempt will be made to exchange it for a {@link KeyVaultKey} during the first operation call. If this attempt fails, the identifier\n * will become a remote-only identifier and the {@link CryptographyClient} will only be able to perform remote operations.\n */\nexport type CryptographyClientKey =\n | {\n kind: \"identifier\";\n value: string;\n }\n | {\n kind: \"remoteOnlyIdentifier\";\n value: string;\n }\n | {\n kind: \"KeyVaultKey\";\n value: KeyVaultKey;\n }\n | {\n kind: \"JsonWebKey\";\n value: JsonWebKey;\n };\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/// \n\nimport { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n\nimport { TokenCredential } from \"@azure/core-auth\";\n\nimport { logger } from \"./log\";\n\nimport { PageSettings, PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport { PollOperationState, PollerLike } from \"@azure/core-lro\";\n\nimport {\n DeletionRecoveryLevel,\n GetKeysOptionalParams,\n KnownDeletionRecoveryLevel,\n KnownJsonWebKeyType,\n} from \"./generated/models\";\nimport { KeyVaultClient } from \"./generated/keyVaultClient\";\nimport { SDK_VERSION } from \"./constants\";\nimport { createKeyVaultChallengeCallbacks } from \"../../keyvault-common/src\";\n\nimport { DeleteKeyPoller } from \"./lro/delete/poller\";\nimport { RecoverDeletedKeyPoller } from \"./lro/recover/poller\";\n\nimport {\n BackupKeyOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateOctKeyOptions,\n CreateRsaKeyOptions,\n CryptographyClientOptions,\n CryptographyOptions,\n DeletedKey,\n GetCryptographyClientOptions,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetKeyRotationPolicyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyClientOptions,\n KeyExportEncryptionAlgorithm,\n KeyOperation,\n KeyPollerOptions,\n KeyProperties,\n KeyReleasePolicy,\n KeyRotationLifetimeAction,\n KeyRotationPolicy,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyType,\n KeyVaultKey,\n KnownKeyExportEncryptionAlgorithm,\n KnownKeyOperations,\n KnownKeyTypes,\n LATEST_API_VERSION,\n ListDeletedKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListPropertiesOfKeysOptions,\n PurgeDeletedKeyOptions,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n UpdateKeyPropertiesOptions,\n UpdateKeyRotationPolicyOptions,\n} from \"./keysModels\";\n\nimport { CryptographyClient } from \"./cryptographyClient\";\n\nimport {\n AesCbcDecryptParameters,\n AesCbcEncryptParameters,\n AesCbcEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesGcmEncryptParameters,\n AesGcmEncryptionAlgorithm,\n DecryptOptions,\n DecryptParameters,\n DecryptResult,\n EncryptOptions,\n EncryptParameters,\n EncryptResult,\n EncryptionAlgorithm,\n KeyCurveName,\n KeyWrapAlgorithm,\n KnownEncryptionAlgorithms,\n KnownKeyCurveNames,\n KnownSignatureAlgorithms,\n RsaDecryptParameters,\n RsaEncryptParameters,\n RsaEncryptionAlgorithm,\n SignOptions,\n SignResult,\n SignatureAlgorithm,\n UnwrapKeyOptions,\n UnwrapResult,\n VerifyDataOptions,\n VerifyOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n} from \"./cryptographyClientModels\";\n\nimport { KeyVaultKeyIdentifier, parseKeyVaultKeyIdentifier } from \"./identifier\";\nimport {\n getDeletedKeyFromDeletedKeyItem,\n getKeyFromKeyBundle,\n getKeyPropertiesFromKeyItem,\n keyRotationTransformations,\n} from \"./transformations\";\nimport { tracingClient } from \"./tracing\";\n\nexport {\n CryptographyClientOptions,\n KeyClientOptions,\n BackupKeyOptions,\n CreateEcKeyOptions,\n CreateKeyOptions,\n CreateRsaKeyOptions,\n CreateOctKeyOptions,\n CryptographyClient,\n CryptographyOptions,\n RsaEncryptionAlgorithm,\n RsaDecryptParameters,\n AesGcmEncryptionAlgorithm,\n AesGcmDecryptParameters,\n AesCbcEncryptionAlgorithm,\n AesCbcDecryptParameters,\n DecryptParameters,\n DecryptOptions,\n DecryptResult,\n DeletedKey,\n DeletionRecoveryLevel,\n KnownDeletionRecoveryLevel,\n RsaEncryptParameters,\n AesGcmEncryptParameters,\n AesCbcEncryptParameters,\n EncryptParameters,\n EncryptOptions,\n EncryptResult,\n GetDeletedKeyOptions,\n GetKeyOptions,\n GetRandomBytesOptions,\n ImportKeyOptions,\n JsonWebKey,\n KeyCurveName,\n KnownKeyCurveNames,\n KnownKeyExportEncryptionAlgorithm,\n EncryptionAlgorithm,\n KnownEncryptionAlgorithms,\n KeyOperation,\n KnownKeyOperations,\n KeyType,\n KnownKeyTypes,\n KeyPollerOptions,\n BeginDeleteKeyOptions,\n BeginRecoverDeletedKeyOptions,\n KeyProperties,\n SignatureAlgorithm,\n KnownSignatureAlgorithms,\n KeyVaultKey,\n KeyWrapAlgorithm,\n ListPropertiesOfKeysOptions,\n ListPropertiesOfKeyVersionsOptions,\n ListDeletedKeysOptions,\n PageSettings,\n PagedAsyncIterableIterator,\n KeyVaultKeyIdentifier,\n parseKeyVaultKeyIdentifier,\n PollOperationState,\n PollerLike,\n PurgeDeletedKeyOptions,\n RestoreKeyBackupOptions,\n RotateKeyOptions,\n SignOptions,\n SignResult,\n UnwrapKeyOptions,\n UnwrapResult,\n UpdateKeyPropertiesOptions,\n VerifyOptions,\n VerifyDataOptions,\n VerifyResult,\n WrapKeyOptions,\n WrapResult,\n ReleaseKeyOptions,\n ReleaseKeyResult,\n KeyReleasePolicy,\n KeyExportEncryptionAlgorithm,\n GetCryptographyClientOptions,\n KeyRotationPolicyAction,\n KeyRotationPolicyProperties,\n KeyRotationPolicy,\n KeyRotationLifetimeAction,\n UpdateKeyRotationPolicyOptions,\n GetKeyRotationPolicyOptions,\n logger,\n};\n\n/**\n * The KeyClient provides methods to manage {@link KeyVaultKey} in the\n * Azure Key Vault. The client supports creating, retrieving, updating,\n * deleting, purging, backing up, restoring and listing KeyVaultKeys. The\n * client also supports listing {@link DeletedKey} for a soft-delete enabled Azure Key\n * Vault.\n */\nexport class KeyClient {\n /**\n * The base URL to the vault\n */\n public readonly vaultUrl: string;\n\n /**\n * A reference to the auto-generated Key Vault HTTP client.\n */\n private readonly client: KeyVaultClient;\n\n /**\n * A reference to the credential that was used to construct this client.\n * Later used to instantiate a {@link CryptographyClient} with the same credential.\n */\n private readonly credential: TokenCredential;\n\n /**\n * Creates an instance of KeyClient.\n *\n * Example usage:\n * ```ts\n * import { KeyClient } from \"@azure/keyvault-keys\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * let vaultUrl = `https://.vault.azure.net`;\n * let credentials = new DefaultAzureCredential();\n *\n * let client = new KeyClient(vaultUrl, credentials);\n * ```\n * @param vaultUrl - the URL of the Key Vault. It should have this shape: `https://${your-key-vault-name}.vault.azure.net`. You should validate that this URL references a valid Key Vault or Managed HSM resource. See https://aka.ms/azsdk/blog/vault-uri for details.\n * @param credential - An object that implements the `TokenCredential` interface used to authenticate requests to the service. Use the \\@azure/identity package to create a credential that suits your needs.\n * @param pipelineOptions - Pipeline options used to configure Key Vault API requests. Omit this parameter to use the default pipeline configuration.\n */\n constructor(\n vaultUrl: string,\n credential: TokenCredential,\n pipelineOptions: KeyClientOptions = {},\n ) {\n this.vaultUrl = vaultUrl;\n\n const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`;\n\n const userAgentOptions = pipelineOptions.userAgentOptions;\n\n pipelineOptions.userAgentOptions = {\n userAgentPrefix:\n userAgentOptions && userAgentOptions.userAgentPrefix\n ? `${userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo,\n };\n\n const authPolicy = bearerTokenAuthenticationPolicy({\n credential,\n scopes: [], // Scopes are going to be defined by the challenge callbacks.\n challengeCallbacks: createKeyVaultChallengeCallbacks(pipelineOptions),\n });\n\n const internalPipelineOptions = {\n ...pipelineOptions,\n loggingOptions: {\n logger: logger.info,\n allowedHeaderNames: [\n \"x-ms-keyvault-region\",\n \"x-ms-keyvault-network-info\",\n \"x-ms-keyvault-service-version\",\n ],\n },\n };\n\n this.credential = credential;\n this.client = new KeyVaultClient(\n pipelineOptions.serviceVersion || LATEST_API_VERSION,\n internalPipelineOptions,\n );\n this.client.pipeline.addPolicy(authPolicy);\n }\n\n /**\n * The create key operation can be used to create any key type in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Create an elliptic-curve key:\n * let result = await client.createKey(\"MyKey\", \"EC\");\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param keyType - The type of the key. One of the following: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'.\n * @param options - The optional parameters.\n */\n public createKey(\n name: string,\n keyType: KeyType,\n options?: CreateKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const { enabled, notBefore, expiresOn: expires, exportable, ...remainingOptions } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n exportable,\n },\n };\n }\n return tracingClient.withSpan(\n \"KeyClient.createKey\",\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.createKey(this.vaultUrl, name, keyType, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * The createEcKey method creates a new elliptic curve key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createEcKey(\"MyKey\", { curve: \"P-256\" });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createEcKey(name: string, options?: CreateEcKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.ECHSM : KnownJsonWebKeyType.EC;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createRSAKey method creates a new RSA key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createRsaKey(\"MyKey\", { keySize: 2048 });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.RSAHSM : KnownJsonWebKeyType.RSA;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The createOctKey method creates a new OCT key in Azure Key Vault. If the named key\n * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create\n * permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let result = await client.createOctKey(\"MyKey\", { hsm: true });\n * ```\n * Creates a new key, stores it, then returns key parameters and properties to the client.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async createOctKey(name: string, options?: CreateOctKeyOptions): Promise {\n const keyType = options?.hsm ? KnownJsonWebKeyType.OctHSM : KnownJsonWebKeyType.Oct;\n return this.createKey(name, keyType, options);\n }\n\n /**\n * The import key operation may be used to import any key type into an Azure Key Vault. If the\n * named key already exists, Azure Key Vault creates a new version of the key. This operation\n * requires the keys/import permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // Key contents in myKeyContents\n * let result = await client.importKey(\"MyKey\", myKeyContents);\n * ```\n * Imports an externally created key, stores it, and returns key parameters and properties\n * to the client.\n * @param name - Name for the imported key.\n * @param key - The JSON web key.\n * @param options - The optional parameters.\n */\n public importKey(\n name: string,\n key: JsonWebKey,\n options?: ImportKeyOptions,\n ): Promise {\n let unflattenedOptions = {};\n\n if (options) {\n const {\n enabled,\n notBefore,\n exportable,\n expiresOn: expires,\n hardwareProtected: hsm,\n ...remainingOptions\n } = options;\n unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n hsm,\n exportable,\n },\n };\n }\n\n return tracingClient.withSpan(\n `KeyClient.importKey`,\n unflattenedOptions,\n async (updatedOptions) => {\n const response = await this.client.importKey(this.vaultUrl, name, key, updatedOptions);\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Gets a {@link CryptographyClient} for the given key.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * // get a cryptography client for a given key\n * let cryptographyClient = client.getCryptographyClient(\"MyKey\");\n * ```\n * @param name - The name of the key used to perform cryptographic operations.\n * @param version - Optional version of the key used to perform cryptographic operations.\n * @returns - A {@link CryptographyClient} using the same options, credentials, and http client as this {@link KeyClient}\n */\n public getCryptographyClient(\n keyName: string,\n options?: GetCryptographyClientOptions,\n ): CryptographyClient {\n const keyUrl = new URL(\n [\"keys\", keyName, options?.keyVersion].filter(Boolean).join(\"/\"),\n this.vaultUrl,\n );\n\n // The goals of this method are discoverability and performance (by sharing a client and pipeline).\n // The existing cryptography client does not accept a pipeline as an argument, nor does it expose it.\n // In order to avoid publicly exposing the pipeline we will pass in the underlying client as an undocumented\n // property to the constructor so that crypto providers downstream can use it.\n const constructorOptions: CryptographyClientOptions & { generatedClient: KeyVaultClient } = {\n generatedClient: this.client,\n };\n const cryptoClient = new CryptographyClient(\n keyUrl.toString(),\n this.credential,\n constructorOptions,\n );\n return cryptoClient;\n }\n\n /**\n * The delete operation applies to any key stored in Azure Key Vault. Individual versions\n * of a key can not be deleted, only all versions of a given key at once.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the key is deleted.\n *\n * This operation requires the keys/delete permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const poller = await client.beginDeleteKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginDeleteKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const deletedKey = await poller.pollUntilDone();\n * console.log(deletedKey);\n * ```\n * Deletes a key from a specified key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public async beginDeleteKey(\n name: string,\n options: BeginDeleteKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new DeleteKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n\n return poller;\n }\n\n /**\n * The updateKeyProperties method changes specified properties of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, key.properties.version, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n keyVersion: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n /**\n * The updateKeyProperties method changes specified properties of the latest version of an existing stored key. Properties that\n * are not specified in the request are left unchanged. The value of a key itself cannot be\n * changed. This operation requires the keys/set permission.\n *\n * Example usage:\n * ```ts\n * let keyName = \"MyKey\";\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.getKey(keyName);\n * let result = await client.updateKeyProperties(keyName, { enabled: false });\n * ```\n * Updates the properties associated with a specified key in a given key vault.\n * @param name - The name of the key.\n * @param keyVersion - The version of the key.\n * @param options - The optional parameters.\n */\n public updateKeyProperties(\n name: string,\n options?: UpdateKeyPropertiesOptions,\n ): Promise;\n public updateKeyProperties(\n ...args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?]\n ): Promise {\n const [name, keyVersion, options] = this.disambiguateUpdateKeyPropertiesArgs(args);\n return tracingClient.withSpan(\n `KeyClient.updateKeyProperties`,\n options,\n async (updatedOptions) => {\n const { enabled, notBefore, expiresOn: expires, ...remainingOptions } = updatedOptions;\n const unflattenedOptions = {\n ...remainingOptions,\n keyAttributes: {\n enabled,\n notBefore,\n expires,\n },\n };\n const response = await this.client.updateKey(\n this.vaultUrl,\n name,\n keyVersion,\n unflattenedOptions,\n );\n return getKeyFromKeyBundle(response);\n },\n );\n }\n\n /**\n * Standardizes an overloaded arguments collection for the updateKeyProperties method.\n *\n * @param args - The arguments collection.\n * @returns - The standardized arguments collection.\n */\n private disambiguateUpdateKeyPropertiesArgs(\n args: [string, string, UpdateKeyPropertiesOptions?] | [string, UpdateKeyPropertiesOptions?],\n ): [string, string, UpdateKeyPropertiesOptions] {\n if (typeof args[1] === \"string\") {\n // [name, keyVersion, options?] => [name, keyVersion, options || {}]\n return [args[0], args[1], args[2] || {}];\n } else {\n // [name, options?] => [name , \"\", options || {}]\n return [args[0], \"\", args[1] || {}];\n }\n }\n\n /**\n * The getKey method gets a specified key and is applicable to any key stored in Azure Key Vault.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getKey(\"MyKey\");\n * ```\n * Get a specified key from a given key vault.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getKey(name: string, options: GetKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getKey`, options, async (updatedOptions) => {\n const response = await this.client.getKey(\n this.vaultUrl,\n name,\n options && options.version ? options.version : \"\",\n updatedOptions,\n );\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The getDeletedKey method returns the specified deleted key along with its properties.\n * This operation requires the keys/get permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let key = await client.getDeletedKey(\"MyDeletedKey\");\n * ```\n * Gets the specified deleted key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public getDeletedKey(name: string, options: GetDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.getDeletedKey`, options, async (updatedOptions) => {\n const response = await this.client.getDeletedKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * The purge deleted key operation removes the key permanently, without the possibility of\n * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation\n * requires the keys/purge permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * const deletePoller = await client.beginDeleteKey(\"MyKey\")\n * await deletePoller.pollUntilDone();\n * await client.purgeDeletedKey(\"MyKey\");\n * ```\n * Permanently deletes the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public purgeDeletedKey(name: string, options: PurgeDeletedKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.purgeDeletedKey`, options, async (updatedOptions) => {\n await this.client.purgeDeletedKey(this.vaultUrl, name, updatedOptions);\n });\n }\n\n /**\n * Recovers the deleted key in the specified vault. This operation can only be performed on a\n * soft-delete enabled vault.\n *\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the deleted key is recovered.\n *\n * This operation requires the keys/recover permission.\n *\n * Example usage:\n * ```ts\n * const client = new KeyClient(url, credentials);\n * await client.createKey(\"MyKey\", \"EC\");\n * const deletePoller = await client.beginDeleteKey(\"MyKey\");\n * await deletePoller.pollUntilDone();\n * const poller = await client.beginRecoverDeletedKey(\"MyKey\");\n *\n * // Serializing the poller\n * const serialized = poller.toString();\n * // A new poller can be created with:\n * // await client.beginRecoverDeletedKey(\"MyKey\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const key = await poller.pollUntilDone();\n * console.log(key);\n * ```\n * Recovers the deleted key to the latest version.\n * @param name - The name of the deleted key.\n * @param options - The optional parameters.\n */\n public async beginRecoverDeletedKey(\n name: string,\n options: BeginRecoverDeletedKeyOptions = {},\n ): Promise, DeletedKey>> {\n const poller = new RecoverDeletedKeyPoller({\n name,\n vaultUrl: this.vaultUrl,\n client: this.client,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n // This will initialize the poller's operation (the deletion of the key).\n await poller.poll();\n return poller;\n }\n\n /**\n * Requests that a backup of the specified key be downloaded to the client. All versions of the\n * key will be downloaded. This operation requires the keys/backup permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * ```\n * Backs up the specified key.\n * @param name - The name of the key.\n * @param options - The optional parameters.\n */\n public backupKey(name: string, options: BackupKeyOptions = {}): Promise {\n return tracingClient.withSpan(`KeyClient.backupKey`, options, async (updatedOptions) => {\n const response = await this.client.backupKey(this.vaultUrl, name, updatedOptions);\n return response.value;\n });\n }\n\n /**\n * Restores a backed up key, and all its versions, to a vault. This operation requires the\n * keys/restore permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * let backupContents = await client.backupKey(\"MyKey\");\n * // ...\n * let key = await client.restoreKeyBackup(backupContents);\n * ```\n * Restores a backed up key to a vault.\n * @param backup - The backup blob associated with a key bundle.\n * @param options - The optional parameters.\n */\n public async restoreKeyBackup(\n backup: Uint8Array,\n options: RestoreKeyBackupOptions = {},\n ): Promise {\n return tracingClient.withSpan(`KeyClient.restoreKeyBackup`, options, async (updatedOptions) => {\n const response = await this.client.restoreKey(this.vaultUrl, backup, updatedOptions);\n return getKeyFromKeyBundle(response);\n });\n }\n\n /**\n * Gets the requested number of bytes containing random values from a managed HSM.\n * This operation requires the managedHsm/rng permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let { bytes } = await client.getRandomBytes(10);\n * ```\n * @param count - The number of bytes to generate between 1 and 128 inclusive.\n * @param options - The optional parameters.\n */\n public getRandomBytes(count: number, options: GetRandomBytesOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.getRandomBytes\", options, async (updatedOptions) => {\n const response = await this.client.getRandomBytes(this.vaultUrl, count, updatedOptions);\n return response.value!;\n });\n }\n\n /**\n * Rotates the key based on the key policy by generating a new version of the key. This operation requires the keys/rotate permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let key = await client.rotateKey(\"MyKey\");\n * ```\n *\n * @param name - The name of the key to rotate.\n * @param options - The optional parameters.\n */\n public rotateKey(name: string, options: RotateKeyOptions = {}): Promise {\n return tracingClient.withSpan(\"KeyClient.rotateKey\", options, async (updatedOptions) => {\n const key = await this.client.rotateKey(this.vaultUrl, name, updatedOptions);\n return getKeyFromKeyBundle(key);\n });\n }\n\n /**\n * Releases a key from a managed HSM.\n *\n * The release key operation is applicable to all key types. The operation requires the key to be marked exportable and the keys/release permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.releaseKey(\"myKey\", target)\n * ```\n *\n * @param name - The name of the key.\n * @param targetAttestationToken - The attestation assertion for the target of the key release.\n * @param options - The optional parameters.\n */\n public releaseKey(\n name: string,\n targetAttestationToken: string,\n options: ReleaseKeyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.releaseKey\", options, async (updatedOptions) => {\n const { nonce, algorithm, ...rest } = updatedOptions;\n const result = await this.client.release(\n this.vaultUrl,\n name,\n options?.version || \"\",\n targetAttestationToken,\n {\n enc: algorithm,\n nonce,\n ...rest,\n },\n );\n\n return { value: result.value! };\n });\n }\n\n /**\n * Gets the rotation policy of a Key Vault Key.\n * By default, all keys have a policy that will notify 30 days before expiry.\n *\n * This operation requires the keys/get permission.\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * let result = await client.getKeyRotationPolicy(\"myKey\");\n * ```\n *\n * @param keyName - The name of the key.\n * @param options - The optional parameters.\n */\n public getKeyRotationPolicy(\n keyName: string,\n options: GetKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\"KeyClient.getKeyRotationPolicy\", options, async () => {\n const policy = await this.client.getKeyRotationPolicy(this.vaultUrl, keyName);\n return keyRotationTransformations.generatedToPublic(policy);\n });\n }\n\n /**\n * Updates the rotation policy of a Key Vault Key.\n * This operation requires the keys/update permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(vaultUrl, credentials);\n * const setPolicy = await client.updateKeyRotationPolicy(\"MyKey\", myPolicy);\n * ```\n *\n * @param keyName - The name of the key.\n * @param policyProperties - The {@link KeyRotationPolicyProperties} for the policy.\n * @param options - The optional parameters.\n */\n public updateKeyRotationPolicy(\n keyName: string,\n policy: KeyRotationPolicyProperties,\n options: UpdateKeyRotationPolicyOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n \"KeyClient.updateKeyRotationPolicy\",\n options,\n async (updatedOptions) => {\n const result = await this.client.updateKeyRotationPolicy(\n this.vaultUrl,\n keyName,\n keyRotationTransformations.propertiesToGenerated(policy),\n updatedOptions,\n );\n return keyRotationTransformations.generatedToPublic(result);\n },\n );\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsPage(\n name: string,\n continuationState: PageSettings,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeyVersions(this.vaultUrl, name, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeyVersionsPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeyVersionsNext(\n this.vaultUrl,\n name,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeyVersions}.\n * @param name - The name of the Key Vault Key.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeyVersionsAll(\n name: string,\n options?: ListPropertiesOfKeyVersionsOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeyVersionsPage(name, f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates all versions of the given key in the vault. The full key identifier, properties, and tags are provided\n * in the response. This operation requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeyVersions(\"MyKey\")) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key version: \", key);\n * }\n * ```\n * @param name - Name of the key to fetch versions for\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeyVersions(\n name: string,\n options: ListPropertiesOfKeyVersionsOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeyVersionsAll(name, options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfKeyVersionsPage(name, settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listPropertiesOfKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysPage(\n continuationState: PageSettings,\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getKeys(this.vaultUrl, updatedOptions),\n );\n\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listPropertiesOfKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getKeyPropertiesFromKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listPropertiesOfKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listPropertiesOfKeysAll(\n options?: ListPropertiesOfKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listPropertiesOfKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the latest version of all keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const keyProperties of client.listPropertiesOfKeys()) {\n * const key = await client.getKey(keyProperties.name);\n * console.log(\"key: \", key);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listPropertiesOfKeys(\n options: ListPropertiesOfKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listPropertiesOfKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listPropertiesOfKeysPage(settings, options),\n };\n }\n\n /**\n * Deals with the pagination of {@link listDeletedKeys}.\n * @param continuationState - An object that indicates the position of the paginated request.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysPage(\n continuationState: PageSettings,\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetKeysOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n optionsComplete,\n async (updatedOptions) => this.client.getDeletedKeys(this.vaultUrl, updatedOptions),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await tracingClient.withSpan(\n \"KeyClient.listDeletedKeysPage\",\n options || {},\n async (updatedOptions) =>\n this.client.getDeletedKeysNext(\n this.vaultUrl,\n continuationState.continuationToken!,\n updatedOptions,\n ),\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedKeyFromDeletedKeyItem, this);\n } else {\n break;\n }\n }\n }\n\n /**\n * Deals with the iteration of all the available results of {@link listDeletedKeys}.\n * @param options - Common options for the iterative endpoints.\n */\n private async *listDeletedKeysAll(\n options?: ListDeletedKeysOptions,\n ): AsyncIterableIterator {\n const f = {};\n\n for await (const page of this.listDeletedKeysPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Iterates the deleted keys in the vault. The full key identifier and properties are provided\n * in the response. No values are returned for the keys. This operations requires the keys/list permission.\n *\n * Example usage:\n * ```ts\n * let client = new KeyClient(url, credentials);\n * for await (const deletedKey of client.listDeletedKeys()) {\n * console.log(\"deleted key: \", deletedKey);\n * }\n * ```\n * List all keys in the vault\n * @param options - The optional parameters.\n */\n public listDeletedKeys(\n options: ListDeletedKeysOptions = {},\n ): PagedAsyncIterableIterator {\n const iter = this.listDeletedKeysAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listDeletedKeysPage(settings, options),\n };\n }\n}\n"],"names":["createClientLogger","KnownJsonWebKeyType","KnownDeletionRecoveryLevel","KnownJsonWebKeyCurveName","KnownJsonWebKeySignatureAlgorithm","KeyRotationPolicyMapper","coreHttpCompat","coreRestPipeline","coreClient","Mappers.KeyBundle","Mappers.KeyVaultError","Mappers.KeyCreateParameters","Parameters.apiVersion","Parameters.vaultBaseUrl","Parameters.keyName","Parameters.contentType","Parameters.accept","Mappers.KeyImportParameters","Mappers.DeletedKeyBundle","Parameters.keyName1","Mappers.KeyUpdateParameters","Parameters.keyVersion","Mappers.KeyListResult","Parameters.maxresults","Mappers.BackupKeyResult","Mappers.KeyRestoreParameters","Mappers.KeyOperationResult","Mappers.KeyOperationsParameters","Mappers.KeySignParameters","Mappers.KeyVerifyResult","Mappers.KeyVerifyParameters","Mappers.KeyReleaseResult","Mappers.KeyReleaseParameters","Mappers.DeletedKeyListResult","Mappers.KeyRotationPolicy","Parameters.keyRotationPolicy","Mappers.RandomBytes","Mappers.GetRandomBytesRequest","Parameters.nextLink","createTracingClient","Poller","delay","KnownKeyOperations","KnownKeyExportEncryptionAlgorithm","cryptoCreateHash","cryptoCreateVerify","cryptoRandomBytes","__rest","bearerTokenAuthenticationPolicy","RSA_PKCS1_PADDING","RSA_PKCS1_OAEP_PADDING","publicEncrypt","crypto","isRestError","KnownEncryptionAlgorithms","__await","__asyncValues"],"mappings":"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"}