@azure/keyvault-certificates 4.4.0-beta.2 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -1
- package/README.md +14 -11
- package/dist/index.js +286 -153
- package/dist/index.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/certificatesModels.js +42 -2
- package/dist-esm/keyvault-certificates/src/certificatesModels.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/constants.js +1 -1
- package/dist-esm/keyvault-certificates/src/constants.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/generated/keyVaultClient.js +1 -1
- package/dist-esm/keyvault-certificates/src/generated/keyVaultClient.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/generated/keyVaultClientContext.js +6 -7
- package/dist-esm/keyvault-certificates/src/generated/keyVaultClientContext.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/generated/models/index.js +55 -1
- package/dist-esm/keyvault-certificates/src/generated/models/index.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/identifier.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/index.js +27 -23
- package/dist-esm/keyvault-certificates/src/index.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/create/operation.js +2 -2
- package/dist-esm/keyvault-certificates/src/lro/create/operation.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/create/poller.js +2 -2
- package/dist-esm/keyvault-certificates/src/lro/create/poller.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/delete/operation.js +1 -1
- package/dist-esm/keyvault-certificates/src/lro/delete/operation.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/delete/poller.js +2 -2
- package/dist-esm/keyvault-certificates/src/lro/delete/poller.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/keyVaultCertificatePoller.js +2 -2
- package/dist-esm/keyvault-certificates/src/lro/keyVaultCertificatePoller.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/operation/operation.js +3 -3
- package/dist-esm/keyvault-certificates/src/lro/operation/operation.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/operation/poller.js +2 -2
- package/dist-esm/keyvault-certificates/src/lro/operation/poller.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/recover/operation.js +2 -2
- package/dist-esm/keyvault-certificates/src/lro/recover/operation.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/lro/recover/poller.js +3 -3
- package/dist-esm/keyvault-certificates/src/lro/recover/poller.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/transformations.js +23 -23
- package/dist-esm/keyvault-certificates/src/transformations.js.map +1 -1
- package/dist-esm/keyvault-certificates/src/utils.js.map +1 -1
- package/dist-esm/keyvault-common/src/challengeBasedAuthenticationPolicy.js +4 -4
- package/dist-esm/keyvault-common/src/challengeBasedAuthenticationPolicy.js.map +1 -1
- package/dist-esm/keyvault-common/src/parseKeyvaultIdentifier.js +1 -1
- package/dist-esm/keyvault-common/src/parseKeyvaultIdentifier.js.map +1 -1
- package/dist-esm/keyvault-common/src/parseWWWAuthenticate.js +1 -1
- package/dist-esm/keyvault-common/src/parseWWWAuthenticate.js.map +1 -1
- package/dist-esm/keyvault-common/src/tracingHelpers.js +4 -4
- package/dist-esm/keyvault-common/src/tracingHelpers.js.map +1 -1
- package/package.json +13 -28
- package/types/keyvault-certificates.d.ts +12 -8
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/log.ts","../src/certificatesModels.ts","../src/generated/models/mappers.ts","../src/generated/models/parameters.ts","../src/generated/keyVaultClientContext.ts","../src/generated/keyVaultClient.ts","../src/constants.ts","../../keyvault-common/src/parseWWWAuthenticate.ts","../../keyvault-common/src/challengeBasedAuthenticationPolicy.ts","../../keyvault-common/src/parseKeyvaultIdentifier.ts","../../keyvault-common/src/tracingHelpers.ts","../src/lro/keyVaultCertificatePoller.ts","../src/identifier.ts","../src/transformations.ts","../src/lro/create/operation.ts","../src/lro/create/poller.ts","../src/lro/operation/operation.ts","../src/lro/operation/poller.ts","../src/lro/delete/operation.ts","../src/lro/delete/poller.ts","../src/lro/recover/operation.ts","../src/lro/recover/poller.ts","../src/utils.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-certificates\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as coreHttp from \"@azure/core-http\";\nimport {\n DeletionRecoveryLevel,\n KeyUsageType,\n JsonWebKeyType as CertificateKeyType,\n JsonWebKeyCurveName as CertificateKeyCurveName\n} from \"./generated/models\";\n\n/**\n * The latest supported KeyVault service API version\n */\nexport const LATEST_API_VERSION = \"7.3-preview\";\n\n/**\n * The optional parameters accepted by the KeyVault's KeyClient\n */\nexport interface CertificateClientOptions extends coreHttp.PipelineOptions {\n /**\n * The accepted versions of the KeyVault's service API.\n */\n serviceVersion?: \"7.0\" | \"7.1\" | \"7.2\" | \"7.3-preview\";\n}\n\n/**\n * The key vault server error.\n */\nexport interface CertificateOperationError {\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 * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly innerError?: CertificateOperationError;\n}\n\n/**\n * The key vault server error model.\n * @deprecated - Please use {@link CertificateOperationError} instead.\n */\n// This was re-exported as-is from generated code in 4.1; however, we should only be using `CertificateOperationError`.\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 * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly innerError?: ErrorModel;\n}\n\n/**\n * A certificate operation is returned in case of asynchronous requests.\n */\nexport interface CertificateOperation {\n /**\n * The certificate id.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly id?: string;\n /**\n * The name of certificate.\n */\n readonly name?: string;\n /**\n * Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.\n */\n issuerName?: string;\n /**\n * Type of certificate to be requested from the issuer provider.\n */\n certificateType?: string;\n /**\n * Indicates if the certificates generated under this policy should be published to certificate\n * transparency logs.\n */\n certificateTransparency?: boolean;\n /**\n * The certificate signing request (CSR) that is being used in the certificate operation.\n */\n csr?: Uint8Array;\n /**\n * Indicates if cancellation was requested on the certificate operation.\n */\n cancellationRequested?: boolean;\n /**\n * Status of the certificate operation.\n */\n status?: string;\n /**\n * The status details of the certificate operation.\n */\n statusDetails?: string;\n /**\n * Error encountered, if any, during the certificate operation.\n */\n error?: CertificateOperationError;\n /**\n * Location which contains the result of the certificate operation.\n */\n target?: string;\n /**\n * Identifier for the certificate operation.\n */\n requestId?: string;\n /**\n * The vault URI.\n */\n readonly vaultUrl?: string;\n}\n\n/**\n * Defines values for contentType.\n * Possible values include: 'application/x-pem-file', 'application/x-pkcs12'\n * @readonly\n */\nexport type CertificateContentType = \"application/x-pem-file\" | \"application/x-pkcs12\" | undefined;\n\n/**\n * An interface representing a certificate without the certificate's policy\n */\nexport interface KeyVaultCertificate {\n /**\n * CER contents of x509 certificate.\n */\n cer?: Uint8Array;\n /**\n * Certificate identifier.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n id?: string;\n /**\n * The key id.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly keyId?: string;\n /**\n * The secret id.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly secretId?: string;\n /**\n * The name of certificate.\n */\n readonly name: string;\n /**\n * The properties of the certificate\n */\n properties: CertificateProperties;\n}\n\n/**\n * An interface representing a certificate with its policy\n */\nexport interface KeyVaultCertificateWithPolicy extends KeyVaultCertificate {\n /**\n * The management policy.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly policy?: CertificatePolicy;\n}\n\n/**\n * Well known issuers for choosing a default\n */\nexport enum WellKnownIssuerNames {\n /**\n * For self signed certificates\n */\n Self = \"Self\",\n /**\n * For certificates whose issuer will be defined later\n */\n Unknown = \"Unknown\"\n}\n\n/**\n * An array with one property at minimum.\n */\nexport type ArrayOneOrMore<T> = {\n 0: T;\n} & Array<T>;\n\n/**\n * An interface representing the alternative names of the subject of a certificate policy.\n */\nexport interface SubjectAlternativeNamesAll {\n /**\n * Email addresses.\n */\n emails: ArrayOneOrMore<string>;\n /**\n * Domain names.\n */\n dnsNames: ArrayOneOrMore<string>;\n /**\n * User principal names.\n */\n userPrincipalNames: ArrayOneOrMore<string>;\n}\n\n/**\n * Alternatives to the subject property.\n * If present, it should at least have one of the properties of SubjectAlternativeNamesAll.\n */\nexport type SubjectAlternativeNames = RequireAtLeastOne<SubjectAlternativeNamesAll>;\n\n/**\n * Details of the organization administrator of the certificate issuer.\n */\nexport interface AdministratorContact {\n /**\n * First name.\n */\n firstName?: string;\n /**\n * Last name.\n */\n lastName?: string;\n /**\n * Email address.\n */\n email?: string;\n /**\n * Phone number.\n */\n phone?: string;\n}\n\n/**\n * Action and its trigger that will be performed by Key Vault over the lifetime of a certificate.\n */\nexport interface LifetimeAction {\n /**\n * Percentage of lifetime at which to trigger. Value should be between 1 and 99.\n */\n lifetimePercentage?: number;\n /**\n * Days before expiry to attempt renewal. Value should be between 1 and validity_in_months\n * multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 *\n * 27).\n */\n daysBeforeExpiry?: number;\n /**\n * The action that will be executed.\n */\n action?: CertificatePolicyAction;\n}\n\n/**\n * The action that will be executed.\n */\nexport type CertificatePolicyAction = \"EmailContacts\" | \"AutoRenew\";\n\n/**\n * An interface representing a certificate's policy (without the subject properties).\n */\nexport interface CertificatePolicyProperties {\n /**\n * Indicates if the certificates generated under this policy should be published to certificate\n * transparency logs.\n */\n certificateTransparency?: boolean;\n /**\n * The media type (MIME type).\n *\n * Set to `application/x-pkcs12` when the certificate contains your PKCS#12/PFX bytes,\n * or to `application/x-pem-file` when the certificate contains your ASCII PEM-encoded bytes.\n */\n contentType?: CertificateContentType;\n /**\n * Type of certificate to be requested from the issuer provider.\n */\n certificateType?: string;\n /**\n * When the certificate was created.\n */\n readonly createdOn?: Date;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Whether or not the certificate can be exported\n */\n exportable?: boolean;\n /**\n * The enhanced key usage.\n */\n enhancedKeyUsage?: string[];\n /**\n * Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.\n */\n issuerName?: WellKnownIssuerNames | string;\n /**\n * Elliptic curve name. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n keyCurveName?: CertificateKeyCurveName;\n /**\n * The key size in bits. For example: 2048, 3072, or 4096 for RSA.\n */\n keySize?: number;\n /**\n * The type of key pair to be used for the certificate. Possible values include: 'EC', 'EC-HSM',\n * 'RSA', 'RSA-HSM', 'oct'\n */\n keyType?: CertificateKeyType;\n /**\n * List of key usages.\n */\n keyUsage?: KeyUsageType[];\n /**\n * Actions that will be performed by Key Vault over the lifetime of a certificate.\n */\n lifetimeActions?: LifetimeAction[];\n /**\n * Indicates if the same key pair will be used on certificate renewal.\n */\n reuseKey?: boolean;\n /**\n * When the object was updated.\n */\n readonly updatedOn?: Date;\n /**\n * The duration that the certificate is valid in months.\n */\n validityInMonths?: number;\n}\n\n/**\n * An interface representing the possible subject properties of a certificate's policy.\n * The final type requires at least one of these properties to exist.\n */\nexport interface PolicySubjectProperties {\n /**\n * The subject name. Should be a valid X509 distinguished Name.\n */\n subject: string;\n /**\n * The subject alternative names.\n */\n subjectAlternativeNames: SubjectAlternativeNames;\n}\n\n/**\n * An type representing a certificate's policy with at least one of the subject properties.\n */\nexport type CertificatePolicy = CertificatePolicyProperties &\n RequireAtLeastOne<PolicySubjectProperties>;\n\n/**\n * A type representing a certificate's policy for import which does not require a SAN or a Subject\n */\nexport type ImportCertificatePolicy = CertificatePolicyProperties &\n Partial<PolicySubjectProperties>;\n\n/**\n * The DefaultCertificatePolicy exports values that\n * are useful as default parameters to methods that\n * modify the certificate's policy.\n */\nexport const DefaultCertificatePolicy = {\n issuerName: \"Self\",\n subject: \"cn=MyCert\"\n};\n\n/**\n * An interface representing the properties of a certificate\n */\nexport interface CertificateProperties {\n /**\n * When the certificate was created.\n */\n readonly createdOn?: Date;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Expiry date in UTC.\n */\n readonly expiresOn?: Date;\n /**\n * Certificate identifier.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly id?: string;\n /**\n * The name of certificate.\n */\n readonly name?: string;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Reflects the deletion recovery level currently in effect for certificates in the current\n * vault. If it contains 'Purgeable', the certificate can be permanently deleted by a privileged\n * user; otherwise, only the system can purge the certificate, at the end of the retention\n * interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable',\n * 'Recoverable+ProtectedSubscription'\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /**\n * Application specific\n * metadata in the form of key-value pairs.\n */\n tags?: CertificateTags;\n /**\n * When the issuer was updated.\n */\n readonly updatedOn?: Date;\n /**\n * The vault URI.\n */\n readonly vaultUrl?: string;\n /**\n * The version of certificate. May be undefined.\n */\n readonly version?: string;\n /**\n * Thumbprint of the certificate.\n */\n readonly x509Thumbprint?: Uint8Array;\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/**\n * An interface representing a deleted certificate.\n */\nexport interface DeletedCertificate extends KeyVaultCertificateWithPolicy {\n /**\n * The time when the certificate was deleted, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly deletedOn?: Date;\n /**\n * The url of the recovery object, used to\n * identify and recover the deleted certificate.\n */\n readonly recoveryId?: string;\n /**\n * The time when the certificate is scheduled\n * 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\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginCreateCertificate}, {@link beginDeleteCertificate} and {@link beginRecoverDeletedCertificate}\n */\nexport interface CertificatePollerOptions extends coreHttp.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 beginCreateCertificate}\n */\nexport interface BeginCreateCertificateOptions\n extends CreateCertificateOptions,\n CertificatePollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteCertificate}\n */\nexport type BeginDeleteCertificateOptions = CertificatePollerOptions;\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginRecoverDeletedCertificate}\n */\nexport type BeginRecoverDeletedCertificateOptions = CertificatePollerOptions;\n\n/**\n * Options for {@link getCertificateOperation}.\n */\nexport type GetCertificateOperationOptions = CertificatePollerOptions;\n\n/**\n * Options for {@link createCertificate}.\n */\nexport interface CreateCertificateOptions\n extends CertificateProperties,\n coreHttp.OperationOptions {}\n\n/**\n * Options for {@link cancelCertificateOperation}.\n */\nexport type CancelCertificateOperationOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link backupCertificate}.\n */\nexport type BackupCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link deleteCertificateOperation}.\n */\nexport type DeleteCertificateOperationOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link deleteCertificate}.\n * @internal\n */\nexport type DeleteCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link deleteContacts}.\n */\nexport type DeleteContactsOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link importCertificate}.\n */\nexport interface ImportCertificateOptions extends coreHttp.OperationOptions {\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * If the private key in base64EncodedCertificate is encrypted, the password used for encryption.\n */\n password?: string;\n /**\n * The management policy.\n */\n policy?: ImportCertificatePolicy;\n /**\n * Application specific\n * metadata in the form of key-value pairs.\n */\n tags?: CertificateTags;\n}\n\n/**\n * Options for {@link deleteIssuer}.\n */\nexport type DeleteIssuerOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link setContacts}.\n */\nexport type SetContactsOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link createIssuer}.\n */\nexport interface CreateIssuerOptions extends coreHttp.OperationOptions {\n /**\n * The user name/account name/account id.\n */\n accountId?: string;\n /**\n * The password/secret/account key.\n */\n password?: string;\n /**\n * Id of the organization.\n */\n organizationId?: string;\n /**\n * Details of the organization's administrator contacts, as provided to the issuer.\n */\n administratorContacts?: AdministratorContact[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n}\n\n/**\n * Options for {@link purgeDeletedCertificate}.\n */\nexport type PurgeDeletedCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link updateIssuer}.\n */\nexport interface UpdateIssuerOptions extends CreateIssuerOptions {\n /**\n * The issuer provider.\n */\n provider?: string;\n}\n\n/**\n * Options for {@link getContacts}.\n */\nexport type GetContactsOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getIssuer}.\n */\nexport type GetIssuerOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getPlainCertificateOperation}.\n */\nexport type GetPlainCertificateOperationOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getCertificateVersion}.\n */\nexport type GetCertificateVersionOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getCertificatePolicy}.\n */\nexport type GetCertificatePolicyOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getDeletedCertificate}.\n */\nexport type GetDeletedCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getCertificate}.\n */\nexport type GetCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing the shape of the Certificate Tags. The tags are just string key-value pairs.\n */\nexport type CertificateTags = { [propertyName: string]: string };\n\n/**\n * Options for {@link updateCertificate}.\n */\nexport interface UpdateCertificatePropertiesOptions\n extends CertificateProperties,\n coreHttp.OperationOptions {}\n\n/**\n * Options for {@link updateCertificatePolicy}.\n */\nexport type UpdateCertificatePolicyOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing the properties of a certificate issuer\n */\nexport interface IssuerProperties {\n /**\n * Certificate Identifier.\n */\n id?: string;\n /**\n * Name of the issuer.\n */\n readonly name?: string;\n /**\n * The issuer provider.\n */\n provider?: string;\n}\n\n/**\n * An interface representing the properties of an issuer.\n */\nexport interface CertificateIssuer extends IssuerProperties {\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * When the issuer was created.\n */\n readonly createdOn?: Date;\n /**\n * When the issuer was updated.\n */\n readonly updatedOn?: Date;\n /**\n * The user name/account name/account id.\n */\n accountId?: string;\n /**\n * The password/secret/account key.\n */\n password?: string;\n /**\n * Id of the organization.\n */\n organizationId?: string;\n /**\n * Details of the organization's administrator contacts, as provided to the issuer.\n */\n administratorContacts?: AdministratorContact[];\n}\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listPropertiesOfCertificates}.\n */\nexport interface ListPropertiesOfCertificatesOptions extends coreHttp.OperationOptions {\n /**\n * Specifies whether to include certificates which are not completely provisioned.\n */\n includePending?: boolean;\n}\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listPropertiesOfCertificateVersions}.\n */\nexport type ListPropertiesOfCertificateVersionsOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listPropertiesOfIssuers}.\n */\nexport type ListPropertiesOfIssuersOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listDeletedCertificates}.\n */\nexport interface ListDeletedCertificatesOptions extends coreHttp.OperationOptions {\n /**\n * Specifies whether to include certificates which are not completely provisioned.\n */\n includePending?: boolean;\n}\n\n/**\n * An interface representing optional parameters for {@link mergeCertificate}.\n */\nexport type MergeCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for {@link recoverDeletedCertificate}.\n * @internal\n */\nexport type RecoverDeletedCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for {@link restoreCertificateBackup}.\n */\nexport type RestoreCertificateBackupOptions = coreHttp.OperationOptions;\n\n/**\n * The shape of the contact information for the vault certificates.\n */\nexport interface CertificateContactAll {\n /**\n * Email address of the contact\n */\n email: string;\n /**\n * Name of the contact\n */\n name: string;\n /**\n * Phone number of the contact\n */\n phone: string;\n}\n\n/**\n * RequireAtLeastOne helps create a type where at least one of the properties of an interface (can be any property) is required to exist.\n *\n * This works because of TypeScript's utility types: https://www.typescriptlang.org/docs/handbook/utility-types.html\n * Let's examine it:\n * - `[K in keyof T]-?` this property (K) is valid only if it has the same name as any property of T.\n * - `Required<Pick<T, K>>` makes a new type from T with just the current property in the iteration, and marks it as required\n * - `Partial<Pick<T, Exclude<keyof T, K>>>` makes a new type with all the properties of T, except from the property K.\n * - `&` is what unites the type with only one required property from `Required<...>` with all the optional properties from `Partial<...>`.\n * - `[keyof T]` ensures that only properties of T are allowed.\n */\nexport type RequireAtLeastOne<T> = {\n [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;\n}[keyof T];\n\n/**\n * The contact information for the vault certificates.\n * Each contact will have at least just one of the properties of CertificateContactAll,\n * which are: emailAddress, name or phone.\n */\nexport type CertificateContact = RequireAtLeastOne<CertificateContactAll> | undefined;\n\n/** Known values of {@link CertificateKeyCurveName} that the service accepts. */\nexport enum KnownCertificateKeyCurveNames {\n /**\n * P-256 Key Curve.\n */\n P256 = \"P-256\",\n /**\n * P-384 Key Curve.\n */\n P384 = \"P-384\",\n /**\n * P-521 Key Curve.\n */\n P521 = \"P-521\",\n /**\n * P-256K Key Curve.\n */\n P256K = \"P-256K\"\n}\n\n/** Known values of {@link CertificateKeyType} that the service accepts. */\nexport enum KnownCertificateKeyTypes {\n /**\n * EC Key Type.\n */\n EC = \"EC\",\n /**\n * EC-HSM Key Type.\n */\n ECHSM = \"EC-HSM\",\n /**\n * RSA Key Type.\n */\n RSA = \"RSA\",\n /**\n * RSA-HSM Key Type.\n */\n RSAHSM = \"RSA-HSM\",\n /**\n * oct Key Type\n */\n Oct = \"oct\",\n /**\n * oct-HSM Key Type\n */\n OctHSM = \"oct-HSM\"\n}\n\n/** Known values of {@link KeyUsageType} that the service accepts. */\nexport const enum KnownKeyUsageTypes {\n /**\n * DigitalSignature Usage Type.\n */\n DigitalSignature = \"digitalSignature\",\n /**\n * NonRepudiation Usage Type.\n */\n NonRepudiation = \"nonRepudiation\",\n /**\n * KeyEncipherment Usage Type.\n */\n KeyEncipherment = \"keyEncipherment\",\n /**\n * DataEncipherment Usage Type.\n */\n DataEncipherment = \"dataEncipherment\",\n /**\n * KeyAgreement Usage Type.\n */\n KeyAgreement = \"keyAgreement\",\n /**\n * KeyCertSign Usage Type.\n */\n KeyCertSign = \"keyCertSign\",\n /**\n * CRLSign Usage Type.\n */\n CRLSign = \"cRLSign\",\n /**\n * EncipherOnly Usage Type.\n */\n EncipherOnly = \"encipherOnly\",\n /**\n * DecipherOnly Usage Type.\n */\n DecipherOnly = \"decipherOnly\"\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 coreHttp from \"@azure/core-http\";\n\nexport const CertificateListResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"CertificateItem\"\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 CertificateItem: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateItem\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n x509Thumbprint: {\n serializedName: \"x5t\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const Attributes: coreHttp.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 KeyVaultError: coreHttp.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: coreHttp.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 CertificateBundle: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateBundle\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n kid: {\n serializedName: \"kid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n sid: {\n serializedName: \"sid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n x509Thumbprint: {\n serializedName: \"x5t\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n policy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n cer: {\n serializedName: \"cer\",\n type: {\n name: \"ByteArray\"\n }\n },\n contentType: {\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificatePolicy: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n keyProperties: {\n serializedName: \"key_props\",\n type: {\n name: \"Composite\",\n className: \"KeyProperties\"\n }\n },\n secretProperties: {\n serializedName: \"secret_props\",\n type: {\n name: \"Composite\",\n className: \"SecretProperties\"\n }\n },\n x509CertificateProperties: {\n serializedName: \"x509_props\",\n type: {\n name: \"Composite\",\n className: \"X509CertificateProperties\"\n }\n },\n lifetimeActions: {\n serializedName: \"lifetime_actions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"LifetimeAction\"\n }\n }\n }\n },\n issuerParameters: {\n serializedName: \"issuer\",\n type: {\n name: \"Composite\",\n className: \"IssuerParameters\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n }\n }\n }\n};\n\nexport const KeyProperties: coreHttp.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 SecretProperties: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SecretProperties\",\n modelProperties: {\n contentType: {\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const X509CertificateProperties: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"X509CertificateProperties\",\n modelProperties: {\n subject: {\n serializedName: \"subject\",\n type: {\n name: \"String\"\n }\n },\n ekus: {\n serializedName: \"ekus\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n subjectAlternativeNames: {\n serializedName: \"sans\",\n type: {\n name: \"Composite\",\n className: \"SubjectAlternativeNames\"\n }\n },\n keyUsage: {\n serializedName: \"key_usage\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n validityInMonths: {\n constraints: {\n InclusiveMinimum: 0\n },\n serializedName: \"validity_months\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const SubjectAlternativeNames: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SubjectAlternativeNames\",\n modelProperties: {\n emails: {\n serializedName: \"emails\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n dnsNames: {\n serializedName: \"dns_names\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n upns: {\n serializedName: \"upns\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const LifetimeAction: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeAction\",\n modelProperties: {\n trigger: {\n serializedName: \"trigger\",\n type: {\n name: \"Composite\",\n className: \"Trigger\"\n }\n },\n action: {\n serializedName: \"action\",\n type: {\n name: \"Composite\",\n className: \"Action\"\n }\n }\n }\n }\n};\n\nexport const Trigger: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Trigger\",\n modelProperties: {\n lifetimePercentage: {\n constraints: {\n InclusiveMaximum: 99,\n InclusiveMinimum: 1\n },\n serializedName: \"lifetime_percentage\",\n type: {\n name: \"Number\"\n }\n },\n daysBeforeExpiry: {\n serializedName: \"days_before_expiry\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const Action: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Action\",\n modelProperties: {\n actionType: {\n serializedName: \"action_type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"EmailContacts\", \"AutoRenew\"]\n }\n }\n }\n }\n};\n\nexport const IssuerParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerParameters\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\"\n }\n },\n certificateType: {\n serializedName: \"cty\",\n type: {\n name: \"String\"\n }\n },\n certificateTransparency: {\n serializedName: \"cert_transparency\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const Contacts: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Contacts\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n contactList: {\n serializedName: \"contacts\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Contact\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const Contact: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Contact\",\n modelProperties: {\n emailAddress: {\n serializedName: \"email\",\n type: {\n name: \"String\"\n }\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\"\n }\n },\n phone: {\n serializedName: \"phone\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CertificateIssuerListResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerItem\"\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 CertificateIssuerItem: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerItem\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\"\n }\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CertificateIssuerSetParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerSetParameters\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n credentials: {\n serializedName: \"credentials\",\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\"\n }\n },\n organizationDetails: {\n serializedName: \"org_details\",\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\"\n }\n }\n }\n }\n};\n\nexport const IssuerCredentials: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\",\n modelProperties: {\n accountId: {\n serializedName: \"account_id\",\n type: {\n name: \"String\"\n }\n },\n password: {\n serializedName: \"pwd\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OrganizationDetails: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\"\n }\n },\n adminDetails: {\n serializedName: \"admin_details\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"AdministratorDetails\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const AdministratorDetails: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"AdministratorDetails\",\n modelProperties: {\n firstName: {\n serializedName: \"first_name\",\n type: {\n name: \"String\"\n }\n },\n lastName: {\n serializedName: \"last_name\",\n type: {\n name: \"String\"\n }\n },\n emailAddress: {\n serializedName: \"email\",\n type: {\n name: \"String\"\n }\n },\n phone: {\n serializedName: \"phone\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const IssuerAttributes: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\",\n modelProperties: {\n enabled: {\n serializedName: \"enabled\",\n type: {\n name: \"Boolean\"\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 IssuerBundle: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerBundle\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\"\n }\n },\n credentials: {\n serializedName: \"credentials\",\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\"\n }\n },\n organizationDetails: {\n serializedName: \"org_details\",\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\"\n }\n }\n }\n }\n};\n\nexport const CertificateIssuerUpdateParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerUpdateParameters\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\"\n }\n },\n credentials: {\n serializedName: \"credentials\",\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\"\n }\n },\n organizationDetails: {\n serializedName: \"org_details\",\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\"\n }\n }\n }\n }\n};\n\nexport const CertificateCreateParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateCreateParameters\",\n modelProperties: {\n certificatePolicy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificateOperation: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateOperation\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n issuerParameters: {\n serializedName: \"issuer\",\n type: {\n name: \"Composite\",\n className: \"IssuerParameters\"\n }\n },\n csr: {\n serializedName: \"csr\",\n type: {\n name: \"ByteArray\"\n }\n },\n cancellationRequested: {\n serializedName: \"cancellation_requested\",\n type: {\n name: \"Boolean\"\n }\n },\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\"\n }\n },\n statusDetails: {\n serializedName: \"status_details\",\n type: {\n name: \"String\"\n }\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n },\n target: {\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"request_id\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CertificateImportParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateImportParameters\",\n modelProperties: {\n base64EncodedCertificate: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n password: {\n serializedName: \"pwd\",\n type: {\n name: \"String\"\n }\n },\n certificatePolicy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificateUpdateParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateUpdateParameters\",\n modelProperties: {\n certificatePolicy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificateOperationUpdateParameter: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateOperationUpdateParameter\",\n modelProperties: {\n cancellationRequested: {\n serializedName: \"cancellation_requested\",\n required: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const CertificateMergeParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateMergeParameters\",\n modelProperties: {\n x509Certificates: {\n serializedName: \"x5c\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"ByteArray\"\n }\n }\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const BackupCertificateResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BackupCertificateResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const CertificateRestoreParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateRestoreParameters\",\n modelProperties: {\n certificateBundleBackup: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const DeletedCertificateListResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateItem\"\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 PendingCertificateSigningRequestResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PendingCertificateSigningRequestResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedCertificateItem: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateItem\",\n modelProperties: {\n ...CertificateItem.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 CertificateAttributes: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\",\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 }\n }\n};\n\nexport const DeletedCertificateBundle: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateBundle\",\n modelProperties: {\n ...CertificateBundle.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-http\";\nimport {\n Contacts as ContactsMapper,\n CertificateIssuerSetParameters as CertificateIssuerSetParametersMapper,\n CertificateIssuerUpdateParameters as CertificateIssuerUpdateParametersMapper,\n CertificateCreateParameters as CertificateCreateParametersMapper,\n CertificateImportParameters as CertificateImportParametersMapper,\n CertificatePolicy as CertificatePolicyMapper,\n CertificateUpdateParameters as CertificateUpdateParametersMapper,\n CertificateOperationUpdateParameter as CertificateOperationUpdateParameterMapper,\n CertificateMergeParameters as CertificateMergeParametersMapper,\n CertificateRestoreParameters as CertificateRestoreParametersMapper\n} from \"../models/mappers\";\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 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 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 includePending: OperationQueryParameter = {\n parameterPath: [\"options\", \"includePending\"],\n mapper: {\n serializedName: \"includePending\",\n type: {\n name: \"Boolean\"\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 certificateName: OperationURLParameter = {\n parameterPath: \"certificateName\",\n mapper: {\n serializedName: \"certificate-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\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 contacts: OperationParameter = {\n parameterPath: \"contacts\",\n mapper: ContactsMapper\n};\n\nexport const provider: OperationParameter = {\n parameterPath: \"provider\",\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const credentials: OperationParameter = {\n parameterPath: [\"options\", \"credentials\"],\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const organizationDetails: OperationParameter = {\n parameterPath: [\"options\", \"organizationDetails\"],\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const attributes: OperationParameter = {\n parameterPath: [\"options\", \"attributes\"],\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const issuerName: OperationURLParameter = {\n parameterPath: \"issuerName\",\n mapper: {\n serializedName: \"issuer-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const provider1: OperationParameter = {\n parameterPath: [\"options\", \"provider\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const credentials1: OperationParameter = {\n parameterPath: [\"options\", \"credentials\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const organizationDetails1: OperationParameter = {\n parameterPath: [\"options\", \"organizationDetails\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const attributes1: OperationParameter = {\n parameterPath: [\"options\", \"attributes\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const certificatePolicy: OperationParameter = {\n parameterPath: [\"options\", \"certificatePolicy\"],\n mapper: CertificateCreateParametersMapper\n};\n\nexport const certificateAttributes: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateCreateParametersMapper\n};\n\nexport const tags: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateCreateParametersMapper\n};\n\nexport const certificateName1: OperationURLParameter = {\n parameterPath: \"certificateName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[0-9a-zA-Z-]+$\")\n },\n serializedName: \"certificate-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const base64EncodedCertificate: OperationParameter = {\n parameterPath: \"base64EncodedCertificate\",\n mapper: CertificateImportParametersMapper\n};\n\nexport const password: OperationParameter = {\n parameterPath: [\"options\", \"password\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const certificatePolicy1: OperationParameter = {\n parameterPath: [\"options\", \"certificatePolicy\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const certificateAttributes1: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const tags1: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const certificatePolicy2: OperationParameter = {\n parameterPath: \"certificatePolicy\",\n mapper: CertificatePolicyMapper\n};\n\nexport const certificatePolicy3: OperationParameter = {\n parameterPath: [\"options\", \"certificatePolicy\"],\n mapper: CertificateUpdateParametersMapper\n};\n\nexport const certificateAttributes2: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateUpdateParametersMapper\n};\n\nexport const tags2: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateUpdateParametersMapper\n};\n\nexport const certificateVersion: OperationURLParameter = {\n parameterPath: \"certificateVersion\",\n mapper: {\n serializedName: \"certificate-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const cancellationRequested: OperationParameter = {\n parameterPath: \"cancellationRequested\",\n mapper: CertificateOperationUpdateParameterMapper\n};\n\nexport const x509Certificates: OperationParameter = {\n parameterPath: \"x509Certificates\",\n mapper: CertificateMergeParametersMapper\n};\n\nexport const certificateAttributes3: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateMergeParametersMapper\n};\n\nexport const tags3: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateMergeParametersMapper\n};\n\nexport const certificateBundleBackup: OperationParameter = {\n parameterPath: \"certificateBundleBackup\",\n mapper: CertificateRestoreParametersMapper\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 coreHttp from \"@azure/core-http\";\nimport { ApiVersion73Preview, KeyVaultClientOptionalParams } from \"./models\";\n\nconst packageName = \"@azure/keyvault-certificates\";\nexport const packageVersion = \"4.4.0-beta.2\";\n\n/** @hidden */\nexport class KeyVaultClientContext extends coreHttp.ServiceClient {\n apiVersion: ApiVersion73Preview;\n\n /**\n * Initializes a new instance of the KeyVaultClientContext class.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(\n apiVersion: ApiVersion73Preview,\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\n if (!options.userAgent) {\n const defaultUserAgent = coreHttp.getDefaultUserAgentValue();\n options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;\n }\n\n super(undefined, options);\n\n this.requestContentType = \"application/json; charset=utf-8\";\n\n this.baseUri = options.endpoint || \"{vaultBaseUrl}\";\n\n // Parameter assignments\n this.apiVersion = apiVersion;\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 * as coreHttp from \"@azure/core-http\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport { KeyVaultClientContext } from \"./keyVaultClientContext\";\nimport {\n KeyVaultClientOptionalParams,\n ApiVersion73Preview,\n KeyVaultClientGetCertificatesOptionalParams,\n KeyVaultClientGetCertificatesResponse,\n KeyVaultClientDeleteCertificateResponse,\n Contacts,\n KeyVaultClientSetCertificateContactsResponse,\n KeyVaultClientGetCertificateContactsResponse,\n KeyVaultClientDeleteCertificateContactsResponse,\n KeyVaultClientGetCertificateIssuersOptionalParams,\n KeyVaultClientGetCertificateIssuersResponse,\n KeyVaultClientSetCertificateIssuerOptionalParams,\n KeyVaultClientSetCertificateIssuerResponse,\n KeyVaultClientUpdateCertificateIssuerOptionalParams,\n KeyVaultClientUpdateCertificateIssuerResponse,\n KeyVaultClientGetCertificateIssuerResponse,\n KeyVaultClientDeleteCertificateIssuerResponse,\n KeyVaultClientCreateCertificateOptionalParams,\n KeyVaultClientCreateCertificateResponse,\n KeyVaultClientImportCertificateOptionalParams,\n KeyVaultClientImportCertificateResponse,\n KeyVaultClientGetCertificateVersionsOptionalParams,\n KeyVaultClientGetCertificateVersionsResponse,\n KeyVaultClientGetCertificatePolicyResponse,\n CertificatePolicy,\n KeyVaultClientUpdateCertificatePolicyResponse,\n KeyVaultClientUpdateCertificateOptionalParams,\n KeyVaultClientUpdateCertificateResponse,\n KeyVaultClientGetCertificateResponse,\n KeyVaultClientUpdateCertificateOperationResponse,\n KeyVaultClientGetCertificateOperationResponse,\n KeyVaultClientDeleteCertificateOperationResponse,\n KeyVaultClientMergeCertificateOptionalParams,\n KeyVaultClientMergeCertificateResponse,\n KeyVaultClientBackupCertificateResponse,\n KeyVaultClientRestoreCertificateResponse,\n KeyVaultClientGetDeletedCertificatesOptionalParams,\n KeyVaultClientGetDeletedCertificatesResponse,\n KeyVaultClientGetDeletedCertificateResponse,\n KeyVaultClientRecoverDeletedCertificateResponse,\n KeyVaultClientGetCertificatesNextOptionalParams,\n KeyVaultClientGetCertificatesNextResponse,\n KeyVaultClientGetCertificateIssuersNextOptionalParams,\n KeyVaultClientGetCertificateIssuersNextResponse,\n KeyVaultClientGetCertificateVersionsNextOptionalParams,\n KeyVaultClientGetCertificateVersionsNextResponse,\n KeyVaultClientGetDeletedCertificatesNextOptionalParams,\n KeyVaultClientGetDeletedCertificatesNextResponse\n} from \"./models\";\n\n/** @hidden */\nexport class KeyVaultClient extends KeyVaultClientContext {\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: ApiVersion73Preview,\n options?: KeyVaultClientOptionalParams\n ) {\n super(apiVersion, options);\n }\n\n /**\n * The GetCertificates operation returns the set of certificates resources in the specified key vault.\n * This operation requires the certificates/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getCertificates(\n vaultBaseUrl: string,\n options?: KeyVaultClientGetCertificatesOptionalParams\n ): Promise<KeyVaultClientGetCertificatesResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificatesOperationSpec\n ) as Promise<KeyVaultClientGetCertificatesResponse>;\n }\n\n /**\n * Deletes all versions of a certificate object along with its associated policy. Delete certificate\n * cannot be used to remove individual versions of a certificate object. This operation requires the\n * certificates/delete permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n deleteCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientDeleteCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateOperationSpec\n ) as Promise<KeyVaultClientDeleteCertificateResponse>;\n }\n\n /**\n * Sets the certificate contacts for the specified key vault. This operation requires the\n * certificates/managecontacts permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param contacts The contacts for the key vault certificate.\n * @param options The options parameters.\n */\n setCertificateContacts(\n vaultBaseUrl: string,\n contacts: Contacts,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientSetCertificateContactsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n contacts,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n setCertificateContactsOperationSpec\n ) as Promise<KeyVaultClientSetCertificateContactsResponse>;\n }\n\n /**\n * The GetCertificateContacts operation returns the set of certificate contact resources in the\n * specified key vault. This operation requires the certificates/managecontacts permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getCertificateContacts(\n vaultBaseUrl: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientGetCertificateContactsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateContactsOperationSpec\n ) as Promise<KeyVaultClientGetCertificateContactsResponse>;\n }\n\n /**\n * Deletes the certificate contacts for a specified key vault certificate. This operation requires the\n * certificates/managecontacts permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n deleteCertificateContacts(\n vaultBaseUrl: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientDeleteCertificateContactsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateContactsOperationSpec\n ) as Promise<KeyVaultClientDeleteCertificateContactsResponse>;\n }\n\n /**\n * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified\n * key vault. This operation requires the certificates/manageissuers/getissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getCertificateIssuers(\n vaultBaseUrl: string,\n options?: KeyVaultClientGetCertificateIssuersOptionalParams\n ): Promise<KeyVaultClientGetCertificateIssuersResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateIssuersOperationSpec\n ) as Promise<KeyVaultClientGetCertificateIssuersResponse>;\n }\n\n /**\n * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation\n * requires the certificates/setissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param provider The issuer provider.\n * @param options The options parameters.\n */\n setCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n provider: string,\n options?: KeyVaultClientSetCertificateIssuerOptionalParams\n ): Promise<KeyVaultClientSetCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n provider,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n setCertificateIssuerOperationSpec\n ) as Promise<KeyVaultClientSetCertificateIssuerResponse>;\n }\n\n /**\n * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity.\n * This operation requires the certificates/setissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param options The options parameters.\n */\n updateCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n options?: KeyVaultClientUpdateCertificateIssuerOptionalParams\n ): Promise<KeyVaultClientUpdateCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificateIssuerOperationSpec\n ) as Promise<KeyVaultClientUpdateCertificateIssuerResponse>;\n }\n\n /**\n * The GetCertificateIssuer operation returns the specified certificate issuer resources in the\n * specified key vault. This operation requires the certificates/manageissuers/getissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param options The options parameters.\n */\n getCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientGetCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateIssuerOperationSpec\n ) as Promise<KeyVaultClientGetCertificateIssuerResponse>;\n }\n\n /**\n * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the\n * vault. This operation requires the certificates/manageissuers/deleteissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param options The options parameters.\n */\n deleteCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientDeleteCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateIssuerOperationSpec\n ) as Promise<KeyVaultClientDeleteCertificateIssuerResponse>;\n }\n\n /**\n * If this is the first version, the certificate resource is created. This operation requires the\n * certificates/create permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n createCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: KeyVaultClientCreateCertificateOptionalParams\n ): Promise<KeyVaultClientCreateCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n createCertificateOperationSpec\n ) as Promise<KeyVaultClientCreateCertificateResponse>;\n }\n\n /**\n * Imports an existing valid certificate, containing a private key, into Azure Key Vault. This\n * operation requires the certificates/import permission. The certificate to be imported can be in\n * either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as\n * well as x509 certificates. Key Vault will only accept a key in PKCS#8 format.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import.\n * This certificate needs to contain the private key.\n * @param options The options parameters.\n */\n importCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n base64EncodedCertificate: string,\n options?: KeyVaultClientImportCertificateOptionalParams\n ): Promise<KeyVaultClientImportCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n base64EncodedCertificate,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n importCertificateOperationSpec\n ) as Promise<KeyVaultClientImportCertificateResponse>;\n }\n\n /**\n * The GetCertificateVersions operation returns the versions of a certificate in the specified key\n * vault. This operation requires the certificates/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n getCertificateVersions(\n vaultBaseUrl: string,\n certificateName: string,\n options?: KeyVaultClientGetCertificateVersionsOptionalParams\n ): Promise<KeyVaultClientGetCertificateVersionsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateVersionsOperationSpec\n ) as Promise<KeyVaultClientGetCertificateVersionsResponse>;\n }\n\n /**\n * The GetCertificatePolicy operation returns the specified certificate policy resources in the\n * specified key vault. This operation requires the certificates/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in a given key vault.\n * @param options The options parameters.\n */\n getCertificatePolicy(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientGetCertificatePolicyResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificatePolicyOperationSpec\n ) as Promise<KeyVaultClientGetCertificatePolicyResponse>;\n }\n\n /**\n * Set specified members in the certificate policy. Leave others as null. This operation requires the\n * certificates/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in the given vault.\n * @param certificatePolicy The policy for the certificate.\n * @param options The options parameters.\n */\n updateCertificatePolicy(\n vaultBaseUrl: string,\n certificateName: string,\n certificatePolicy: CertificatePolicy,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientUpdateCertificatePolicyResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n certificatePolicy,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificatePolicyOperationSpec\n ) as Promise<KeyVaultClientUpdateCertificatePolicyResponse>;\n }\n\n /**\n * The UpdateCertificate operation applies the specified update on the given certificate; the only\n * elements updated are the certificate's attributes. This operation requires the certificates/update\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in the given key vault.\n * @param certificateVersion The version of the certificate.\n * @param options The options parameters.\n */\n updateCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n certificateVersion: string,\n options?: KeyVaultClientUpdateCertificateOptionalParams\n ): Promise<KeyVaultClientUpdateCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n certificateVersion,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificateOperationSpec\n ) as Promise<KeyVaultClientUpdateCertificateResponse>;\n }\n\n /**\n * Gets information about a specific certificate. This operation requires the certificates/get\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in the given vault.\n * @param certificateVersion The version of the certificate. This URI fragment is optional. If not\n * specified, the latest version of the certificate is returned.\n * @param options The options parameters.\n */\n getCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n certificateVersion: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientGetCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n certificateVersion,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateOperationSpec\n ) as Promise<KeyVaultClientGetCertificateResponse>;\n }\n\n /**\n * Updates a certificate creation operation that is already in progress. This operation requires the\n * certificates/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param cancellationRequested Indicates if cancellation was requested on the certificate operation.\n * @param options The options parameters.\n */\n updateCertificateOperation(\n vaultBaseUrl: string,\n certificateName: string,\n cancellationRequested: boolean,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientUpdateCertificateOperationResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n cancellationRequested,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificateOperationOperationSpec\n ) as Promise<KeyVaultClientUpdateCertificateOperationResponse>;\n }\n\n /**\n * Gets the creation operation associated with a specified certificate. This operation requires the\n * certificates/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n getCertificateOperation(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientGetCertificateOperationResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateOperationOperationSpec\n ) as Promise<KeyVaultClientGetCertificateOperationResponse>;\n }\n\n /**\n * Deletes the creation operation for a specified certificate that is in the process of being created.\n * The certificate is no longer created. This operation requires the certificates/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n deleteCertificateOperation(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientDeleteCertificateOperationResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateOperationOperationSpec\n ) as Promise<KeyVaultClientDeleteCertificateOperationResponse>;\n }\n\n /**\n * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key\n * pair currently available in the service. This operation requires the certificates/create permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param x509Certificates The certificate or the certificate chain to merge.\n * @param options The options parameters.\n */\n mergeCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n x509Certificates: Uint8Array[],\n options?: KeyVaultClientMergeCertificateOptionalParams\n ): Promise<KeyVaultClientMergeCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n x509Certificates,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n mergeCertificateOperationSpec\n ) as Promise<KeyVaultClientMergeCertificateResponse>;\n }\n\n /**\n * Requests that a backup of the specified certificate be downloaded to the client. All versions of the\n * certificate will be downloaded. This operation requires the certificates/backup permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n backupCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientBackupCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n backupCertificateOperationSpec\n ) as Promise<KeyVaultClientBackupCertificateResponse>;\n }\n\n /**\n * Restores a backed up certificate, and all its versions, to a vault. This operation requires the\n * certificates/restore permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateBundleBackup The backup blob associated with a certificate bundle.\n * @param options The options parameters.\n */\n restoreCertificate(\n vaultBaseUrl: string,\n certificateBundleBackup: Uint8Array,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientRestoreCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateBundleBackup,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n restoreCertificateOperationSpec\n ) as Promise<KeyVaultClientRestoreCertificateResponse>;\n }\n\n /**\n * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a\n * deleted state and ready for recovery or purging. This operation includes deletion-specific\n * information. This operation requires the certificates/get/list permission. This operation can only\n * be enabled on soft-delete enabled vaults.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getDeletedCertificates(\n vaultBaseUrl: string,\n options?: KeyVaultClientGetDeletedCertificatesOptionalParams\n ): Promise<KeyVaultClientGetDeletedCertificatesResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getDeletedCertificatesOperationSpec\n ) as Promise<KeyVaultClientGetDeletedCertificatesResponse>;\n }\n\n /**\n * The GetDeletedCertificate operation retrieves the deleted certificate information plus its\n * attributes, such as retention interval, scheduled permanent deletion and the current deletion\n * recovery level. This operation requires the certificates/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate\n * @param options The options parameters.\n */\n getDeletedCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientGetDeletedCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getDeletedCertificateOperationSpec\n ) as Promise<KeyVaultClientGetDeletedCertificateResponse>;\n }\n\n /**\n * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified\n * certificate, without possibility for recovery. The operation is not available if the recovery level\n * does not specify 'Purgeable'. This operation requires the certificate/purge permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate\n * @param options The options parameters.\n */\n purgeDeletedCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<coreHttp.RestResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n purgeDeletedCertificateOperationSpec\n ) as Promise<coreHttp.RestResponse>;\n }\n\n /**\n * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation\n * is applicable in vaults enabled for soft-delete, and must be issued during the retention interval\n * (available in the deleted certificate's attributes). This operation requires the\n * certificates/recover permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the deleted certificate\n * @param options The options parameters.\n */\n recoverDeletedCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: coreHttp.OperationOptions\n ): Promise<KeyVaultClientRecoverDeletedCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n recoverDeletedCertificateOperationSpec\n ) as Promise<KeyVaultClientRecoverDeletedCertificateResponse>;\n }\n\n /**\n * GetCertificatesNext\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 GetCertificates method.\n * @param options The options parameters.\n */\n getCertificatesNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: KeyVaultClientGetCertificatesNextOptionalParams\n ): Promise<KeyVaultClientGetCertificatesNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificatesNextOperationSpec\n ) as Promise<KeyVaultClientGetCertificatesNextResponse>;\n }\n\n /**\n * GetCertificateIssuersNext\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 GetCertificateIssuers method.\n * @param options The options parameters.\n */\n getCertificateIssuersNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: KeyVaultClientGetCertificateIssuersNextOptionalParams\n ): Promise<KeyVaultClientGetCertificateIssuersNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateIssuersNextOperationSpec\n ) as Promise<KeyVaultClientGetCertificateIssuersNextResponse>;\n }\n\n /**\n * GetCertificateVersionsNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param nextLink The nextLink from the previous successful call to the GetCertificateVersions method.\n * @param options The options parameters.\n */\n getCertificateVersionsNext(\n vaultBaseUrl: string,\n certificateName: string,\n nextLink: string,\n options?: KeyVaultClientGetCertificateVersionsNextOptionalParams\n ): Promise<KeyVaultClientGetCertificateVersionsNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateVersionsNextOperationSpec\n ) as Promise<KeyVaultClientGetCertificateVersionsNextResponse>;\n }\n\n /**\n * GetDeletedCertificatesNext\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 GetDeletedCertificates method.\n * @param options The options parameters.\n */\n getDeletedCertificatesNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: KeyVaultClientGetDeletedCertificatesNextOptionalParams\n ): Promise<KeyVaultClientGetDeletedCertificatesNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getDeletedCertificatesNextOperationSpec\n ) as Promise<KeyVaultClientGetDeletedCertificatesNextResponse>;\n }\n}\n// Operation Specifications\nconst serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);\n\nconst getCertificatesOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst setCertificateContactsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/contacts\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.Contacts\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.contacts,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateContactsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/contacts\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Contacts\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateContactsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/contacts\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.Contacts\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificateIssuersOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateIssuerListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst setCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n provider: [\"provider\"],\n credentials: [\"options\", \"credentials\"],\n organizationDetails: [\"options\", \"organizationDetails\"],\n attributes: [\"options\", \"attributes\"]\n },\n mapper: { ...Mappers.CertificateIssuerSetParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst updateCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n provider: [\"options\", \"provider\"],\n credentials: [\"options\", \"credentials\"],\n organizationDetails: [\"options\", \"organizationDetails\"],\n attributes: [\"options\", \"attributes\"]\n },\n mapper: { ...Mappers.CertificateIssuerUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst createCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/create\",\n httpMethod: \"POST\",\n responses: {\n 202: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n certificatePolicy: [\"options\", \"certificatePolicy\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateCreateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName1],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst importCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/import\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n base64EncodedCertificate: [\"base64EncodedCertificate\"],\n password: [\"options\", \"password\"],\n certificatePolicy: [\"options\", \"certificatePolicy\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateImportParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName1],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateVersionsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/versions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificatePolicyOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/policy\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificatePolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateCertificatePolicyOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/policy\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificatePolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.certificatePolicy2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst updateCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/{certificate-version}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n certificatePolicy: [\"options\", \"certificatePolicy\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.certificateName,\n Parameters.certificateVersion\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/{certificate-version}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.certificateName,\n Parameters.certificateVersion\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateCertificateOperationOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { cancellationRequested: [\"cancellationRequested\"] },\n mapper: { ...Mappers.CertificateOperationUpdateParameter, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateOperationOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateOperationOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst mergeCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending/merge\",\n httpMethod: \"POST\",\n responses: {\n 201: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n x509Certificates: [\"x509Certificates\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateMergeParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst backupCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/backup\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.BackupCertificateResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst restoreCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/restore\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { certificateBundleBackup: [\"certificateBundleBackup\"] },\n mapper: { ...Mappers.CertificateRestoreParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getDeletedCertificatesOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates/{certificate-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst purgeDeletedCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates/{certificate-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.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst recoverDeletedCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates/{certificate-name}/recover\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificatesNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificateIssuersNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateIssuerListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificateVersionsNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.certificateName,\n Parameters.nextLink\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedCertificatesNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\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.4.0-beta.2\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * @internal\n *\n * Valid key names in WWW-Authenticate header.\n */\nconst validParsedWWWAuthenticateProperties = [\n \"authorization\",\n \"authorization_url\",\n \"resource\",\n \"scope\",\n \"tenantId\"\n] as const;\n\n/**\n * @internal\n *\n * A union type representing all valid key names in WWW-Authenticate header.\n */\ntype ValidParsedWWWAuthenticateProperties = typeof validParsedWWWAuthenticateProperties[number];\n\n/**\n * @internal\n *\n * Holds the known WWWAuthenticate keys and their values as a result of\n * parsing a WWW-Authenticate header.\n */\nexport type ParsedWWWAuthenticate = {\n [Key in ValidParsedWWWAuthenticateProperties]?: string;\n};\n\n/**\n * Parses an WWW-Authenticate response.\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 wwwAuthenticate - String value in the WWW-Authenticate header\n */\nexport function parseWWWAuthenticate(wwwAuthenticate: string): ParsedWWWAuthenticate {\n const pairDelimiter = /,? +/;\n const parsed = wwwAuthenticate\n .split(pairDelimiter)\n .reduce<ParsedWWWAuthenticate>((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 (\n validParsedWWWAuthenticateProperties.includes(key as ValidParsedWWWAuthenticateProperties)\n ) {\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/* eslint-disable @azure/azure-sdk/ts-use-interface-parameters */\n\nimport { TokenCredential } from \"@azure/core-http\";\nimport {\n BaseRequestPolicy,\n RequestPolicy,\n RequestPolicyOptions,\n RequestPolicyFactory\n} from \"@azure/core-http\";\nimport { Constants } from \"@azure/core-http\";\nimport { HttpOperationResponse } from \"@azure/core-http\";\nimport { WebResource } from \"@azure/core-http\";\nimport { AccessTokenCache, ExpiringAccessTokenCache } from \"@azure/core-http\";\nimport { parseWWWAuthenticate, ParsedWWWAuthenticate } from \"./parseWWWAuthenticate\";\n\n/**\n * Representation of the Authentication Challenge\n */\nexport class AuthenticationChallenge {\n constructor(public authorization: string, public scope: string, public tenantId?: string) {}\n\n /**\n * Checks that this AuthenticationChallenge is equal to another one given.\n * Only compares the scope.\n * This is exactly what C# is doing, as we can see here:\n * https://github.com/Azure/azure-sdk-for-net/blob/70e54b878ff1d01a45266fb3674a396b4ab9c1d2/sdk/keyvault/Azure.Security.KeyVault.Shared/src/ChallengeBasedAuthenticationPolicy.cs#L143-L147\n * @param other - The other AuthenticationChallenge\n */\n public equalTo(other: AuthenticationChallenge | undefined): boolean {\n return other\n ? this.scope.toLowerCase() === other.scope.toLowerCase() &&\n this.authorization.toLowerCase() === other.authorization.toLowerCase() &&\n this.tenantId?.toLowerCase() === other.tenantId?.toLowerCase()\n : false;\n }\n}\n\n/**\n * Helps keep a copy of any previous authentication challenges,\n * so that we can compare on any further request.\n */\nexport class AuthenticationChallengeCache {\n public challenge?: AuthenticationChallenge;\n\n public setCachedChallenge(challenge: AuthenticationChallenge): void {\n this.challenge = challenge;\n }\n}\n\n/**\n * Creates a new ChallengeBasedAuthenticationPolicy factory.\n *\n * @param credential - The TokenCredential implementation that can supply the challenge token.\n */\nexport function challengeBasedAuthenticationPolicy(\n credential: TokenCredential\n): RequestPolicyFactory {\n const tokenCache: AccessTokenCache = new ExpiringAccessTokenCache();\n const challengeCache = new AuthenticationChallengeCache();\n return {\n create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => {\n return new ChallengeBasedAuthenticationPolicy(\n nextPolicy,\n options,\n credential,\n tokenCache,\n challengeCache\n );\n }\n };\n}\n\n/**\n *\n * Provides a RequestPolicy that can request a token from a TokenCredential\n * implementation and then apply it to the Authorization header of a request\n * as a Bearer token.\n *\n */\nexport class ChallengeBasedAuthenticationPolicy extends BaseRequestPolicy {\n private parseWWWAuthenticate: (\n wwwAuthenticate: string\n ) => ParsedWWWAuthenticate = parseWWWAuthenticate;\n\n /**\n * Creates a new ChallengeBasedAuthenticationPolicy object.\n *\n * @param nextPolicy - The next RequestPolicy in the request pipeline.\n * @param options - Options for this RequestPolicy.\n * @param credential - The TokenCredential implementation that can supply the bearer token.\n * @param tokenCache - The cache for the most recent AccessToken returned by the TokenCredential.\n */\n constructor(\n nextPolicy: RequestPolicy,\n options: RequestPolicyOptions,\n private credential: TokenCredential,\n private tokenCache: AccessTokenCache,\n private challengeCache: AuthenticationChallengeCache\n ) {\n super(nextPolicy, options);\n }\n\n /**\n * Gets or updates the token from the token cache into the headers of the received web resource.\n */\n private async loadToken(webResource: WebResource): Promise<void> {\n let accessToken = this.tokenCache.getCachedToken();\n\n // If there's no cached token in the cache, we try to get a new one.\n if (accessToken === undefined) {\n const receivedToken = await this.credential.getToken(this.challengeCache.challenge!.scope, {\n tenantId: this.challengeCache.challenge!.tenantId\n });\n accessToken = receivedToken || undefined;\n this.tokenCache.setCachedToken(accessToken);\n }\n\n if (accessToken) {\n webResource.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`\n );\n }\n }\n\n /**\n * Parses the given WWW-Authenticate header, generates a new AuthenticationChallenge,\n * then if the challenge is different from the one cached, resets the token and forces\n * a re-authentication, otherwise continues with the existing challenge and token.\n * @param wwwAuthenticate - Value of the incoming WWW-Authenticate header.\n * @param webResource - Ongoing HTTP request.\n */\n private async regenerateChallenge(\n wwwAuthenticate: string,\n webResource: WebResource\n ): Promise<HttpOperationResponse> {\n // The challenge based authentication will contain both:\n // - An authorization URI with a token,\n // - The resource to which that token is valid against (also called the scope).\n const parsedWWWAuth = this.parseWWWAuthenticate(wwwAuthenticate);\n const authorization = parsedWWWAuth.authorization!;\n const resource = parsedWWWAuth.resource! || parsedWWWAuth.scope!;\n const tenantId = parsedWWWAuth.tenantId;\n\n if (!(authorization && resource)) {\n return this._nextPolicy.sendRequest(webResource);\n }\n\n const challenge = new AuthenticationChallenge(authorization, resource + \"/.default\", tenantId);\n\n // Either if there's no cached challenge at this point (could have happen in parallel),\n // or if the cached challenge has a different scope,\n // we store the just received challenge and reset the cached token, to force a re-authentication.\n if (!this.challengeCache.challenge?.equalTo(challenge)) {\n this.challengeCache.setCachedChallenge(challenge);\n this.tokenCache.setCachedToken(undefined);\n }\n\n await this.loadToken(webResource);\n return this._nextPolicy.sendRequest(webResource);\n }\n\n /**\n * Applies the Bearer token to the request through the Authorization header.\n * @param webResource - Ongoing HTTP request.\n */\n public async sendRequest(webResource: WebResource): Promise<HttpOperationResponse> {\n // Ensure that we're about to use a secure connection.\n if (!webResource.url.startsWith(\"https:\")) {\n throw new Error(\"The resource address for authorization must use the 'https' protocol.\");\n }\n\n // The next request will happen differently whether we have a challenge or not.\n let response: HttpOperationResponse;\n\n if (\n this.challengeCache.challenge === undefined ||\n this.challengeCache.challenge === undefined\n ) {\n // If there's no challenge in cache, a blank body will start the challenge.\n const originalBody = webResource.body;\n webResource.body = \"\";\n try {\n response = await this._nextPolicy.sendRequest(webResource);\n } finally {\n webResource.body = originalBody;\n }\n } else {\n // If we did have a challenge in memory,\n // we attempt to load the token from the cache into the request before we try to send the request.\n await this.loadToken(webResource);\n response = await this._nextPolicy.sendRequest(webResource);\n }\n\n // If we don't receive a response with a 401 status code,\n // then we can assume this response has nothing to do with the challenge authentication process.\n if (response.status !== 401) {\n return response;\n }\n\n // If the response status is 401, we only re-authenticate if the WWW-Authenticate header is present.\n const wwwAuthenticate = response.headers.get(\"WWW-Authenticate\");\n if (!wwwAuthenticate) {\n return response;\n }\n\n // We re-generate the challenge and see if we have to re-authenticate.\n return this.regenerateChallenge(wwwAuthenticate, webResource);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as url from \"url\";\n\nexport interface ParsedKeyVaultEntityIdentifier {\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}\nexport function parseKeyvaultIdentifier(\n collection: string,\n identifier: string | undefined\n): ParsedKeyVaultEntityIdentifier {\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 = url.parse(identifier, true, true);\n } catch (e) {\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 { OperationOptions } from \"@azure/core-http\";\nimport { createSpanFunction, Span, SpanStatusCode } from \"@azure/core-tracing\";\n\n/**\n * An interface representing a function that is traced.\n *\n * A traced function will automatically create and close tracing '\n * spans as needed and will handle setting the status / errors as a\n * result of calling the underlying callback.\n *\n * use {@link createTraceFunction} to add tracing to a block of code.\n *\n * @internal\n */\nexport interface TracedFunction {\n <TOptions extends OperationOptions, TReturn>(\n operationName: string,\n options: TOptions,\n cb: (options: TOptions, span: Span) => Promise<TReturn>\n ): Promise<TReturn>;\n}\n\n/**\n * Returns a function that can be used for tracing options.\n *\n * @param prefix - The prefix to use, likely the name of the class / client.\n *\n * @example const withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CertificateClient\")\n *\n * @internal\n */\nexport function createTraceFunction(prefix: string): TracedFunction {\n const createSpan = createSpanFunction({\n namespace: \"Microsoft.KeyVault\",\n packagePrefix: prefix\n });\n\n return async function(operationName, options, cb) {\n const { updatedOptions, span } = createSpan(operationName, options);\n\n try {\n // NOTE: we really do need to await on this function here so we can handle any exceptions thrown and properly\n // close the span.\n const result = await cb(updatedOptions, span);\n\n // otel 0.16+ needs this or else the code ends up being set as UNSET\n span.setStatus({\n code: SpanStatusCode.OK\n });\n return result;\n } catch (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message\n });\n throw err;\n } finally {\n span.end();\n }\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { delay, OperationOptions } from \"@azure/core-http\";\nimport { Poller, PollOperation, PollOperationState } from \"@azure/core-lro\";\nimport { KeyVaultClient } from \"../generated/keyVaultClient\";\n\n/**\n * Common parameters to a Key Vault Certificate Poller.\n */\nexport interface KeyVaultCertificatePollerOptions {\n certificateName: string;\n vaultUrl: string;\n client: KeyVaultClient;\n operationOptions?: OperationOptions;\n intervalInMs?: number;\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the public shape of the state of a Key Vault Certificate Poller's operations.\n */\nexport interface KeyVaultCertificatePollOperationState<TResult>\n extends PollOperationState<TResult> {\n /**\n * The name of the certificate.\n */\n certificateName: string;\n}\n\n/**\n * Generates a version of the state with only public properties. At least those common for all of the Key Vault Certificates pollers.\n */\n// eslint-disable-next-line no-use-before-define\nexport function cleanState<TState extends KeyVaultCertificatePollOperationState<TResult>, TResult>(\n state: TState\n): KeyVaultCertificatePollOperationState<TResult> {\n return {\n certificateName: state.certificateName,\n isStarted: state.isStarted,\n isCancelled: state.isCancelled,\n isCompleted: state.isCompleted,\n error: state.error,\n result: state.result\n };\n}\n\n/**\n * Common properties and methods of the Key Vault Certificate Pollers.\n */\nexport abstract class KeyVaultCertificatePoller<\n TState extends KeyVaultCertificatePollOperationState<TResult>,\n TResult\n> extends Poller<TState, TResult> {\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<void> {\n return delay(this.intervalInMs);\n }\n\n /**\n * Gets the public state of the polling operation\n */\n public getOperationState(): TState {\n return cleanState(this.operation.state) as TState;\n }\n}\n\n/**\n * Optional parameters to the KeyVaultCertificatePollOperation\n */\nexport interface KeyVaultCertificatePollOperationOptions {\n cancelMessage?: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Certificate Poller operations.\n */\nexport class KeyVaultCertificatePollOperation<\n TState extends KeyVaultCertificatePollOperationState<TResult>,\n TResult\n> implements PollOperation<TState, TResult> {\n private cancelMessage: string = \"\";\n\n constructor(public state: TState, options: KeyVaultCertificatePollOperationOptions = {}) {\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<PollOperation<TState, TResult>> {\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<PollOperation<TState, TResult>> {\n throw new Error(this.cancelMessage);\n }\n\n /**\n * Serializes the create certificate's poll operation\n */\n public toString(): string {\n return JSON.stringify({\n state: cleanState(this.state)\n });\n }\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 Certificate Id.\n */\nexport interface KeyVaultCertificateIdentifier {\n /**\n * The complete representation of the Key Vault Certificate Id. For example:\n *\n * https://<keyvault-name>.vault.azure.net/certificates/<certificate-name>/<unique-version-id>\n *\n */\n sourceId: string;\n\n /**\n * The URL of the Azure Key Vault instance to which the Certificate belongs.\n */\n vaultUrl: string;\n\n /**\n * The version of Key Vault Certificate. Might be undefined.\n */\n version?: string;\n\n /**\n * The name of the Key Vault Certificate.\n */\n name: string;\n}\n\n/**\n * Parses the given Key Vault Certificate Id. An example is:\n *\n * https://<keyvault-name>.vault.azure.net/certificates/<certificate-name>/<unique-version-id>\n *\n * On parsing the above Id, this function returns:\n *```ts\n * {\n * sourceId: \"https://<keyvault-name>.vault.azure.net/certificates/<certificate-name>/<unique-version-id>\",\n * vaultUrl: \"https://<keyvault-name>.vault.azure.net\",\n * version: \"<unique-version-id>\",\n * name: \"<certificate-name>\"\n * }\n *```\n * @param id - The Id of the Key Vault Certificate.\n */\nexport function parseKeyVaultCertificateIdentifier(id: string): KeyVaultCertificateIdentifier {\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 {\n ArrayOneOrMore,\n CertificateContentType,\n CertificateOperation,\n CertificateIssuer,\n CertificatePolicy,\n CertificateProperties,\n DeletedCertificate,\n KeyVaultCertificate,\n KeyVaultCertificateWithPolicy,\n SubjectAlternativeNames,\n CertificateContact,\n CertificateOperationError\n} from \"./certificatesModels\";\nimport {\n CertificateAttributes,\n CertificateBundle,\n CertificatePolicy as CoreCertificatePolicy,\n DeletedCertificateBundle,\n DeletedCertificateItem,\n IssuerAttributes,\n IssuerBundle,\n SubjectAlternativeNames as CoreSubjectAlternativeNames,\n X509CertificateProperties,\n CertificateOperation as CoreCertificateOperation,\n Contacts as CoreContacts,\n JsonWebKeyType as CertificateKeyType,\n ErrorModel\n} from \"./generated/models\";\nimport { parseKeyVaultCertificateIdentifier } from \"./identifier\";\n\nexport function toCoreAttributes(properties: CertificateProperties): CertificateAttributes {\n return {\n recoveryLevel: properties.recoveryLevel,\n enabled: properties.enabled,\n notBefore: properties.notBefore,\n expires: properties.expiresOn,\n created: properties.createdOn,\n updated: properties.updatedOn\n };\n}\n\nexport function toCorePolicy(\n id: string | undefined,\n policy: CertificatePolicy,\n attributes: CertificateAttributes = {}\n): CoreCertificatePolicy {\n let subjectAlternativeNames: CoreSubjectAlternativeNames = {};\n if (policy.subjectAlternativeNames) {\n subjectAlternativeNames = {\n emails: policy.subjectAlternativeNames.emails,\n dnsNames: policy.subjectAlternativeNames.dnsNames,\n upns: policy.subjectAlternativeNames.userPrincipalNames\n };\n }\n\n return {\n id,\n lifetimeActions: policy.lifetimeActions\n ? policy.lifetimeActions.map((action) => ({\n action: { actionType: action.action },\n trigger: {\n lifetimePercentage: action.lifetimePercentage,\n daysBeforeExpiry: action.daysBeforeExpiry\n }\n }))\n : undefined,\n keyProperties: {\n keyType: policy.keyType,\n keySize: policy.keySize,\n reuseKey: policy.reuseKey,\n curve: policy.keyCurveName,\n exportable: policy.exportable\n },\n secretProperties: {\n contentType: policy.contentType\n },\n x509CertificateProperties: {\n subject: policy.subject,\n ekus: policy.enhancedKeyUsage,\n subjectAlternativeNames,\n keyUsage: policy.keyUsage,\n validityInMonths: policy.validityInMonths\n },\n issuerParameters: {\n name: policy.issuerName,\n certificateType: policy.certificateType,\n certificateTransparency: policy.certificateTransparency\n },\n attributes\n };\n}\n\nexport function toPublicPolicy(policy: CoreCertificatePolicy = {}): CertificatePolicy {\n let subjectAlternativeNames: SubjectAlternativeNames | undefined;\n const x509Properties: X509CertificateProperties = policy.x509CertificateProperties || {};\n\n if (policy.x509CertificateProperties) {\n if (x509Properties.subjectAlternativeNames) {\n const names = x509Properties.subjectAlternativeNames;\n if (names.emails && names.emails.length) {\n subjectAlternativeNames = {\n ...subjectAlternativeNames,\n emails: names.emails as ArrayOneOrMore<string>\n };\n }\n if (names.dnsNames && names.dnsNames.length) {\n subjectAlternativeNames = {\n ...subjectAlternativeNames,\n dnsNames: names.dnsNames as ArrayOneOrMore<string>\n };\n }\n if (names.upns && names.upns.length) {\n subjectAlternativeNames = {\n ...subjectAlternativeNames,\n userPrincipalNames: names.upns as ArrayOneOrMore<string>\n };\n }\n }\n }\n\n const certificatePolicy: CertificatePolicy = {\n lifetimeActions: policy.lifetimeActions\n ? policy.lifetimeActions.map((action) => ({\n action: action.action ? action.action.actionType : undefined,\n daysBeforeExpiry: action.trigger ? action.trigger.daysBeforeExpiry : undefined,\n lifetimePercentage: action.trigger ? action.trigger.lifetimePercentage : undefined\n }))\n : undefined,\n contentType: policy.secretProperties\n ? (policy.secretProperties.contentType as CertificateContentType)\n : undefined,\n enhancedKeyUsage: x509Properties.ekus,\n keyUsage: x509Properties.keyUsage,\n validityInMonths: x509Properties.validityInMonths,\n subject: x509Properties.subject,\n subjectAlternativeNames: subjectAlternativeNames!\n };\n\n if (policy.attributes) {\n certificatePolicy.enabled = policy.attributes.enabled;\n }\n\n if (policy.keyProperties) {\n certificatePolicy.keyType = policy.keyProperties.keyType as CertificateKeyType;\n certificatePolicy.keySize = policy.keyProperties.keySize;\n certificatePolicy.reuseKey = policy.keyProperties.reuseKey;\n certificatePolicy.keyCurveName = policy.keyProperties.curve;\n certificatePolicy.exportable = policy.keyProperties.exportable;\n }\n\n if (policy.issuerParameters) {\n certificatePolicy.issuerName = policy.issuerParameters && policy.issuerParameters.name;\n certificatePolicy.certificateType = policy.issuerParameters\n .certificateType as CertificateContentType;\n certificatePolicy.certificateTransparency = policy.issuerParameters.certificateTransparency;\n }\n\n return certificatePolicy;\n}\n\nexport function toPublicIssuer(issuer: IssuerBundle = {}): CertificateIssuer {\n const parsedId = parseKeyVaultCertificateIdentifier(issuer.id!);\n const attributes: IssuerAttributes = issuer.attributes || {};\n\n const publicIssuer: CertificateIssuer = {\n id: issuer.id,\n name: parsedId.name,\n provider: issuer.provider,\n accountId: issuer.credentials && issuer.credentials.accountId,\n password: issuer.credentials && issuer.credentials.password,\n enabled: attributes.enabled,\n createdOn: attributes.created,\n updatedOn: attributes.updated\n };\n\n if (issuer.organizationDetails) {\n publicIssuer.organizationId = issuer.organizationDetails.id;\n publicIssuer.administratorContacts = issuer.organizationDetails.adminDetails\n ? issuer.organizationDetails.adminDetails.map((x) => ({\n email: x.emailAddress,\n phone: x.phone,\n firstName: x.firstName,\n lastName: x.lastName\n }))\n : undefined;\n }\n return publicIssuer;\n}\n\nexport function getCertificateFromCertificateBundle(\n certificateBundle: CertificateBundle\n): KeyVaultCertificate {\n const parsedId = parseKeyVaultCertificateIdentifier(certificateBundle.id!);\n\n const attributes: CertificateAttributes = certificateBundle.attributes || {};\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n id: certificateBundle.id,\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n recoveryLevel: attributes.recoveryLevel,\n name: parsedId.name,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n tags: certificateBundle.tags,\n x509Thumbprint: certificateBundle.x509Thumbprint,\n recoverableDays: attributes.recoverableDays\n };\n\n return {\n keyId: certificateBundle.kid,\n secretId: certificateBundle.sid,\n name: parsedId.name,\n cer: certificateBundle.cer,\n properties: abstractProperties\n };\n}\n\nexport function getCertificateWithPolicyFromCertificateBundle(\n certificateBundle: CertificateBundle\n): KeyVaultCertificateWithPolicy {\n const parsedId = parseKeyVaultCertificateIdentifier(certificateBundle.id!);\n\n const attributes: CertificateAttributes = certificateBundle.attributes || {};\n const policy = toPublicPolicy(certificateBundle.policy || {});\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n id: certificateBundle.id,\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n recoveryLevel: attributes.recoveryLevel,\n name: parsedId.name,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n tags: certificateBundle.tags,\n x509Thumbprint: certificateBundle.x509Thumbprint,\n recoverableDays: attributes.recoverableDays\n };\n\n return {\n keyId: certificateBundle.kid,\n secretId: certificateBundle.sid,\n name: parsedId.name,\n cer: certificateBundle.cer,\n policy,\n properties: abstractProperties\n };\n}\n\nexport function getDeletedCertificateFromDeletedCertificateBundle(\n certificateBundle: DeletedCertificateBundle\n): DeletedCertificate {\n const certificate: KeyVaultCertificateWithPolicy = getCertificateWithPolicyFromCertificateBundle(\n certificateBundle\n );\n\n return {\n policy: certificate.policy,\n cer: certificate.cer,\n id: certificate.id,\n keyId: certificate.keyId,\n secretId: certificate.secretId,\n name: certificate.name,\n properties: certificate.properties,\n recoveryId: certificateBundle.recoveryId,\n scheduledPurgeDate: certificateBundle.scheduledPurgeDate,\n deletedOn: certificateBundle.deletedDate\n };\n}\n\nexport function getDeletedCertificateFromItem(item: DeletedCertificateItem): DeletedCertificate {\n const parsedId = parseKeyVaultCertificateIdentifier(item.id!);\n\n const attributes: any = item.attributes || {};\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n name: parsedId.name,\n\n id: item.id,\n tags: item.tags,\n x509Thumbprint: item.x509Thumbprint,\n\n recoverableDays: item.attributes?.recoverableDays,\n recoveryLevel: item.attributes?.recoveryLevel\n };\n\n return {\n deletedOn: item.deletedDate,\n recoveryId: item.recoveryId,\n scheduledPurgeDate: item.scheduledPurgeDate,\n name: parsedId.name,\n properties: abstractProperties\n };\n}\n\nfunction getCertificateOperationErrorFromErrorModel(\n error?: ErrorModel | null\n): CertificateOperationError | undefined {\n if (error) {\n return {\n code: error.code,\n innerError: getCertificateOperationErrorFromErrorModel(error.innerError),\n message: error.message\n };\n }\n return undefined;\n}\n\nexport function getCertificateOperationFromCoreOperation(\n certificateName: string,\n vaultUrl: string,\n operation: CoreCertificateOperation\n): CertificateOperation {\n return {\n cancellationRequested: operation.cancellationRequested,\n name: certificateName,\n issuerName: operation.issuerParameters ? operation.issuerParameters.name : undefined,\n certificateTransparency: operation.issuerParameters\n ? operation.issuerParameters.certificateTransparency\n : undefined,\n certificateType: operation.issuerParameters\n ? operation.issuerParameters.certificateType\n : undefined,\n csr: operation.csr,\n error: getCertificateOperationErrorFromErrorModel(operation.error),\n id: operation.id,\n requestId: operation.requestId,\n status: operation.status,\n statusDetails: operation.statusDetails,\n target: operation.target,\n vaultUrl: vaultUrl\n };\n}\n\nexport function coreContactsToCertificateContacts(contacts: CoreContacts): CertificateContact[] {\n return contacts.contactList\n ? contacts.contactList.map(\n (x) => ({ email: x.emailAddress, phone: x.phone, name: x.name } as CertificateContact)\n )\n : [];\n}\n\nexport function getPropertiesFromCertificateBundle(\n certificateBundle: CertificateBundle\n): CertificateProperties {\n const parsedId = parseKeyVaultCertificateIdentifier(certificateBundle.id!);\n const attributes: CertificateAttributes = certificateBundle.attributes || {};\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n id: certificateBundle.id,\n name: parsedId.name,\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n recoveryLevel: attributes.recoveryLevel,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n tags: certificateBundle.tags,\n x509Thumbprint: certificateBundle.x509Thumbprint,\n recoverableDays: attributes.recoverableDays\n };\n\n return abstractProperties;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike, AbortSignal } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-http\";\nimport {\n KeyVaultCertificateWithPolicy,\n CreateCertificateOptions,\n CertificatePolicy,\n GetCertificateOptions,\n GetPlainCertificateOperationOptions,\n CancelCertificateOperationOptions\n} from \"../../certificatesModels\";\nimport { CertificateOperation } from \"../../generated/models\";\nimport {\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState\n} from \"../keyVaultCertificatePoller\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport {\n getCertificateOperationFromCoreOperation,\n getCertificateWithPolicyFromCertificateBundle,\n toCoreAttributes,\n toCorePolicy\n} from \"../../transformations\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CreateCertificatePoller\");\n\n/**\n * The public representation of the CreateCertificatePoller operation state.\n */\nexport type CreateCertificateState = KeyVaultCertificatePollOperationState<\n KeyVaultCertificateWithPolicy\n>;\n\n/**\n * An interface representing the state of a create certificate's poll operation\n */\nexport interface CreateCertificatePollOperationState\n extends KeyVaultCertificatePollOperationState<KeyVaultCertificateWithPolicy> {\n /**\n * The policy of the certificate.\n */\n certificatePolicy?: CertificatePolicy;\n /**\n * Optional parameters sent to createCertificates\n */\n createCertificateOptions: CreateCertificateOptions;\n /**\n * The operation of the certificate\n */\n certificateOperation?: CertificateOperation;\n}\n\n/**\n * An interface representing a create certificate's poll operation\n */\nexport class CreateCertificatePollOperation extends KeyVaultCertificatePollOperation<\n CreateCertificatePollOperationState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(\n public state: CreateCertificatePollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state);\n }\n\n /**\n * Creates a new certificate. If this is the first version, the certificate resource is created. This operation requires the certificates/create permission.\n */\n private createCertificate(\n certificateName: string,\n certificatePolicy: CertificatePolicy,\n options: CreateCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"createCertificate\", options, async (updatedOptions) => {\n const id = options.id;\n const certificateAttributes = toCoreAttributes(options);\n const corePolicy = toCorePolicy(id, certificatePolicy, certificateAttributes);\n const result = await this.client.createCertificate(this.vaultUrl, certificateName, {\n ...updatedOptions,\n certificatePolicy: corePolicy,\n certificateAttributes\n });\n\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n */\n private getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets the certificate operation.\n */\n private getPlainCertificateOperation(\n certificateName: string,\n options: GetPlainCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"getPlainCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateOperation(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Cancels a certificate creation operation that is already in progress. This operation requires the certificates/update permission.\n */\n private cancelCertificateOperation(\n certificateName: string,\n options: CancelCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"cancelCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.updateCertificateOperation(\n this.vaultUrl,\n certificateName,\n true,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Reaches to the service and updates the create certificate's poll operation.\n */\n async update(\n this: CreateCertificatePollOperation,\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: CreateCertificatePollOperationState) => void;\n } = {}\n ): Promise<CreateCertificatePollOperation> {\n const state = this.state;\n const { certificateName, certificatePolicy, createCertificateOptions } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n createCertificateOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n state.isStarted = true;\n state.result = await this.createCertificate(\n certificateName,\n certificatePolicy!,\n createCertificateOptions\n );\n this.state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n } else if (!state.isCompleted) {\n this.state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n }\n\n if (state.certificateOperation && state.certificateOperation.status !== \"inProgress\") {\n state.isCompleted = true;\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n if (state.certificateOperation.error) {\n state.error = new Error(state.certificateOperation.error.message);\n }\n }\n\n return this;\n }\n\n /**\n * Reaches to the service and cancels the certificate's operation, also updating the certificate's poll operation\n */\n async cancel(\n this: CreateCertificatePollOperation,\n options: { abortSignal?: AbortSignal } = {}\n ): Promise<CreateCertificatePollOperation> {\n const state = this.state;\n const { certificateName } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n state.certificateOperation = await this.cancelCertificateOperation(\n certificateName,\n this.operationOptions\n );\n\n this.state.isCancelled = true;\n return this;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CreateCertificatePollOperation, CreateCertificateState } from \"./operation\";\nimport {\n KeyVaultCertificateWithPolicy,\n CreateCertificateOptions,\n CertificatePolicy\n} from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions\n} from \"../keyVaultCertificatePoller\";\n\nexport interface CreateCertificatePollerOptions extends KeyVaultCertificatePollerOptions {\n certificatePolicy?: CertificatePolicy;\n createCertificateOptions: CreateCertificateOptions;\n}\n\n/**\n * Class that deletes a poller that waits until a certificate finishes being deleted\n */\nexport class CreateCertificatePoller extends KeyVaultCertificatePoller<\n CreateCertificateState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(options: CreateCertificatePollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n certificatePolicy,\n createCertificateOptions,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom\n } = options;\n\n let state: CreateCertificateState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new CreateCertificatePollOperation(\n {\n ...state,\n certificateName,\n certificatePolicy,\n createCertificateOptions\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, AbortSignal } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-http\";\nimport {\n CancelCertificateOperationOptions,\n CertificateOperation,\n GetCertificateOptions,\n GetPlainCertificateOperationOptions,\n KeyVaultCertificateWithPolicy\n} from \"../../certificatesModels\";\nimport {\n cleanState,\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState\n} from \"../keyVaultCertificatePoller\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport {\n getCertificateOperationFromCoreOperation,\n getCertificateWithPolicyFromCertificateBundle\n} from \"../../transformations\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CertificateOperationPoller\");\n\n/**\n * An interface representing the publicly available properties of the state of the CertificateOperationPoller.\n */\nexport interface CertificateOperationState\n extends KeyVaultCertificatePollOperationState<KeyVaultCertificateWithPolicy> {\n /**\n * The operation of the certificate\n */\n certificateOperation?: CertificateOperation;\n}\n\n/**\n * An interface representing the active operation of a certificate's creation,\n * which is represented locally as the \"operation\" of an active LRO Poller.\n */\nexport class CertificateOperationPollOperation extends KeyVaultCertificatePollOperation<\n CertificateOperationState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(\n public state: CertificateOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state);\n }\n\n /**\n * Cancels a certificate creation operation that is already in progress. This operation requires the certificates/update permission.\n */\n private cancelCertificateOperation(\n certificateName: string,\n options: CancelCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"cancelCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.updateCertificateOperation(\n this.vaultUrl,\n certificateName,\n true,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n */\n private getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets the certificate operation.\n */\n private getPlainCertificateOperation(\n certificateName: string,\n options: GetPlainCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"getPlainCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateOperation(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Reaches to the service and updates the poll operation.\n */\n async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: CertificateOperationState) => void;\n } = {}\n ): Promise<CertificateOperationPollOperation> {\n const state = this.state;\n const certificateName = state.certificateName!;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n state.isStarted = true;\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n } else if (!state.isCompleted) {\n state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n }\n\n if (state.certificateOperation && state.certificateOperation.status !== \"inProgress\") {\n state.isCompleted = true;\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n if (state.certificateOperation.error) {\n state.error = new Error(state.certificateOperation.error.message);\n }\n }\n\n return this;\n }\n\n /**\n * Reaches to the service and cancels the certificate's operation, also updating the poll operation.\n */\n async cancel(\n this: CertificateOperationPollOperation,\n options: { abortSignal?: AbortSignal } = {}\n ): Promise<CertificateOperationPollOperation> {\n const state = this.state;\n const certificateName = state.certificateName!;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n state.certificateOperation = await this.cancelCertificateOperation(\n certificateName,\n this.operationOptions\n );\n\n this.state.isCancelled = true;\n return this;\n }\n\n /**\n * Serializes the certificate's poll operation\n */\n public toString(): string {\n const state: CertificateOperationState = {\n certificateOperation: this.state.certificateOperation,\n ...cleanState(this.state)\n };\n return JSON.stringify({\n state\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CertificateOperationPollOperation, CertificateOperationState } from \"./operation\";\nimport { KeyVaultCertificateWithPolicy } from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions,\n cleanState\n} from \"../keyVaultCertificatePoller\";\n\nexport interface CertificateOperationPollerOptions extends KeyVaultCertificatePollerOptions {}\n\n/**\n * Class that creates a poller that waits until a certificate finishes being created\n */\nexport class CertificateOperationPoller extends KeyVaultCertificatePoller<\n CertificateOperationState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(options: CertificateOperationPollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom\n } = options;\n\n let state: CertificateOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new CertificateOperationPollOperation(\n {\n ...state,\n certificateName\n },\n vaultUrl,\n client,\n operationOptions\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n\n /**\n * Gets the public state of the polling operation\n */\n public getOperationState(): CertificateOperationState {\n return {\n ...cleanState(this.operation.state),\n certificateOperation: this.operation.state.certificateOperation\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-http\";\nimport {\n DeleteCertificateOptions,\n DeletedCertificate,\n GetDeletedCertificateOptions\n} from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState\n} from \"../keyVaultCertificatePoller\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport { getDeletedCertificateFromDeletedCertificateBundle } from \"../../transformations\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.DeleteCertificatePoller\");\n\n/**\n * The public representation of the DeleteCertificatePoller operation state.\n */\nexport type DeleteCertificateState = KeyVaultCertificatePollOperationState<DeletedCertificate>;\n\n/**\n * An interface representing the state of a delete certificate's poll operation\n */\nexport interface DeleteCertificatePollOperationState\n extends KeyVaultCertificatePollOperationState<DeletedCertificate> {}\n\n/**\n * An interface representing a delete certificate's poll operation\n */\nexport class DeleteCertificatePollOperation extends KeyVaultCertificatePollOperation<\n DeleteCertificatePollOperationState,\n DeletedCertificate\n> {\n constructor(\n public state: DeleteCertificatePollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state, { cancelMessage: \"Canceling the deletion of a certificate is not supported.\" });\n }\n\n /**\n * The DELETE operation applies to any certificate stored in Azure Key Vault. DELETE cannot be applied\n * to an individual version of a certificate. This operation requires the certificates/delete permission.\n */\n private deleteCertificate(\n certificateName: string,\n options: DeleteCertificateOptions = {}\n ): Promise<DeletedCertificate> {\n return withTrace(\"deleteCertificate\", options, async (updatedOptions) => {\n const response = await this.client.deleteCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getDeletedCertificateFromDeletedCertificateBundle(response);\n });\n }\n\n /**\n * Retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the\n * current deletion recovery level. This operation requires the certificates/get permission.\n */\n public async getDeletedCertificate(\n certificateName: string,\n options: GetDeletedCertificateOptions = {}\n ): Promise<DeletedCertificate> {\n return withTrace(\"getDeletedCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getDeletedCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getDeletedCertificateFromDeletedCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Reaches to the service and updates the delete certificate's poll operation.\n */\n async update(\n this: DeleteCertificatePollOperation,\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: DeleteCertificatePollOperationState) => void;\n } = {}\n ): Promise<DeleteCertificatePollOperation> {\n const state = this.state;\n const { certificateName } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n const deletedCertificate = await this.deleteCertificate(\n certificateName,\n this.operationOptions\n );\n state.isStarted = true;\n state.result = deletedCertificate;\n if (!deletedCertificate.recoveryId) {\n state.isCompleted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getDeletedCertificate(certificateName, this.operationOptions);\n state.isCompleted = true;\n } catch (error) {\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 { DeleteCertificatePollOperation, DeleteCertificatePollOperationState } from \"./operation\";\nimport { DeletedCertificate } from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions\n} from \"../keyVaultCertificatePoller\";\n\nexport interface DeleteCertificatePollerOptions extends KeyVaultCertificatePollerOptions {}\n\n/**\n * Class that deletes a poller that waits until a certificate finishes being deleted\n * @internal\n */\nexport class DeleteCertificatePoller extends KeyVaultCertificatePoller<\n DeleteCertificatePollOperationState,\n DeletedCertificate\n> {\n constructor(options: DeleteCertificatePollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom\n } = options;\n\n let state: DeleteCertificatePollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new DeleteCertificatePollOperation(\n {\n ...state,\n certificateName\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-http\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\nimport {\n GetCertificateOptions,\n KeyVaultCertificateWithPolicy,\n RecoverDeletedCertificateOptions\n} from \"../../certificatesModels\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport { getCertificateWithPolicyFromCertificateBundle } from \"../../transformations\";\nimport {\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState\n} from \"../keyVaultCertificatePoller\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\n \"Azure.KeyVault.Certificates.RecoverDeletedCertificatePoller\"\n);\n\n/**\n * Deprecated: Public representation of the recovery of a deleted certificate poll operation\n */\nexport type RecoverDeletedCertificateState = KeyVaultCertificatePollOperationState<\n KeyVaultCertificateWithPolicy\n>;\n\n/**\n * An interface representing the recovery of a deleted certificate's poll operation\n */\nexport class RecoverDeletedCertificatePollOperation extends KeyVaultCertificatePollOperation<\n RecoverDeletedCertificateState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(\n public state: RecoverDeletedCertificateState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state, {\n cancelMessage: \"Canceling the recovery of a deleted certificate is not supported.\"\n });\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n */\n private getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Recovers the deleted certificate in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation\n * requires the certificate/recover permission.\n */\n private recoverDeletedCertificate(\n certificateName: string,\n options: RecoverDeletedCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"recoverDeletedCertificate\", options, async (updatedOptions) => {\n const result = await this.client.recoverDeletedCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Reaches to the service and updates the poll operation.\n */\n async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: RecoverDeletedCertificateState) => void;\n } = {}\n ): Promise<RecoverDeletedCertificatePollOperation> {\n const state = this.state;\n const { certificateName } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n try {\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n state.isCompleted = true;\n } catch (e) {\n // getCertificate will only work once the LRO is completed.\n }\n if (!state.isCompleted) {\n state.result = await this.recoverDeletedCertificate(certificateName, this.operationOptions);\n state.isStarted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n state.isCompleted = true;\n } catch (error) {\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 {\n RecoverDeletedCertificatePollOperation,\n RecoverDeletedCertificateState\n} from \"./operation\";\nimport { KeyVaultCertificateWithPolicy } from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions\n} from \"../keyVaultCertificatePoller\";\n\nexport interface RecoverDeletedCertificatePollerOptions extends KeyVaultCertificatePollerOptions {}\n\n/**\n * Class that creates a poller that waits until a deleted certificate is fully recovered.\n */\nexport class RecoverDeletedCertificatePoller extends KeyVaultCertificatePoller<\n RecoverDeletedCertificateState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(options: RecoverDeletedCertificatePollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom\n } = options;\n\n let state: RecoverDeletedCertificateState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new RecoverDeletedCertificatePollOperation(\n {\n ...state,\n certificateName\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 { isNode } from \"@azure/core-http\";\nimport { CertificateContentType } from \"./certificatesModels\";\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function toBase64(bytes: Uint8Array): string {\n if (isNode) {\n return Buffer.from(bytes).toString(\"base64\");\n } else {\n return btoa(String.fromCharCode.apply(null, (bytes as any) as number[]));\n }\n}\n\n/**\n * Decodes a Uint8Array into an ASCII string.\n * @internal\n */\nexport function toAscii(bytes: Uint8Array): string {\n if (isNode) {\n return Buffer.from(bytes).toString(\"ascii\");\n } else {\n return new TextDecoder(\"ascii\").decode(bytes);\n }\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function stringToUint8Array(value: string): Uint8Array {\n if (isNode) {\n return Buffer.from(value);\n } else {\n return new TextEncoder().encode(value);\n }\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n if (isNode) {\n return Buffer.from(value, \"base64\");\n } else {\n return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));\n }\n}\n\n/**\n * Parses the PFX or ASCII PEM formatted value of the certificate containing both the X.509 certificates and the private key\n * into a Base64 encoded string.\n *\n * @internal\n * @param certificateBytes - The PFX or ASCII PEM formatted value of the certificate containing both the X.509 certificates and the private key\n * @param contentType - \"application/x-pem-file\", \"application/x-pkcs12\" or undefined\n */\nexport function parseCertificateBytes(\n certificateBytes: Uint8Array,\n contentType: CertificateContentType\n): string {\n if (contentType === \"application/x-pem-file\") {\n // PEM files have the certificate bytes already Base64 formatted.\n return toAscii(certificateBytes);\n } else {\n return toBase64(certificateBytes);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// The eslint plugin mentioned below doesn't follow through the extended types.\n/* eslint-disable @azure/azure-sdk/ts-apisurface-supportcancellation */\n\n// This file makes more sense if ordered based on how meaningful are some methods in relation to others.\n/* eslint-disable @typescript-eslint/member-ordering */\n\n/// <reference lib=\"esnext.asynciterable\" />\n\nimport {\n TokenCredential,\n isTokenCredential,\n signingPolicy,\n PipelineOptions,\n createPipelineFromOptions,\n InternalPipelineOptions\n} from \"@azure/core-http\";\n\nimport { logger } from \"./log\";\nimport { PollerLike, PollOperationState } from \"@azure/core-lro\";\n\nimport {\n KeyVaultCertificate,\n KeyVaultCertificateWithPolicy,\n AdministratorContact,\n BackupCertificateOptions,\n BeginCreateCertificateOptions,\n BeginDeleteCertificateOptions,\n BeginRecoverDeletedCertificateOptions,\n CertificateIssuer,\n CertificateContact,\n CertificateContentType,\n CertificatePolicy,\n CertificateProperties,\n CreateCertificateOptions,\n DeleteCertificateOperationOptions,\n DeleteContactsOptions,\n DeleteIssuerOptions,\n DeletedCertificate,\n GetContactsOptions,\n GetIssuerOptions,\n GetCertificateOperationOptions,\n GetPlainCertificateOperationOptions,\n GetCertificateOptions,\n GetCertificatePolicyOptions,\n GetCertificateVersionOptions,\n GetDeletedCertificateOptions,\n CertificateTags,\n ImportCertificateOptions,\n ListPropertiesOfCertificatesOptions,\n ErrorModel,\n ListPropertiesOfCertificateVersionsOptions,\n ListPropertiesOfIssuersOptions,\n ListDeletedCertificatesOptions,\n MergeCertificateOptions,\n PurgeDeletedCertificateOptions,\n RestoreCertificateBackupOptions,\n SetContactsOptions,\n CreateIssuerOptions,\n CertificateOperation,\n CertificateOperationError,\n SubjectAlternativeNames,\n UpdateIssuerOptions,\n UpdateCertificatePropertiesOptions,\n UpdateCertificatePolicyOptions,\n WellKnownIssuerNames,\n CertificatePollerOptions,\n IssuerProperties,\n CertificateContactAll,\n CertificatePolicyAction,\n LifetimeAction,\n RequireAtLeastOne,\n ArrayOneOrMore,\n SubjectAlternativeNamesAll,\n CertificatePolicyProperties,\n PolicySubjectProperties,\n DefaultCertificatePolicy,\n CertificateClientOptions,\n LATEST_API_VERSION,\n CancelCertificateOperationOptions,\n ImportCertificatePolicy,\n KnownCertificateKeyCurveNames,\n KnownCertificateKeyTypes,\n KnownKeyUsageTypes\n} from \"./certificatesModels\";\n\nimport {\n KeyVaultClientGetCertificatesOptionalParams,\n KeyVaultClientGetCertificateIssuersOptionalParams,\n KeyVaultClientGetCertificateVersionsOptionalParams,\n KeyVaultClientSetCertificateIssuerOptionalParams,\n BackupCertificateResult,\n KeyVaultClientGetDeletedCertificatesOptionalParams,\n IssuerParameters,\n IssuerCredentials,\n IssuerAttributes,\n X509CertificateProperties,\n SubjectAlternativeNames as CoreSubjectAlternativeNames,\n ActionType,\n DeletionRecoveryLevel,\n JsonWebKeyType as CertificateKeyType,\n JsonWebKeyCurveName as CertificateKeyCurveName,\n KnownDeletionRecoveryLevel as KnownDeletionRecoveryLevels,\n KeyUsageType\n} from \"./generated/models\";\nimport { KeyVaultClient } from \"./generated/keyVaultClient\";\nimport { SDK_VERSION } from \"./constants\";\nimport \"@azure/core-paging\";\nimport { PageSettings, PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport { challengeBasedAuthenticationPolicy, createTraceFunction } from \"../../keyvault-common/src\";\nimport { CreateCertificatePoller } from \"./lro/create/poller\";\nimport { CertificateOperationPoller } from \"./lro/operation/poller\";\nimport { DeleteCertificatePoller } from \"./lro/delete/poller\";\nimport { RecoverDeletedCertificatePoller } from \"./lro/recover/poller\";\nimport { CertificateOperationState } from \"./lro/operation/operation\";\nimport { DeleteCertificateState } from \"./lro/delete/operation\";\nimport { CreateCertificateState } from \"./lro/create/operation\";\nimport { RecoverDeletedCertificateState } from \"./lro/recover/operation\";\nimport { parseCertificateBytes } from \"./utils\";\nimport { KeyVaultCertificateIdentifier, parseKeyVaultCertificateIdentifier } from \"./identifier\";\nimport {\n coreContactsToCertificateContacts,\n getCertificateFromCertificateBundle,\n getCertificateOperationFromCoreOperation,\n getCertificateWithPolicyFromCertificateBundle,\n getDeletedCertificateFromDeletedCertificateBundle,\n getDeletedCertificateFromItem,\n getPropertiesFromCertificateBundle,\n toCoreAttributes,\n toCorePolicy,\n toPublicIssuer,\n toPublicPolicy\n} from \"./transformations\";\nimport { KeyVaultCertificatePollOperationState } from \"./lro/keyVaultCertificatePoller\";\n\nexport {\n CertificateClientOptions,\n ActionType,\n AdministratorContact,\n ArrayOneOrMore,\n BackupCertificateResult,\n BeginCreateCertificateOptions,\n BeginDeleteCertificateOptions,\n BeginRecoverDeletedCertificateOptions,\n KeyVaultCertificate,\n KeyVaultCertificateWithPolicy,\n BackupCertificateOptions,\n CertificateContentType,\n CertificateProperties,\n CertificateIssuer,\n CertificateOperation,\n CertificateOperationError,\n CertificatePolicy,\n ImportCertificatePolicy,\n CertificatePolicyAction,\n CertificatePolicyProperties,\n PolicySubjectProperties,\n CertificateTags,\n CreateCertificateOptions,\n CertificatePollerOptions,\n KeyVaultCertificateIdentifier,\n parseKeyVaultCertificateIdentifier,\n PollerLike,\n CreateCertificateState,\n DeleteCertificateState,\n RecoverDeletedCertificateState,\n CertificateOperationState,\n CoreSubjectAlternativeNames,\n RequireAtLeastOne,\n CertificateContactAll,\n CertificateContact,\n DeleteCertificateOperationOptions,\n DeleteContactsOptions,\n DeleteIssuerOptions,\n DeletedCertificate,\n DeletionRecoveryLevel,\n DefaultCertificatePolicy,\n ErrorModel,\n GetContactsOptions,\n GetIssuerOptions,\n GetCertificateOperationOptions,\n GetPlainCertificateOperationOptions,\n GetCertificateOptions,\n GetCertificatePolicyOptions,\n GetCertificateVersionOptions,\n GetDeletedCertificateOptions,\n ImportCertificateOptions,\n IssuerAttributes,\n IssuerCredentials,\n IssuerParameters,\n IssuerProperties,\n CertificateKeyType,\n CertificateKeyCurveName,\n KeyUsageType,\n LifetimeAction,\n ListPropertiesOfCertificatesOptions,\n ListPropertiesOfCertificateVersionsOptions,\n ListPropertiesOfIssuersOptions,\n ListDeletedCertificatesOptions,\n MergeCertificateOptions,\n PipelineOptions,\n PurgeDeletedCertificateOptions,\n RestoreCertificateBackupOptions,\n SetContactsOptions,\n SubjectAlternativeNamesAll,\n CreateIssuerOptions,\n SubjectAlternativeNames,\n UpdateIssuerOptions,\n UpdateCertificatePropertiesOptions as UpdateCertificateOptions,\n UpdateCertificatePolicyOptions,\n WellKnownIssuerNames as WellKnownIssuer,\n X509CertificateProperties,\n logger,\n CancelCertificateOperationOptions,\n KeyVaultCertificatePollOperationState,\n KnownCertificateKeyCurveNames,\n KnownDeletionRecoveryLevels,\n KnownCertificateKeyTypes,\n KnownKeyUsageTypes\n};\n\n/**\n * Deprecated KeyVault copy of core-lro's PollerLike.\n */\n// eslint-disable-next-line no-use-before-define\nexport type KVPollerLike<TState extends PollOperationState<TResult>, TResult> = PollerLike<\n TState,\n TResult\n>;\n\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CertificateClient\");\n\n/**\n * The client to interact with the KeyVault certificates functionality\n */\nexport class CertificateClient {\n /**\n * The base URL to the vault\n */\n public readonly vaultUrl: string;\n\n private readonly client: KeyVaultClient;\n\n /**\n * Creates an instance of CertificateClient.\n * @param vaultUrl - the base URL to the vault.\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 vaultUrl: string,\n credential: TokenCredential,\n pipelineOptions: CertificateClientOptions = {}\n ) {\n this.vaultUrl = vaultUrl;\n\n const libInfo = `azsdk-js-keyvault-certificates/${SDK_VERSION}`;\n if (pipelineOptions.userAgentOptions) {\n pipelineOptions.userAgentOptions.userAgentPrefix =\n pipelineOptions.userAgentOptions.userAgentPrefix !== undefined\n ? `${pipelineOptions.userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo;\n } else {\n pipelineOptions.userAgentOptions = {\n userAgentPrefix: libInfo\n };\n }\n\n const authPolicy = isTokenCredential(credential)\n ? challengeBasedAuthenticationPolicy(credential)\n : signingPolicy(credential);\n\n const internalPipelineOptions: 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.client = new KeyVaultClient(\n pipelineOptions.serviceVersion || LATEST_API_VERSION,\n createPipelineFromOptions(internalPipelineOptions, authPolicy)\n );\n }\n\n private async *listPropertiesOfCertificatesPage(\n continuationState: PageSettings,\n options: ListPropertiesOfCertificatesOptions = {}\n ): AsyncIterableIterator<CertificateProperties[]> {\n if (continuationState.continuationToken == null) {\n const optionsComplete: KeyVaultClientGetCertificatesOptionalParams = {\n maxresults: continuationState.maxPageSize,\n includePending: options.includePending,\n ...options\n };\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificates\",\n optionsComplete,\n (updatedOptions) => this.client.getCertificates(this.vaultUrl, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificates\",\n options,\n (updatedOptions) =>\n this.client.getCertificates(continuationState.continuationToken!, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n } else {\n break;\n }\n }\n }\n\n private async *listPropertiesOfCertificatesAll(\n options: ListPropertiesOfCertificatesOptions = {}\n ): AsyncIterableIterator<CertificateProperties> {\n const f = {};\n\n for await (const page of this.listPropertiesOfCertificatesPage(f, options)) {\n for (const certificate of page) {\n yield certificate;\n }\n }\n }\n\n /**\n * Iterates the latest version of all certificates in the vault. The full certificate identifier and attributes are provided\n * in the response. No values are returned for the certificates. This operations requires the certificates/list permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * // All in one call\n * for await (const certificateProperties of client.listPropertiesOfCertificates()) {\n * console.log(certificateProperties);\n * }\n * // By pages\n * for await (const page of client.listPropertiesOfCertificates().byPage()) {\n * for (const certificateProperties of page) {\n * console.log(certificateProperties);\n * }\n * }\n * ```\n * List all versions of the specified certificate.\n * @param options - The optional parameters\n */\n public listPropertiesOfCertificates(\n options: ListPropertiesOfCertificatesOptions = {}\n ): PagedAsyncIterableIterator<CertificateProperties> {\n const iter = this.listPropertiesOfCertificatesAll(options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfCertificatesPage(settings, options)\n };\n\n return result;\n }\n\n private async *listPropertiesOfCertificateVersionsPage(\n certificateName: string,\n continuationState: PageSettings,\n options: ListPropertiesOfCertificateVersionsOptions = {}\n ): AsyncIterableIterator<CertificateProperties[]> {\n if (continuationState.continuationToken == null) {\n const optionsComplete: KeyVaultClientGetCertificateVersionsOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options\n };\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificateVersions\",\n optionsComplete,\n (updatedOptions) =>\n this.client.getCertificateVersions(this.vaultUrl, certificateName, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificateVersions\",\n options,\n (updatedOptions) =>\n this.client.getCertificateVersions(\n continuationState.continuationToken!,\n certificateName,\n updatedOptions\n )\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n } else {\n break;\n }\n }\n }\n\n private async *listPropertiesOfCertificateVersionsAll(\n certificateName: string,\n options: ListPropertiesOfCertificateVersionsOptions = {}\n ): AsyncIterableIterator<CertificateProperties> {\n const f = {};\n\n for await (const page of this.listPropertiesOfCertificateVersionsPage(\n certificateName,\n f,\n options\n )) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Returns the versions of a certificate in the specified key\n * vault. This operation requires the certificates/list permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * for await (const certificateProperties of client.listPropertiesOfCertificateVersions(\"MyCertificate\")) {\n * console.log(certificateProperties.version!);\n * }\n * ```\n * List the versions of a certificate.\n * @param certificateName - The name of the certificate.\n * @param options - The optional parameters\n */\n public listPropertiesOfCertificateVersions(\n certificateName: string,\n options: ListPropertiesOfCertificateVersionsOptions = {}\n ): PagedAsyncIterableIterator<CertificateProperties> {\n const iter = this.listPropertiesOfCertificateVersionsAll(certificateName, options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfCertificateVersionsPage(certificateName, settings, options)\n };\n\n return result;\n }\n\n /**\n * The DELETE operation applies to any certificate stored in Azure Key Vault. DELETE cannot be applied\n * to an individual version of a certificate.\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * This operation requires the certificates/delete permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const createPoller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await createPoller.pollUntilDone();\n *\n * const deletePoller = await client.beginDeleteCertificate(\"MyCertificate\");\n *\n * // Serializing the poller\n * const serialized = deletePoller.toString();\n *\n * // A new poller can be created with:\n * // const newPoller = await client.beginDeleteCertificate(\"MyCertificate\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const deletedCertificate = await deletePoller.pollUntilDone();\n * console.log(deletedCertificate);\n * ```\n * Deletes a certificate from a specified key vault.\n * @param certificateName - The name of the certificate.\n * @param options - The optional parameters\n */\n public async beginDeleteCertificate(\n certificateName: string,\n options: BeginDeleteCertificateOptions = {}\n ): Promise<PollerLike<DeleteCertificateState, DeletedCertificate>> {\n const poller = new DeleteCertificatePoller({\n certificateName,\n client: this.client,\n vaultUrl: this.vaultUrl,\n ...options,\n operationOptions: options\n });\n // This will initialize the poller's operation (the deletion of the secret).\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes all of the certificate contacts. This operation requires the certificates/managecontacts permission.\n *\n * Example usage:\n * ```ts\n * let client = new CertificateClient(url, credentials);\n * await client.setContacts([{\n * email: \"b@b.com\",\n * name: \"b\",\n * phone: \"222222222222\"\n * }]);\n * await client.deleteContacts();\n * ```\n * Deletes all of the certificate contacts\n * @param options - The optional parameters\n */\n public deleteContacts(\n options: DeleteContactsOptions = {}\n ): Promise<CertificateContact[] | undefined> {\n return withTrace(\"deleteContacts\", options, async (updatedOptions) => {\n const result = await this.client.deleteCertificateContacts(this.vaultUrl, updatedOptions);\n return coreContactsToCertificateContacts(result._response.parsedBody);\n });\n }\n\n /**\n * Sets the certificate contacts for the key vault. This operation requires the certificates/managecontacts permission.\n *\n * Example usage:\n * ```ts\n * let client = new CertificateClient(url, credentials);\n * await client.setContacts([{\n * email: \"b@b.com\",\n * name: \"b\",\n * phone: \"222222222222\"\n * }]);\n * ```\n * Sets the certificate contacts.\n * @param contacts - The contacts to use\n * @param options - The optional parameters\n */\n public setContacts(\n contacts: CertificateContact[],\n options: SetContactsOptions = {}\n ): Promise<CertificateContact[] | undefined> {\n const coreContacts = contacts.map((x) => ({\n emailAddress: x ? x.email : undefined,\n name: x ? x.name : undefined,\n phone: x ? x.phone : undefined\n }));\n\n return withTrace(\"setContacts\", options, async (updatedOptions) => {\n const result = await this.client.setCertificateContacts(\n this.vaultUrl,\n { contactList: coreContacts },\n updatedOptions\n );\n return coreContactsToCertificateContacts(result._response.parsedBody);\n });\n }\n\n /**\n * Returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission.\n *\n * Example usage:\n * ```ts\n * let client = new CertificateClient(url, credentials);\n * await client.setContacts([{\n * email: \"b@b.com\",\n * name: \"b\",\n * phone: \"222222222222\"\n * }]);\n * const contacts = await client.getContacts();\n * console.log(contacts);\n * ```\n * Sets the certificate contacts.\n * @param options - The optional parameters\n */\n public getContacts(options: GetContactsOptions = {}): Promise<CertificateContact[] | undefined> {\n return withTrace(\"getContacts\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateContacts(this.vaultUrl, updatedOptions);\n return coreContactsToCertificateContacts(result);\n });\n }\n\n private async *listPropertiesOfIssuersPage(\n continuationState: PageSettings,\n options: ListPropertiesOfIssuersOptions = {}\n ): AsyncIterableIterator<IssuerProperties[]> {\n if (continuationState.continuationToken == null) {\n const requestOptionsComplete: KeyVaultClientGetCertificateIssuersOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options\n };\n const currentSetResponse = await withTrace(\n \"listPropertiesOfIssuers\",\n requestOptionsComplete,\n (updatedOptions) => this.client.getCertificateIssuers(this.vaultUrl, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value;\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listPropertiesOfIssuers\",\n options,\n (updatedOptions) =>\n this.client.getCertificateIssuers(continuationState.continuationToken!, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value;\n } else {\n break;\n }\n }\n }\n\n private async *listPropertiesOfIssuersAll(\n options: ListPropertiesOfIssuersOptions = {}\n ): AsyncIterableIterator<IssuerProperties> {\n const f = {};\n\n for await (const page of this.listPropertiesOfIssuersPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * // All in one call\n * for await (const issuerProperties of client.listPropertiesOfIssuers()) {\n * console.log(issuerProperties);\n * }\n * // By pages\n * for await (const page of client.listPropertiesOfIssuers().byPage()) {\n * for (const issuerProperties of page) {\n * console.log(issuerProperties);\n * }\n * }\n * ```\n * List the certificate issuers.\n * @param options - The optional parameters\n */\n public listPropertiesOfIssuers(\n options: ListPropertiesOfIssuersOptions = {}\n ): PagedAsyncIterableIterator<IssuerProperties> {\n const iter = this.listPropertiesOfIssuersAll(options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listPropertiesOfIssuersPage(settings, options)\n };\n\n return result;\n }\n\n /**\n * The createIssuer operation adds or updates the specified certificate issuer. This\n * operation requires the certificates/setissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * ```\n * Sets the specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param provider - The issuer provider.\n * @param options - The optional parameters\n */\n public createIssuer(\n issuerName: string,\n provider: string,\n options: CreateIssuerOptions = {}\n ): Promise<CertificateIssuer> {\n return withTrace(\"createIssuer\", options, async (updatedOptions) => {\n const { accountId, password } = updatedOptions;\n\n const generatedOptions: KeyVaultClientSetCertificateIssuerOptionalParams = {\n ...updatedOptions,\n credentials: {\n accountId,\n password\n }\n };\n\n if (\n updatedOptions.organizationId ||\n (updatedOptions.administratorContacts && updatedOptions.administratorContacts.length)\n ) {\n generatedOptions.organizationDetails = {\n id: updatedOptions.organizationId,\n adminDetails: updatedOptions.administratorContacts\n ? updatedOptions.administratorContacts.map((x) => ({\n emailAddress: x.email,\n phone: x.phone,\n firstName: x.firstName,\n lastName: x.lastName\n }))\n : undefined\n };\n }\n\n if (updatedOptions.enabled !== undefined) {\n generatedOptions.attributes = {\n enabled: updatedOptions.enabled\n };\n }\n\n const result = await this.client.setCertificateIssuer(\n this.vaultUrl,\n issuerName,\n provider,\n generatedOptions\n );\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * The updateIssuer operation performs an update on the specified certificate issuer\n * entity. This operation requires the certificates/setissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * await client.updateIssuer(\"IssuerName\", {\n * provider: \"Provider2\"\n * });\n * ```\n * Updates the specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param options - The optional parameters\n */\n public async updateIssuer(\n issuerName: string,\n options: UpdateIssuerOptions = {}\n ): Promise<CertificateIssuer> {\n return withTrace(\"updateIssuer\", options, async (updatedOptions) => {\n const { accountId, password } = options;\n\n const generatedOptions: KeyVaultClientSetCertificateIssuerOptionalParams = {\n ...updatedOptions,\n credentials: {\n accountId,\n password\n }\n };\n\n if (\n updatedOptions.organizationId ||\n (updatedOptions.administratorContacts && updatedOptions.administratorContacts.length)\n ) {\n generatedOptions.organizationDetails = {\n id: updatedOptions.organizationId,\n adminDetails: updatedOptions.administratorContacts\n ? updatedOptions.administratorContacts.map((x) => ({\n emailAddress: x.email,\n phone: x.phone,\n firstName: x.firstName,\n lastName: x.lastName\n }))\n : undefined\n };\n }\n\n if (updatedOptions.enabled) {\n generatedOptions.attributes = {\n enabled: updatedOptions.enabled\n };\n }\n\n const result = await this.client.updateCertificateIssuer(\n this.vaultUrl,\n issuerName,\n generatedOptions\n );\n\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * The getIssuer operation returns the specified certificate issuer resources in the\n * specified key vault. This operation requires the certificates/manageissuers/getissuers\n * permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * const certificateIssuer = await client.getIssuer(\"IssuerName\");\n * console.log(certificateIssuer);\n * ```\n * Gets he specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param options - The optional parameters\n */\n public getIssuer(issuerName: string, options: GetIssuerOptions = {}): Promise<CertificateIssuer> {\n return withTrace(\"getIssuer\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateIssuer(\n this.vaultUrl,\n issuerName,\n updatedOptions\n );\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * The deleteIssuer operation permanently removes the specified certificate issuer from\n * the vault. This operation requires the certificates/manageissuers/deleteissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Provider\");\n * await client.deleteIssuer(\"IssuerName\");\n * ```\n * Deletes the specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param options - The optional parameters\n */\n public deleteIssuer(\n issuerName: string,\n options: DeleteIssuerOptions = {}\n ): Promise<CertificateIssuer> {\n return withTrace(\"deleteIssuer\", options, async (updatedOptions) => {\n const result = await this.client.deleteCertificateIssuer(\n this.vaultUrl,\n issuerName,\n updatedOptions\n );\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * Creates a new certificate. If this is the first version, the certificate resource is created.\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * **Note:** Sending `Self` as the `issuerName` of the certificate's policy will create a self-signed certificate.\n *\n * This operation requires the certificates/create permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const certificatePolicy = {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * };\n * const createPoller = await client.beginCreateCertificate(\"MyCertificate\", certificatePolicy);\n *\n * // The pending certificate can be obtained by calling the following method:\n * const pendingCertificate = createPoller.getResult();\n *\n * // Serializing the poller\n * const serialized = createPoller.toString();\n *\n * // A new poller can be created with:\n * // const newPoller = await client.beginCreateCertificate(\"MyCertificate\", certificatePolicy, { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const certificate = await createPoller.pollUntilDone();\n * console.log(certificate);\n * ```\n * Creates a certificate\n * @param certificateName - The name of the certificate\n * @param certificatePolicy - The certificate's policy\n * @param options - Optional parameters\n */\n public async beginCreateCertificate(\n certificateName: string,\n policy: CertificatePolicy,\n options: BeginCreateCertificateOptions = {}\n ): Promise<PollerLike<CreateCertificateState, KeyVaultCertificateWithPolicy>> {\n const poller = new CreateCertificatePoller({\n vaultUrl: this.vaultUrl,\n client: this.client,\n certificateName,\n certificatePolicy: policy,\n createCertificateOptions: options,\n operationOptions: options,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom\n });\n // This will initialize the poller's operation (the creation of the secret).\n await poller.poll();\n return poller;\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const poller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await poller.pollUntilDone();\n * const certificate = await client.getCertificate(\"MyCertificate\");\n * console.log(certificate);\n * ```\n * Retrieves a certificate from the certificate's name (includes the certificate policy)\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets information about a specific certificate on a specific version. It won't return the certificate's policy. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const poller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await poller.pollUntilDone();\n * const certificateWithPolicy = await client.getCertificate(\"MyCertificate\");\n * const certificate = await client.getCertificateVersion(\"MyCertificate\", certificateWithPolicy.properties.version!);\n * console.log(certificate);\n * ```\n * Retrieves a certificate from the certificate's name and a specified version\n * @param certificateName - The name of the certificate\n * @param version - The specific version of the certificate\n * @param options - The optional parameters\n */\n public getCertificateVersion(\n certificateName: string,\n version: string,\n options: GetCertificateVersionOptions = {}\n ): Promise<KeyVaultCertificate> {\n return withTrace(\"getCertificateVersion\", options, async (updatedOptions) => {\n if (!version) {\n throw new Error(\"The 'version' cannot be empty.\");\n }\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n version,\n updatedOptions\n );\n return getCertificateFromCertificateBundle(result);\n });\n }\n\n /**\n * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format.\n * If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * // See: @azure/keyvault-secrets\n * const certificateSecret = await secretClient.getSecret(\"MyCertificate\");\n * const base64EncodedCertificate = certificateSecret.value!;\n * let buffer: Uint8Array;\n *\n * if (isNode) {\n * buffer = Buffer.from(base64EncodedCertificate, \"base64\");\n * } else {\n * buffer = Uint8Array.from(atob(base64EncodedCertificate), (c) => c.charCodeAt(0));\n * }\n *\n * await client.importCertificate(\"MyCertificate\", buffer);\n * ```\n * Imports a certificate from a certificate's secret value\n * @param certificateName - The name of the certificate\n * @param certificateBytes - The PFX or ASCII PEM formatted value of the certificate containing both the X.509 certificates and the private key\n * @param options - The optional parameters\n */\n public importCertificate(\n certificateName: string,\n certificateBytes: Uint8Array,\n options: ImportCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"importCertificate\", options, async (updatedOptions) => {\n const base64EncodedCertificate = parseCertificateBytes(\n certificateBytes,\n updatedOptions.policy?.contentType\n );\n const result = await this.client.importCertificate(\n this.vaultUrl,\n certificateName,\n base64EncodedCertificate,\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * The getCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * const policy = await client.getCertificatePolicy(\"MyCertificate\");\n * console.log(policy);\n * ```\n * Gets a certificate's policy\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public getCertificatePolicy(\n certificateName: string,\n options: GetCertificatePolicyOptions = {}\n ): Promise<CertificatePolicy> {\n return withTrace(\"getCertificatePolicy\", options, async (updatedOptions) => {\n const result = await this.client.getCertificatePolicy(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return toPublicPolicy(result._response.parsedBody);\n });\n }\n\n /**\n * Updates the certificate policy for the specified certificate. This operation requires the certificates/update permission.\n * Gets a certificate's policy\n * @param certificateName - The name of the certificate\n * @param policy - The certificate policy\n * @param options - The optional parameters\n */\n public updateCertificatePolicy(\n certificateName: string,\n policy: CertificatePolicy,\n options: UpdateCertificatePolicyOptions = {}\n ): Promise<CertificatePolicy> {\n return withTrace(\"updateCertificatePolicy\", options, async (updatedOptions) => {\n const corePolicy = toCorePolicy(undefined, policy);\n const result = await this.client.updateCertificatePolicy(\n this.vaultUrl,\n certificateName,\n corePolicy,\n updatedOptions\n );\n return toPublicPolicy(result._response.parsedBody);\n });\n }\n\n /**\n * Applies the specified update on the given certificate; the only elements updated are the\n * certificate's attributes. This operation requires the certificates/update permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await client.updateCertificateProperties(\"MyCertificate\", \"\", {\n * tags: {\n * customTag: \"value\"\n * }\n * });\n * ```\n * Updates a certificate\n * @param certificateName - The name of the certificate\n * @param version - The version of the certificate to update\n * @param options - The options, including what to update\n */\n public updateCertificateProperties(\n certificateName: string,\n version: string,\n options: UpdateCertificatePropertiesOptions = {}\n ): Promise<KeyVaultCertificate> {\n return withTrace(\"updateCertificateProperties\", options, async (updatedOptions) => {\n const result = await this.client.updateCertificate(this.vaultUrl, certificateName, version, {\n ...updatedOptions,\n certificateAttributes: toCoreAttributes(options)\n });\n return getCertificateFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission.\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const createPoller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n *\n * const poller = await client.getCertificateOperation(\"MyCertificate\");\n * const pendingCertificate = poller.getResult();\n *\n * const certificateOperation = poller.getOperationState().certificateOperation;\n * console.log(certificateOperation);\n * ```\n * Gets a certificate's poller operation\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public async getCertificateOperation(\n certificateName: string,\n options: GetCertificateOperationOptions = {}\n ): Promise<PollerLike<CertificateOperationState, KeyVaultCertificateWithPolicy>> {\n const poller = new CertificateOperationPoller({\n certificateName,\n client: this.client,\n vaultUrl: this.vaultUrl,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options\n });\n // This will initialize the poller's operation, which pre-populates some necessary properties.\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes the creation operation for a specified certificate that is in the process of being created.\n * The certificate is no longer created. This operation requires the certificates/update permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await client.deleteCertificateOperation(\"MyCertificate\");\n * await client.getCertificateOperation(\"MyCertificate\"); // Throws error: Pending certificate not found: \"MyCertificate\"\n * ```\n * Delete a certificate's operation\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public deleteCertificateOperation(\n certificateName: string,\n options: DeleteCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"deleteCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.deleteCertificateOperation(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Unknown\",\n * subject: \"cn=MyCert\"\n * });\n * const poller = await client.getCertificateOperation(\"MyCertificate\");\n * const { csr } = poller.getOperationState().certificateOperation!;\n * const base64Csr = Buffer.from(csr!).toString(\"base64\");\n * const wrappedCsr = [\"-----BEGIN CERTIFICATE REQUEST-----\", base64Csr, \"-----END CERTIFICATE REQUEST-----\"].join(\"\\n\");\n *\n * const fs = require(\"fs\");\n * fs.writeFileSync(\"test.csr\", wrappedCsr);\n *\n * // Certificate available locally made using:\n * // openssl genrsa -out ca.key 2048\n * // openssl req -new -x509 -key ca.key -out ca.crt\n * // You can read more about how to create a fake certificate authority here: https://gist.github.com/Soarez/9688998\n *\n * const childProcess = require(\"child_process\");\n * childProcess.execSync(\"openssl x509 -req -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out test.crt\");\n * const base64Crt = fs.readFileSync(\"test.crt\").toString().split(\"\\n\").slice(1, -1).join(\"\");\n *\n * await client.mergeCertificate(\"MyCertificate\", [Buffer.from(base64Crt)]);\n * ```\n * Merges a signed certificate request into a pending certificate\n * @param certificateName - The name of the certificate\n * @param x509Certificates - The certificate(s) to merge\n * @param options - The optional parameters\n */\n public mergeCertificate(\n certificateName: string,\n x509Certificates: Uint8Array[],\n options: MergeCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"mergeCertificate\", options, async (updatedOptions) => {\n const result = await this.client.mergeCertificate(\n this.vaultUrl,\n certificateName,\n x509Certificates,\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded.\n * This operation requires the certificates/backup permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * const backup = await client.backupCertificate(\"MyCertificate\");\n * ```\n * Generates a backup of a certificate\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public backupCertificate(\n certificateName: string,\n options: BackupCertificateOptions = {}\n ): Promise<Uint8Array | undefined> {\n return withTrace(\"backupCertificate\", options, async (updatedOptions) => {\n const result = await this.client.backupCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return result._response.parsedBody.value;\n });\n }\n\n /**\n * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * const backup = await client.backupCertificate(\"MyCertificate\");\n * const poller = await client.beginDeleteCertificate(\"MyCertificate\");\n * await poller.pollUntilDone();\n * // Some time is required before we're able to restore the certificate\n * await client.restoreCertificateBackup(backup!);\n * ```\n * Restores a certificate from a backup\n * @param backup - The back-up certificate to restore from\n * @param options - The optional parameters\n */\n public restoreCertificateBackup(\n backup: Uint8Array,\n options: RestoreCertificateBackupOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"restoreCertificateBackup\", options, async (updatedOptions) => {\n const result = await this.client.restoreCertificate(this.vaultUrl, backup, updatedOptions);\n return getCertificateWithPolicyFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n private async *listDeletedCertificatesPage(\n continuationState: PageSettings,\n options: ListDeletedCertificatesOptions = {}\n ): AsyncIterableIterator<DeletedCertificate[]> {\n if (continuationState.continuationToken == null) {\n const requestOptionsComplete: KeyVaultClientGetDeletedCertificatesOptionalParams = {\n maxresults: continuationState.maxPageSize,\n includePending: options.includePending,\n ...options\n };\n const currentSetResponse = await withTrace(\n \"listDeletedCertificates\",\n requestOptionsComplete,\n (updatedOptions) => this.client.getDeletedCertificates(this.vaultUrl, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedCertificateFromItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listDeletedCertificates\",\n options,\n (updatedOptions) =>\n this.client.getDeletedCertificates(continuationState.continuationToken!, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedCertificateFromItem, this);\n } else {\n break;\n }\n }\n }\n\n private async *listDeletedCertificatesAll(\n options: ListDeletedCertificatesOptions = {}\n ): AsyncIterableIterator<DeletedCertificate> {\n const f = {};\n\n for await (const page of this.listDeletedCertificatesPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific\n * information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * for await (const deletedCertificate of client.listDeletedCertificates()) {\n * console.log(deletedCertificate);\n * }\n * for await (const page of client.listDeletedCertificates().byPage()) {\n * for (const deletedCertificate of page) {\n * console.log(deletedCertificate);\n * }\n * }\n * ```\n * Lists deleted certificates\n * @param options - The optional parameters\n */\n public listDeletedCertificates(\n options: ListDeletedCertificatesOptions = {}\n ): PagedAsyncIterableIterator<DeletedCertificate> {\n const iter = this.listDeletedCertificatesAll(options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listDeletedCertificatesPage(settings, options)\n };\n\n return result;\n }\n\n /**\n * retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the\n * current deletion recovery level. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const deletedCertificate = await client.getDeletedCertificate(\"MyDeletedCertificate\");\n * console.log(\"Deleted certificate:\", deletedCertificate);\n * ```\n * Gets a deleted certificate\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public getDeletedCertificate(\n certificateName: string,\n options: GetDeletedCertificateOptions = {}\n ): Promise<DeletedCertificate> {\n return withTrace(\"getDeletedCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getDeletedCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getDeletedCertificateFromDeletedCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the\n * recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const deletePoller = await client.beginDeleteCertificate(\"MyCertificate\");\n * await deletePoller.pollUntilDone();\n * // Deleting a certificate takes time, make sure to wait before purging it\n * client.purgeDeletedCertificate(\"MyCertificate\");\n * ```\n * Gets a deleted certificate\n * @param certificateName - The name of the deleted certificate to purge\n * @param options - The optional parameters\n */\n public async purgeDeletedCertificate(\n certificateName: string,\n options: PurgeDeletedCertificateOptions = {}\n ): Promise<null> {\n return withTrace(\"purgeDeletedCertificate\", options, async (updatedOptions) => {\n await this.client.purgeDeletedCertificate(this.vaultUrl, certificateName, updatedOptions);\n return null;\n });\n }\n\n /**\n * Recovers the deleted certificate in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * This operation requires the certificates/recover permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n *\n * const deletePoller = await client.beginDeleteCertificate(\"MyCertificate\");\n * await deletePoller.pollUntilDone();\n *\n * const recoverPoller = await client.beginRecoverDeletedCertificate(\"MyCertificate\");\n *\n * // Serializing the poller\n * const serialized = deletePoller.toString();\n *\n * // A new poller can be created with:\n * // const newPoller = await client.beginRecoverDeletedCertificate(\"MyCertificate\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const certificate = await recoverPoller.pollUntilDone();\n * console.log(certificate);\n * ```\n * Recovers a deleted certificate\n * @param certificateName - The name of the deleted certificate\n * @param options - The optional parameters\n */\n public async beginRecoverDeletedCertificate(\n certificateName: string,\n options: BeginRecoverDeletedCertificateOptions = {}\n ): Promise<PollerLike<RecoverDeletedCertificateState, KeyVaultCertificateWithPolicy>> {\n const poller = new RecoverDeletedCertificatePoller({\n certificateName,\n client: this.client,\n vaultUrl: this.vaultUrl,\n ...options,\n operationOptions: options\n });\n // This will initialize the poller's operation (the recovery of the deleted secret).\n await poller.poll();\n return poller;\n }\n}\n"],"names":["createClientLogger","WellKnownIssuerNames","KnownCertificateKeyCurveNames","KnownCertificateKeyTypes","ContactsMapper","CertificatePolicyMapper","coreHttp.ServiceClient","coreHttp.getDefaultUserAgentValue","coreHttp.operationOptionsToRequestOptionsBase","coreHttp.Serializer","Mappers.CertificateListResult","Mappers.KeyVaultError","Parameters.maxresults","Parameters.includePending","Parameters.apiVersion","Parameters.vaultBaseUrl","Parameters.accept","Mappers.DeletedCertificateBundle","Parameters.certificateName","Mappers.Contacts","Parameters.contacts","Parameters.contentType","Mappers.CertificateIssuerListResult","Mappers.IssuerBundle","Mappers.CertificateIssuerSetParameters","Parameters.issuerName","Mappers.CertificateIssuerUpdateParameters","Mappers.CertificateOperation","Mappers.CertificateCreateParameters","Parameters.certificateName1","Mappers.CertificateBundle","Mappers.CertificateImportParameters","Mappers.CertificatePolicy","Parameters.certificatePolicy2","Mappers.CertificateUpdateParameters","Parameters.certificateVersion","Mappers.CertificateOperationUpdateParameter","Mappers.CertificateMergeParameters","Mappers.BackupCertificateResult","Mappers.CertificateRestoreParameters","Mappers.DeletedCertificateListResult","Parameters.nextLink","ExpiringAccessTokenCache","BaseRequestPolicy","Constants","url.parse","createSpanFunction","SpanStatusCode","Poller","delay","withTrace","isTokenCredential","signingPolicy","createPipelineFromOptions","__asyncValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/log.ts","../src/certificatesModels.ts","../src/generated/models/index.ts","../src/generated/models/mappers.ts","../src/generated/models/parameters.ts","../src/generated/keyVaultClientContext.ts","../src/generated/keyVaultClient.ts","../src/constants.ts","../../keyvault-common/src/parseWWWAuthenticate.ts","../../keyvault-common/src/challengeBasedAuthenticationPolicy.ts","../../keyvault-common/src/parseKeyvaultIdentifier.ts","../../keyvault-common/src/tracingHelpers.ts","../src/lro/keyVaultCertificatePoller.ts","../src/identifier.ts","../src/transformations.ts","../src/lro/create/operation.ts","../src/lro/create/poller.ts","../src/lro/operation/operation.ts","../src/lro/operation/poller.ts","../src/lro/delete/operation.ts","../src/lro/delete/poller.ts","../src/lro/recover/operation.ts","../src/lro/recover/poller.ts","../src/utils.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-certificates\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as coreHttp from \"@azure/core-http\";\nimport {\n DeletionRecoveryLevel,\n KeyUsageType,\n JsonWebKeyType as CertificateKeyType,\n JsonWebKeyCurveName as CertificateKeyCurveName,\n} from \"./generated/models\";\n\n/**\n * The latest supported KeyVault service API version\n */\nexport const LATEST_API_VERSION = \"7.3\";\n\n/**\n * The optional parameters accepted by the KeyVault's KeyClient\n */\nexport interface CertificateClientOptions extends coreHttp.PipelineOptions {\n /**\n * The accepted versions of the KeyVault's service API.\n */\n serviceVersion?: \"7.0\" | \"7.1\" | \"7.2\" | \"7.3\";\n}\n\n/**\n * The key vault server error.\n */\nexport interface CertificateOperationError {\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 * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly innerError?: CertificateOperationError;\n}\n\n/**\n * The key vault server error model.\n * @deprecated - Please use {@link CertificateOperationError} instead.\n */\n// This was re-exported as-is from generated code in 4.1; however, we should only be using `CertificateOperationError`.\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 * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly innerError?: ErrorModel;\n}\n\n/**\n * A certificate operation is returned in case of asynchronous requests.\n */\nexport interface CertificateOperation {\n /**\n * The certificate id.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly id?: string;\n /**\n * The name of certificate.\n */\n readonly name?: string;\n /**\n * Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.\n */\n issuerName?: string;\n /**\n * Type of certificate to be requested from the issuer provider.\n */\n certificateType?: string;\n /**\n * Indicates if the certificates generated under this policy should be published to certificate\n * transparency logs.\n */\n certificateTransparency?: boolean;\n /**\n * The certificate signing request (CSR) that is being used in the certificate operation.\n */\n csr?: Uint8Array;\n /**\n * Indicates if cancellation was requested on the certificate operation.\n */\n cancellationRequested?: boolean;\n /**\n * Status of the certificate operation.\n */\n status?: string;\n /**\n * The status details of the certificate operation.\n */\n statusDetails?: string;\n /**\n * Error encountered, if any, during the certificate operation.\n */\n error?: CertificateOperationError;\n /**\n * Location which contains the result of the certificate operation.\n */\n target?: string;\n /**\n * Identifier for the certificate operation.\n */\n requestId?: string;\n /**\n * The vault URI.\n */\n readonly vaultUrl?: string;\n}\n\n/**\n * Defines values for contentType.\n * Possible values include: 'application/x-pem-file', 'application/x-pkcs12'\n * @readonly\n */\nexport type CertificateContentType = \"application/x-pem-file\" | \"application/x-pkcs12\" | undefined;\n\n/**\n * An interface representing a certificate without the certificate's policy\n */\nexport interface KeyVaultCertificate {\n /**\n * CER contents of x509 certificate.\n */\n cer?: Uint8Array;\n /**\n * Certificate identifier.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n id?: string;\n /**\n * The key id.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly keyId?: string;\n /**\n * The secret id.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly secretId?: string;\n /**\n * The name of certificate.\n */\n readonly name: string;\n /**\n * The properties of the certificate\n */\n properties: CertificateProperties;\n}\n\n/**\n * An interface representing a certificate with its policy\n */\nexport interface KeyVaultCertificateWithPolicy extends KeyVaultCertificate {\n /**\n * The management policy.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly policy?: CertificatePolicy;\n}\n\n/**\n * Well known issuers for choosing a default\n */\nexport enum WellKnownIssuerNames {\n /**\n * For self signed certificates\n */\n Self = \"Self\",\n /**\n * For certificates whose issuer will be defined later\n */\n Unknown = \"Unknown\",\n}\n\n/**\n * An array with one property at minimum.\n */\nexport type ArrayOneOrMore<T> = {\n 0: T;\n} & Array<T>;\n\n/**\n * An interface representing the alternative names of the subject of a certificate policy.\n */\nexport interface SubjectAlternativeNamesAll {\n /**\n * Email addresses.\n */\n emails: ArrayOneOrMore<string>;\n /**\n * Domain names.\n */\n dnsNames: ArrayOneOrMore<string>;\n /**\n * User principal names.\n */\n userPrincipalNames: ArrayOneOrMore<string>;\n}\n\n/**\n * Alternatives to the subject property.\n * If present, it should at least have one of the properties of SubjectAlternativeNamesAll.\n */\nexport type SubjectAlternativeNames = RequireAtLeastOne<SubjectAlternativeNamesAll>;\n\n/**\n * Details of the organization administrator of the certificate issuer.\n */\nexport interface AdministratorContact {\n /**\n * First name.\n */\n firstName?: string;\n /**\n * Last name.\n */\n lastName?: string;\n /**\n * Email address.\n */\n email?: string;\n /**\n * Phone number.\n */\n phone?: string;\n}\n\n/**\n * Action and its trigger that will be performed by Key Vault over the lifetime of a certificate.\n */\nexport interface LifetimeAction {\n /**\n * Percentage of lifetime at which to trigger. Value should be between 1 and 99.\n */\n lifetimePercentage?: number;\n /**\n * Days before expiry to attempt renewal. Value should be between 1 and validity_in_months\n * multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 *\n * 27).\n */\n daysBeforeExpiry?: number;\n /**\n * The action that will be executed.\n */\n action?: CertificatePolicyAction;\n}\n\n/**\n * The action that will be executed.\n */\nexport type CertificatePolicyAction = \"EmailContacts\" | \"AutoRenew\";\n\n/**\n * An interface representing a certificate's policy (without the subject properties).\n */\nexport interface CertificatePolicyProperties {\n /**\n * Indicates if the certificates generated under this policy should be published to certificate\n * transparency logs.\n */\n certificateTransparency?: boolean;\n /**\n * The media type (MIME type).\n *\n * Set to `application/x-pkcs12` when the certificate contains your PKCS#12/PFX bytes,\n * or to `application/x-pem-file` when the certificate contains your ASCII PEM-encoded bytes.\n */\n contentType?: CertificateContentType;\n /**\n * Type of certificate to be requested from the issuer provider.\n */\n certificateType?: string;\n /**\n * When the certificate was created.\n */\n readonly createdOn?: Date;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Whether or not the certificate can be exported\n */\n exportable?: boolean;\n /**\n * The enhanced key usage.\n */\n enhancedKeyUsage?: string[];\n /**\n * Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'.\n */\n issuerName?: WellKnownIssuerNames | string;\n /**\n * Elliptic curve name. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K'\n */\n keyCurveName?: CertificateKeyCurveName;\n /**\n * The key size in bits. For example: 2048, 3072, or 4096 for RSA.\n */\n keySize?: number;\n /**\n * The type of key pair to be used for the certificate. Possible values include: 'EC', 'EC-HSM',\n * 'RSA', 'RSA-HSM', 'oct'\n */\n keyType?: CertificateKeyType;\n /**\n * List of key usages.\n */\n keyUsage?: KeyUsageType[];\n /**\n * Actions that will be performed by Key Vault over the lifetime of a certificate.\n */\n lifetimeActions?: LifetimeAction[];\n /**\n * Indicates if the same key pair will be used on certificate renewal.\n */\n reuseKey?: boolean;\n /**\n * When the object was updated.\n */\n readonly updatedOn?: Date;\n /**\n * The duration that the certificate is valid in months.\n */\n validityInMonths?: number;\n}\n\n/**\n * An interface representing the possible subject properties of a certificate's policy.\n * The final type requires at least one of these properties to exist.\n */\nexport interface PolicySubjectProperties {\n /**\n * The subject name. Should be a valid X509 distinguished Name.\n */\n subject: string;\n /**\n * The subject alternative names.\n */\n subjectAlternativeNames: SubjectAlternativeNames;\n}\n\n/**\n * An type representing a certificate's policy with at least one of the subject properties.\n */\nexport type CertificatePolicy = CertificatePolicyProperties &\n RequireAtLeastOne<PolicySubjectProperties>;\n\n/**\n * A type representing a certificate's policy for import which does not require a SAN or a Subject\n */\nexport type ImportCertificatePolicy = CertificatePolicyProperties &\n Partial<PolicySubjectProperties>;\n\n/**\n * The DefaultCertificatePolicy exports values that\n * are useful as default parameters to methods that\n * modify the certificate's policy.\n */\nexport const DefaultCertificatePolicy = {\n issuerName: \"Self\",\n subject: \"cn=MyCert\",\n};\n\n/**\n * An interface representing the properties of a certificate\n */\nexport interface CertificateProperties {\n /**\n * When the certificate was created.\n */\n readonly createdOn?: Date;\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * Expiry date in UTC.\n */\n readonly expiresOn?: Date;\n /**\n * Certificate identifier.\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly id?: string;\n /**\n * The name of certificate.\n */\n readonly name?: string;\n /**\n * Not before date in UTC.\n */\n notBefore?: Date;\n /**\n * Reflects the deletion recovery level currently in effect for certificates in the current\n * vault. If it contains 'Purgeable', the certificate can be permanently deleted by a privileged\n * user; otherwise, only the system can purge the certificate, at the end of the retention\n * interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable',\n * 'Recoverable+ProtectedSubscription'\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly recoveryLevel?: DeletionRecoveryLevel;\n /**\n * Application specific\n * metadata in the form of key-value pairs.\n */\n tags?: CertificateTags;\n /**\n * When the issuer was updated.\n */\n readonly updatedOn?: Date;\n /**\n * The vault URI.\n */\n readonly vaultUrl?: string;\n /**\n * The version of certificate. May be undefined.\n * **NOTE: This property will not be serialized. It can only be populated by the server.**\n */\n readonly version?: string;\n /**\n * Thumbprint of the certificate.\n */\n readonly x509Thumbprint?: Uint8Array;\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/**\n * An interface representing a deleted certificate.\n */\nexport interface DeletedCertificate extends KeyVaultCertificateWithPolicy {\n /**\n * The time when the certificate was deleted, in UTC\n * **NOTE: This property will not be serialized. It can only be populated by\n * the server.**\n */\n readonly deletedOn?: Date;\n /**\n * The url of the recovery object, used to\n * identify and recover the deleted certificate.\n */\n readonly recoveryId?: string;\n /**\n * The time when the certificate is scheduled\n * 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\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginCreateCertificate}, {@link beginDeleteCertificate} and {@link beginRecoverDeletedCertificate}\n */\nexport interface CertificatePollerOptions extends coreHttp.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 beginCreateCertificate}\n */\nexport interface BeginCreateCertificateOptions\n extends CreateCertificateOptions,\n CertificatePollerOptions {}\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginDeleteCertificate}\n */\nexport type BeginDeleteCertificateOptions = CertificatePollerOptions;\n\n/**\n * An interface representing the optional parameters that can be\n * passed to {@link beginRecoverDeletedCertificate}\n */\nexport type BeginRecoverDeletedCertificateOptions = CertificatePollerOptions;\n\n/**\n * Options for {@link getCertificateOperation}.\n */\nexport type GetCertificateOperationOptions = CertificatePollerOptions;\n\n/**\n * Options for {@link createCertificate}.\n */\nexport interface CreateCertificateOptions\n extends CertificateProperties,\n coreHttp.OperationOptions {}\n\n/**\n * Options for {@link cancelCertificateOperation}.\n */\nexport type CancelCertificateOperationOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link backupCertificate}.\n */\nexport type BackupCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link deleteCertificateOperation}.\n */\nexport type DeleteCertificateOperationOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link deleteCertificate}.\n * @internal\n */\nexport type DeleteCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link deleteContacts}.\n */\nexport type DeleteContactsOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link importCertificate}.\n */\nexport interface ImportCertificateOptions extends coreHttp.OperationOptions {\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * If the private key in base64EncodedCertificate is encrypted, the password used for encryption.\n */\n password?: string;\n /**\n * The management policy.\n */\n policy?: ImportCertificatePolicy;\n /**\n * Application specific\n * metadata in the form of key-value pairs.\n */\n tags?: CertificateTags;\n}\n\n/**\n * Options for {@link deleteIssuer}.\n */\nexport type DeleteIssuerOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link setContacts}.\n */\nexport type SetContactsOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link createIssuer}.\n */\nexport interface CreateIssuerOptions extends coreHttp.OperationOptions {\n /**\n * The user name/account name/account id.\n */\n accountId?: string;\n /**\n * The password/secret/account key.\n */\n password?: string;\n /**\n * Id of the organization.\n */\n organizationId?: string;\n /**\n * Details of the organization's administrator contacts, as provided to the issuer.\n */\n administratorContacts?: AdministratorContact[];\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n}\n\n/**\n * Options for {@link purgeDeletedCertificate}.\n */\nexport type PurgeDeletedCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link updateIssuer}.\n */\nexport interface UpdateIssuerOptions extends CreateIssuerOptions {\n /**\n * The issuer provider.\n */\n provider?: string;\n}\n\n/**\n * Options for {@link getContacts}.\n */\nexport type GetContactsOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getIssuer}.\n */\nexport type GetIssuerOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getPlainCertificateOperation}.\n */\nexport type GetPlainCertificateOperationOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getCertificateVersion}.\n */\nexport type GetCertificateVersionOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getCertificatePolicy}.\n */\nexport type GetCertificatePolicyOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getDeletedCertificate}.\n */\nexport type GetDeletedCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * Options for {@link getCertificate}.\n */\nexport type GetCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing the shape of the Certificate Tags. The tags are just string key-value pairs.\n */\nexport type CertificateTags = { [propertyName: string]: string };\n\n/**\n * Options for {@link updateCertificate}.\n */\nexport interface UpdateCertificatePropertiesOptions\n extends CertificateProperties,\n coreHttp.OperationOptions {}\n\n/**\n * Options for {@link updateCertificatePolicy}.\n */\nexport type UpdateCertificatePolicyOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing the properties of a certificate issuer\n */\nexport interface IssuerProperties {\n /**\n * Certificate Identifier.\n */\n id?: string;\n /**\n * Name of the issuer.\n */\n readonly name?: string;\n /**\n * The issuer provider.\n */\n provider?: string;\n}\n\n/**\n * An interface representing the properties of an issuer.\n */\nexport interface CertificateIssuer extends IssuerProperties {\n /**\n * Determines whether the object is enabled.\n */\n enabled?: boolean;\n /**\n * When the issuer was created.\n */\n readonly createdOn?: Date;\n /**\n * When the issuer was updated.\n */\n readonly updatedOn?: Date;\n /**\n * The user name/account name/account id.\n */\n accountId?: string;\n /**\n * The password/secret/account key.\n */\n password?: string;\n /**\n * Id of the organization.\n */\n organizationId?: string;\n /**\n * Details of the organization's administrator contacts, as provided to the issuer.\n */\n administratorContacts?: AdministratorContact[];\n}\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listPropertiesOfCertificates}.\n */\nexport interface ListPropertiesOfCertificatesOptions extends coreHttp.OperationOptions {\n /**\n * Specifies whether to include certificates which are not completely provisioned.\n */\n includePending?: boolean;\n}\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listPropertiesOfCertificateVersions}.\n */\nexport type ListPropertiesOfCertificateVersionsOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listPropertiesOfIssuers}.\n */\nexport type ListPropertiesOfIssuersOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for CertificateClient paged operations passed to {@link listDeletedCertificates}.\n */\nexport interface ListDeletedCertificatesOptions extends coreHttp.OperationOptions {\n /**\n * Specifies whether to include certificates which are not completely provisioned.\n */\n includePending?: boolean;\n}\n\n/**\n * An interface representing optional parameters for {@link mergeCertificate}.\n */\nexport type MergeCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for {@link recoverDeletedCertificate}.\n * @internal\n */\nexport type RecoverDeletedCertificateOptions = coreHttp.OperationOptions;\n\n/**\n * An interface representing optional parameters for {@link restoreCertificateBackup}.\n */\nexport type RestoreCertificateBackupOptions = coreHttp.OperationOptions;\n\n/**\n * The shape of the contact information for the vault certificates.\n */\nexport interface CertificateContactAll {\n /**\n * Email address of the contact\n */\n email: string;\n /**\n * Name of the contact\n */\n name: string;\n /**\n * Phone number of the contact\n */\n phone: string;\n}\n\n/**\n * RequireAtLeastOne helps create a type where at least one of the properties of an interface (can be any property) is required to exist.\n *\n * This works because of TypeScript's utility types: https://www.typescriptlang.org/docs/handbook/utility-types.html\n * Let's examine it:\n * - `[K in keyof T]-?` this property (K) is valid only if it has the same name as any property of T.\n * - `Required<Pick<T, K>>` makes a new type from T with just the current property in the iteration, and marks it as required\n * - `Partial<Pick<T, Exclude<keyof T, K>>>` makes a new type with all the properties of T, except from the property K.\n * - `&` is what unites the type with only one required property from `Required<...>` with all the optional properties from `Partial<...>`.\n * - `[keyof T]` ensures that only properties of T are allowed.\n */\nexport type RequireAtLeastOne<T> = {\n [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;\n}[keyof T];\n\n/**\n * The contact information for the vault certificates.\n * Each contact will have at least just one of the properties of CertificateContactAll,\n * which are: emailAddress, name or phone.\n */\nexport type CertificateContact = RequireAtLeastOne<CertificateContactAll> | undefined;\n\n/** Known values of {@link CertificateKeyCurveName} that the service accepts. */\nexport enum KnownCertificateKeyCurveNames {\n /**\n * P-256 Key Curve.\n */\n P256 = \"P-256\",\n /**\n * P-384 Key Curve.\n */\n P384 = \"P-384\",\n /**\n * P-521 Key Curve.\n */\n P521 = \"P-521\",\n /**\n * P-256K Key Curve.\n */\n P256K = \"P-256K\",\n}\n\n/** Known values of {@link CertificateKeyType} that the service accepts. */\nexport enum KnownCertificateKeyTypes {\n /**\n * EC Key Type.\n */\n EC = \"EC\",\n /**\n * EC-HSM Key Type.\n */\n ECHSM = \"EC-HSM\",\n /**\n * RSA Key Type.\n */\n RSA = \"RSA\",\n /**\n * RSA-HSM Key Type.\n */\n RSAHSM = \"RSA-HSM\",\n /**\n * oct Key Type\n */\n Oct = \"oct\",\n /**\n * oct-HSM Key Type\n */\n OctHSM = \"oct-HSM\",\n}\n\n/** Known values of {@link KeyUsageType} that the service accepts. */\nexport enum KnownKeyUsageTypes {\n /**\n * DigitalSignature Usage Type.\n */\n DigitalSignature = \"digitalSignature\",\n /**\n * NonRepudiation Usage Type.\n */\n NonRepudiation = \"nonRepudiation\",\n /**\n * KeyEncipherment Usage Type.\n */\n KeyEncipherment = \"keyEncipherment\",\n /**\n * DataEncipherment Usage Type.\n */\n DataEncipherment = \"dataEncipherment\",\n /**\n * KeyAgreement Usage Type.\n */\n KeyAgreement = \"keyAgreement\",\n /**\n * KeyCertSign Usage Type.\n */\n KeyCertSign = \"keyCertSign\",\n /**\n * CRLSign Usage Type.\n */\n CRLSign = \"cRLSign\",\n /**\n * EncipherOnly Usage Type.\n */\n EncipherOnly = \"encipherOnly\",\n /**\n * DecipherOnly Usage Type.\n */\n DecipherOnly = \"decipherOnly\",\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 coreHttp from \"@azure/core-http\";\n\n/** The certificate list result. */\nexport interface CertificateListResult {\n /**\n * A response message containing a list of certificates in the key vault along with a link to the next page of certificates.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: CertificateItem[];\n /**\n * The URL to get the next set of certificates.\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 certificate item containing certificate metadata. */\nexport interface CertificateItem {\n /** Certificate identifier. */\n id?: string;\n /** The certificate management attributes. */\n attributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n /** Thumbprint of the certificate. */\n x509Thumbprint?: Uint8Array;\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 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 | null;\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 | null;\n}\n\n/** A certificate bundle consists of a certificate (X509) plus its attributes. */\nexport interface CertificateBundle {\n /**\n * The certificate id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * The key id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly kid?: string;\n /**\n * The secret id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly sid?: string;\n /**\n * Thumbprint of the certificate.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly x509Thumbprint?: Uint8Array;\n /**\n * The management policy.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly policy?: CertificatePolicy;\n /** CER contents of x509 certificate. */\n cer?: Uint8Array;\n /** The content type of the secret. eg. 'application/x-pem-file' or 'application/x-pkcs12', */\n contentType?: string;\n /** The certificate attributes. */\n attributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs */\n tags?: { [propertyName: string]: string };\n}\n\n/** Management policy for a certificate. */\nexport interface CertificatePolicy {\n /**\n * The certificate id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** Properties of the key backing a certificate. */\n keyProperties?: KeyProperties;\n /** Properties of the secret backing a certificate. */\n secretProperties?: SecretProperties;\n /** Properties of the X509 component of a certificate. */\n x509CertificateProperties?: X509CertificateProperties;\n /** Actions that will be performed by Key Vault over the lifetime of a certificate. */\n lifetimeActions?: LifetimeAction[];\n /** Parameters for the issuer of the X509 component of a certificate. */\n issuerParameters?: IssuerParameters;\n /** The certificate attributes. */\n attributes?: CertificateAttributes;\n}\n\n/** Properties of the key pair backing a certificate. */\nexport interface KeyProperties {\n /** Indicates if the private key can be exported. */\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/** Properties of the key backing a certificate. */\nexport interface SecretProperties {\n /** The media type (MIME type). */\n contentType?: string;\n}\n\n/** Properties of the X509 component of a certificate. */\nexport interface X509CertificateProperties {\n /** The subject name. Should be a valid X509 distinguished Name. */\n subject?: string;\n /** The enhanced key usage. */\n ekus?: string[];\n /** The subject alternative names. */\n subjectAlternativeNames?: SubjectAlternativeNames;\n /** List of key usages. */\n keyUsage?: KeyUsageType[];\n /** The duration that the certificate is valid in months. */\n validityInMonths?: number;\n}\n\n/** The subject alternate names of a X509 object. */\nexport interface SubjectAlternativeNames {\n /** Email addresses. */\n emails?: string[];\n /** Domain names. */\n dnsNames?: string[];\n /** User principal names. */\n upns?: string[];\n}\n\n/** Action and its trigger that will be performed by Key Vault over the lifetime of a certificate. */\nexport interface LifetimeAction {\n /** The condition that will execute the action. */\n trigger?: Trigger;\n /** The action that will be executed. */\n action?: Action;\n}\n\n/** A condition to be satisfied for an action to be executed. */\nexport interface Trigger {\n /** Percentage of lifetime at which to trigger. Value should be between 1 and 99. */\n lifetimePercentage?: number;\n /** Days before expiry to attempt renewal. Value should be between 1 and validity_in_months multiplied by 27. If validity_in_months is 36, then value should be between 1 and 972 (36 * 27). */\n daysBeforeExpiry?: number;\n}\n\n/** The action that will be executed. */\nexport interface Action {\n /** The type of the action. */\n actionType?: ActionType;\n}\n\n/** Parameters for the issuer of the X509 component of a certificate. */\nexport interface IssuerParameters {\n /** Name of the referenced issuer object or reserved names; for example, 'Self' or 'Unknown'. */\n name?: string;\n /** Certificate type as supported by the provider (optional); for example 'OV-SSL', 'EV-SSL' */\n certificateType?: string;\n /** Indicates if the certificates generated under this policy should be published to certificate transparency logs. */\n certificateTransparency?: boolean;\n}\n\n/** The contacts for the vault certificates. */\nexport interface Contacts {\n /**\n * Identifier for the contacts collection.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** The contact list for the vault certificates. */\n contactList?: Contact[];\n}\n\n/** The contact information for the vault certificates. */\nexport interface Contact {\n /** Email address. */\n emailAddress?: string;\n /** Name. */\n name?: string;\n /** Phone number. */\n phone?: string;\n}\n\n/** The certificate issuer list result. */\nexport interface CertificateIssuerListResult {\n /**\n * A response message containing a list of certificate issuers in the key vault along with a link to the next page of certificate issuers.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: CertificateIssuerItem[];\n /**\n * The URL to get the next set of certificate issuers.\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 certificate issuer item containing certificate issuer metadata. */\nexport interface CertificateIssuerItem {\n /** Certificate Identifier. */\n id?: string;\n /** The issuer provider. */\n provider?: string;\n}\n\n/** The certificate issuer set parameters. */\nexport interface CertificateIssuerSetParameters {\n /** The issuer provider. */\n provider: string;\n /** The credentials to be used for the issuer. */\n credentials?: IssuerCredentials;\n /** Details of the organization as provided to the issuer. */\n organizationDetails?: OrganizationDetails;\n /** Attributes of the issuer object. */\n attributes?: IssuerAttributes;\n}\n\n/** The credentials to be used for the certificate issuer. */\nexport interface IssuerCredentials {\n /** The user name/account name/account id. */\n accountId?: string;\n /** The password/secret/account key. */\n password?: string;\n}\n\n/** Details of the organization of the certificate issuer. */\nexport interface OrganizationDetails {\n /** Id of the organization. */\n id?: string;\n /** Details of the organization administrator. */\n adminDetails?: AdministratorDetails[];\n}\n\n/** Details of the organization administrator of the certificate issuer. */\nexport interface AdministratorDetails {\n /** First name. */\n firstName?: string;\n /** Last name. */\n lastName?: string;\n /** Email address. */\n emailAddress?: string;\n /** Phone number. */\n phone?: string;\n}\n\n/** The attributes of an issuer managed by the Key Vault service. */\nexport interface IssuerAttributes {\n /** Determines whether the issuer is enabled. */\n enabled?: boolean;\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 issuer for Key Vault certificate. */\nexport interface IssuerBundle {\n /**\n * Identifier for the issuer object.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** The issuer provider. */\n provider?: string;\n /** The credentials to be used for the issuer. */\n credentials?: IssuerCredentials;\n /** Details of the organization as provided to the issuer. */\n organizationDetails?: OrganizationDetails;\n /** Attributes of the issuer object. */\n attributes?: IssuerAttributes;\n}\n\n/** The certificate issuer update parameters. */\nexport interface CertificateIssuerUpdateParameters {\n /** The issuer provider. */\n provider?: string;\n /** The credentials to be used for the issuer. */\n credentials?: IssuerCredentials;\n /** Details of the organization as provided to the issuer. */\n organizationDetails?: OrganizationDetails;\n /** Attributes of the issuer object. */\n attributes?: IssuerAttributes;\n}\n\n/** The certificate create parameters. */\nexport interface CertificateCreateParameters {\n /** The management policy for the certificate. */\n certificatePolicy?: CertificatePolicy;\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** A certificate operation is returned in case of asynchronous requests. */\nexport interface CertificateOperation {\n /**\n * The certificate id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** Parameters for the issuer of the X509 component of a certificate. */\n issuerParameters?: IssuerParameters;\n /** The certificate signing request (CSR) that is being used in the certificate operation. */\n csr?: Uint8Array;\n /** Indicates if cancellation was requested on the certificate operation. */\n cancellationRequested?: boolean;\n /** Status of the certificate operation. */\n status?: string;\n /** The status details of the certificate operation. */\n statusDetails?: string;\n /** Error encountered, if any, during the certificate operation. */\n error?: ErrorModel | null;\n /** Location which contains the result of the certificate operation. */\n target?: string;\n /** Identifier for the certificate operation. */\n requestId?: string;\n}\n\n/** The certificate import parameters. */\nexport interface CertificateImportParameters {\n /** Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. */\n base64EncodedCertificate: string;\n /** If the private key in base64EncodedCertificate is encrypted, the password used for encryption. */\n password?: string;\n /** The management policy for the certificate. */\n certificatePolicy?: CertificatePolicy;\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** The certificate update parameters. */\nexport interface CertificateUpdateParameters {\n /** The management policy for the certificate. */\n certificatePolicy?: CertificatePolicy;\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** The certificate operation update parameters. */\nexport interface CertificateOperationUpdateParameter {\n /** Indicates if cancellation was requested on the certificate operation. */\n cancellationRequested: boolean;\n}\n\n/** The certificate merge parameters */\nexport interface CertificateMergeParameters {\n /** The certificate or the certificate chain to merge. */\n x509Certificates: Uint8Array[];\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** The backup certificate result, containing the backup blob. */\nexport interface BackupCertificateResult {\n /**\n * The backup blob containing the backed up certificate.\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 certificate restore parameters. */\nexport interface CertificateRestoreParameters {\n /** The backup blob associated with a certificate bundle. */\n certificateBundleBackup: Uint8Array;\n}\n\n/** A list of certificates that have been deleted in this vault. */\nexport interface DeletedCertificateListResult {\n /**\n * A response message containing a list of deleted certificates in the vault along with a link to the next page of deleted certificates\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: DeletedCertificateItem[];\n /**\n * The URL to get the next set of deleted certificates.\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 pending certificate signing request result. */\nexport interface PendingCertificateSigningRequestResult {\n /**\n * The pending certificate signing request as Base64 encoded string.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly value?: string;\n}\n\n/** The deleted certificate item containing metadata about the deleted certificate. */\nexport type DeletedCertificateItem = CertificateItem & {\n /** The url of the recovery object, used to identify and recover the deleted certificate. */\n recoveryId?: string;\n /**\n * The time when the certificate 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 certificate 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 certificate management attributes. */\nexport type CertificateAttributes = 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 certificates in the current vault. If it contains 'Purgeable', the certificate can be permanently deleted by a privileged user; otherwise, only the system can purge the certificate, 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};\n\n/** A Deleted Certificate consisting of its previous id, attributes and its tags, as well as information on when it will be purged. */\nexport type DeletedCertificateBundle = CertificateBundle & {\n /** The url of the recovery object, used to identify and recover the deleted certificate. */\n recoveryId?: string;\n /**\n * The time when the certificate 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 certificate 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 ApiVersion73} that the service accepts. */\nexport enum KnownApiVersion73 {\n /** Api Version '7.3' */\n Seven3 = \"7.3\"\n}\n\n/**\n * Defines values for ApiVersion73. \\\n * {@link KnownApiVersion73} can be used interchangeably with ApiVersion73,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **7.3**: Api Version '7.3'\n */\nexport type ApiVersion73 = 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 JsonWebKeyType} that the service accepts. */\nexport enum KnownJsonWebKeyType {\n EC = \"EC\",\n ECHSM = \"EC-HSM\",\n RSA = \"RSA\",\n RSAHSM = \"RSA-HSM\",\n Oct = \"oct\",\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** \\\n * **EC-HSM** \\\n * **RSA** \\\n * **RSA-HSM** \\\n * **oct** \\\n * **oct-HSM**\n */\nexport type JsonWebKeyType = string;\n\n/** Known values of {@link JsonWebKeyCurveName} that the service accepts. */\nexport enum KnownJsonWebKeyCurveName {\n P256 = \"P-256\",\n P384 = \"P-384\",\n P521 = \"P-521\",\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** \\\n * **P-384** \\\n * **P-521** \\\n * **P-256K**\n */\nexport type JsonWebKeyCurveName = string;\n\n/** Known values of {@link KeyUsageType} that the service accepts. */\nexport enum KnownKeyUsageType {\n DigitalSignature = \"digitalSignature\",\n NonRepudiation = \"nonRepudiation\",\n KeyEncipherment = \"keyEncipherment\",\n DataEncipherment = \"dataEncipherment\",\n KeyAgreement = \"keyAgreement\",\n KeyCertSign = \"keyCertSign\",\n CRLSign = \"cRLSign\",\n EncipherOnly = \"encipherOnly\",\n DecipherOnly = \"decipherOnly\"\n}\n\n/**\n * Defines values for KeyUsageType. \\\n * {@link KnownKeyUsageType} can be used interchangeably with KeyUsageType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **digitalSignature** \\\n * **nonRepudiation** \\\n * **keyEncipherment** \\\n * **dataEncipherment** \\\n * **keyAgreement** \\\n * **keyCertSign** \\\n * **cRLSign** \\\n * **encipherOnly** \\\n * **decipherOnly**\n */\nexport type KeyUsageType = string;\n/** Defines values for ActionType. */\nexport type ActionType = \"EmailContacts\" | \"AutoRenew\";\n\n/** Optional parameters. */\nexport interface GetCertificatesOptionalParams\n extends coreHttp.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 /** Specifies whether to include certificates which are not completely provisioned. */\n includePending?: boolean;\n}\n\n/** Contains response data for the getCertificates operation. */\nexport type GetCertificatesResponse = CertificateListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface DeleteCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the deleteCertificate operation. */\nexport type DeleteCertificateResponse = DeletedCertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: DeletedCertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface SetCertificateContactsOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the setCertificateContacts operation. */\nexport type SetCertificateContactsResponse = Contacts & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: Contacts;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateContactsOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the getCertificateContacts operation. */\nexport type GetCertificateContactsResponse = Contacts & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: Contacts;\n };\n};\n\n/** Optional parameters. */\nexport interface DeleteCertificateContactsOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the deleteCertificateContacts operation. */\nexport type DeleteCertificateContactsResponse = Contacts & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: Contacts;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateIssuersOptionalParams\n extends coreHttp.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 getCertificateIssuers operation. */\nexport type GetCertificateIssuersResponse = CertificateIssuerListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateIssuerListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface SetCertificateIssuerOptionalParams\n extends coreHttp.OperationOptions {\n /** The credentials to be used for the issuer. */\n credentials?: IssuerCredentials;\n /** Details of the organization as provided to the issuer. */\n organizationDetails?: OrganizationDetails;\n /** Attributes of the issuer object. */\n attributes?: IssuerAttributes;\n}\n\n/** Contains response data for the setCertificateIssuer operation. */\nexport type SetCertificateIssuerResponse = IssuerBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: IssuerBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface UpdateCertificateIssuerOptionalParams\n extends coreHttp.OperationOptions {\n /** The issuer provider. */\n provider?: string;\n /** The credentials to be used for the issuer. */\n credentials?: IssuerCredentials;\n /** Details of the organization as provided to the issuer. */\n organizationDetails?: OrganizationDetails;\n /** Attributes of the issuer object. */\n attributes?: IssuerAttributes;\n}\n\n/** Contains response data for the updateCertificateIssuer operation. */\nexport type UpdateCertificateIssuerResponse = IssuerBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: IssuerBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateIssuerOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the getCertificateIssuer operation. */\nexport type GetCertificateIssuerResponse = IssuerBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: IssuerBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface DeleteCertificateIssuerOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the deleteCertificateIssuer operation. */\nexport type DeleteCertificateIssuerResponse = IssuerBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: IssuerBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface CreateCertificateOptionalParams\n extends coreHttp.OperationOptions {\n /** The management policy for the certificate. */\n certificatePolicy?: CertificatePolicy;\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** Contains response data for the createCertificate operation. */\nexport type CreateCertificateResponse = CertificateOperation & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateOperation;\n };\n};\n\n/** Optional parameters. */\nexport interface ImportCertificateOptionalParams\n extends coreHttp.OperationOptions {\n /** If the private key in base64EncodedCertificate is encrypted, the password used for encryption. */\n password?: string;\n /** The management policy for the certificate. */\n certificatePolicy?: CertificatePolicy;\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** Contains response data for the importCertificate operation. */\nexport type ImportCertificateResponse = CertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateVersionsOptionalParams\n extends coreHttp.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 getCertificateVersions operation. */\nexport type GetCertificateVersionsResponse = CertificateListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificatePolicyOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the getCertificatePolicy operation. */\nexport type GetCertificatePolicyResponse = CertificatePolicy & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificatePolicy;\n };\n};\n\n/** Optional parameters. */\nexport interface UpdateCertificatePolicyOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the updateCertificatePolicy operation. */\nexport type UpdateCertificatePolicyResponse = CertificatePolicy & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificatePolicy;\n };\n};\n\n/** Optional parameters. */\nexport interface UpdateCertificateOptionalParams\n extends coreHttp.OperationOptions {\n /** The management policy for the certificate. */\n certificatePolicy?: CertificatePolicy;\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** Contains response data for the updateCertificate operation. */\nexport type UpdateCertificateResponse = CertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the getCertificate operation. */\nexport type GetCertificateResponse = CertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface UpdateCertificateOperationOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the updateCertificateOperation operation. */\nexport type UpdateCertificateOperationResponse = CertificateOperation & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateOperation;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateOperationOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the getCertificateOperation operation. */\nexport type GetCertificateOperationResponse = CertificateOperation & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateOperation;\n };\n};\n\n/** Optional parameters. */\nexport interface DeleteCertificateOperationOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the deleteCertificateOperation operation. */\nexport type DeleteCertificateOperationResponse = CertificateOperation & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateOperation;\n };\n};\n\n/** Optional parameters. */\nexport interface MergeCertificateOptionalParams\n extends coreHttp.OperationOptions {\n /** The attributes of the certificate (optional). */\n certificateAttributes?: CertificateAttributes;\n /** Application specific metadata in the form of key-value pairs. */\n tags?: { [propertyName: string]: string };\n}\n\n/** Contains response data for the mergeCertificate operation. */\nexport type MergeCertificateResponse = CertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface BackupCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the backupCertificate operation. */\nexport type BackupCertificateResponse = BackupCertificateResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: BackupCertificateResult;\n };\n};\n\n/** Optional parameters. */\nexport interface RestoreCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the restoreCertificate operation. */\nexport type RestoreCertificateResponse = CertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface GetDeletedCertificatesOptionalParams\n extends coreHttp.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 /** Specifies whether to include certificates which are not completely provisioned. */\n includePending?: boolean;\n}\n\n/** Contains response data for the getDeletedCertificates operation. */\nexport type GetDeletedCertificatesResponse = DeletedCertificateListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: DeletedCertificateListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface GetDeletedCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the getDeletedCertificate operation. */\nexport type GetDeletedCertificateResponse = DeletedCertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: DeletedCertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface PurgeDeletedCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Optional parameters. */\nexport interface RecoverDeletedCertificateOptionalParams\n extends coreHttp.OperationOptions {}\n\n/** Contains response data for the recoverDeletedCertificate operation. */\nexport type RecoverDeletedCertificateResponse = CertificateBundle & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateBundle;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificatesNextOptionalParams\n extends coreHttp.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 /** Specifies whether to include certificates which are not completely provisioned. */\n includePending?: boolean;\n}\n\n/** Contains response data for the getCertificatesNext operation. */\nexport type GetCertificatesNextResponse = CertificateListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateIssuersNextOptionalParams\n extends coreHttp.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 getCertificateIssuersNext operation. */\nexport type GetCertificateIssuersNextResponse = CertificateIssuerListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateIssuerListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface GetCertificateVersionsNextOptionalParams\n extends coreHttp.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 getCertificateVersionsNext operation. */\nexport type GetCertificateVersionsNextResponse = CertificateListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: CertificateListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface GetDeletedCertificatesNextOptionalParams\n extends coreHttp.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 /** Specifies whether to include certificates which are not completely provisioned. */\n includePending?: boolean;\n}\n\n/** Contains response data for the getDeletedCertificatesNext operation. */\nexport type GetDeletedCertificatesNextResponse = DeletedCertificateListResult & {\n /** The underlying HTTP response. */\n _response: coreHttp.HttpResponse & {\n /** The response body as text (string format) */\n bodyAsText: string;\n\n /** The response body as parsed JSON or XML */\n parsedBody: DeletedCertificateListResult;\n };\n};\n\n/** Optional parameters. */\nexport interface KeyVaultClientOptionalParams\n extends coreHttp.ServiceClientOptions {\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 coreHttp from \"@azure/core-http\";\n\nexport const CertificateListResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"CertificateItem\"\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 CertificateItem: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateItem\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n x509Thumbprint: {\n serializedName: \"x5t\",\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const Attributes: coreHttp.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 KeyVaultError: coreHttp.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: coreHttp.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 CertificateBundle: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateBundle\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n kid: {\n serializedName: \"kid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n sid: {\n serializedName: \"sid\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n x509Thumbprint: {\n serializedName: \"x5t\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n },\n policy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n cer: {\n serializedName: \"cer\",\n type: {\n name: \"ByteArray\"\n }\n },\n contentType: {\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificatePolicy: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n keyProperties: {\n serializedName: \"key_props\",\n type: {\n name: \"Composite\",\n className: \"KeyProperties\"\n }\n },\n secretProperties: {\n serializedName: \"secret_props\",\n type: {\n name: \"Composite\",\n className: \"SecretProperties\"\n }\n },\n x509CertificateProperties: {\n serializedName: \"x509_props\",\n type: {\n name: \"Composite\",\n className: \"X509CertificateProperties\"\n }\n },\n lifetimeActions: {\n serializedName: \"lifetime_actions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"LifetimeAction\"\n }\n }\n }\n },\n issuerParameters: {\n serializedName: \"issuer\",\n type: {\n name: \"Composite\",\n className: \"IssuerParameters\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n }\n }\n }\n};\n\nexport const KeyProperties: coreHttp.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 SecretProperties: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SecretProperties\",\n modelProperties: {\n contentType: {\n serializedName: \"contentType\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const X509CertificateProperties: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"X509CertificateProperties\",\n modelProperties: {\n subject: {\n serializedName: \"subject\",\n type: {\n name: \"String\"\n }\n },\n ekus: {\n serializedName: \"ekus\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n subjectAlternativeNames: {\n serializedName: \"sans\",\n type: {\n name: \"Composite\",\n className: \"SubjectAlternativeNames\"\n }\n },\n keyUsage: {\n serializedName: \"key_usage\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n validityInMonths: {\n constraints: {\n InclusiveMinimum: 0\n },\n serializedName: \"validity_months\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const SubjectAlternativeNames: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SubjectAlternativeNames\",\n modelProperties: {\n emails: {\n serializedName: \"emails\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n dnsNames: {\n serializedName: \"dns_names\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n upns: {\n serializedName: \"upns\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const LifetimeAction: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"LifetimeAction\",\n modelProperties: {\n trigger: {\n serializedName: \"trigger\",\n type: {\n name: \"Composite\",\n className: \"Trigger\"\n }\n },\n action: {\n serializedName: \"action\",\n type: {\n name: \"Composite\",\n className: \"Action\"\n }\n }\n }\n }\n};\n\nexport const Trigger: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Trigger\",\n modelProperties: {\n lifetimePercentage: {\n constraints: {\n InclusiveMaximum: 99,\n InclusiveMinimum: 1\n },\n serializedName: \"lifetime_percentage\",\n type: {\n name: \"Number\"\n }\n },\n daysBeforeExpiry: {\n serializedName: \"days_before_expiry\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const Action: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Action\",\n modelProperties: {\n actionType: {\n serializedName: \"action_type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"EmailContacts\", \"AutoRenew\"]\n }\n }\n }\n }\n};\n\nexport const IssuerParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerParameters\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\"\n }\n },\n certificateType: {\n serializedName: \"cty\",\n type: {\n name: \"String\"\n }\n },\n certificateTransparency: {\n serializedName: \"cert_transparency\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const Contacts: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Contacts\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n contactList: {\n serializedName: \"contacts\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Contact\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const Contact: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Contact\",\n modelProperties: {\n emailAddress: {\n serializedName: \"email\",\n type: {\n name: \"String\"\n }\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\"\n }\n },\n phone: {\n serializedName: \"phone\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CertificateIssuerListResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerItem\"\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 CertificateIssuerItem: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerItem\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\"\n }\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CertificateIssuerSetParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerSetParameters\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n credentials: {\n serializedName: \"credentials\",\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\"\n }\n },\n organizationDetails: {\n serializedName: \"org_details\",\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\"\n }\n }\n }\n }\n};\n\nexport const IssuerCredentials: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\",\n modelProperties: {\n accountId: {\n serializedName: \"account_id\",\n type: {\n name: \"String\"\n }\n },\n password: {\n serializedName: \"pwd\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OrganizationDetails: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\"\n }\n },\n adminDetails: {\n serializedName: \"admin_details\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"AdministratorDetails\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const AdministratorDetails: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"AdministratorDetails\",\n modelProperties: {\n firstName: {\n serializedName: \"first_name\",\n type: {\n name: \"String\"\n }\n },\n lastName: {\n serializedName: \"last_name\",\n type: {\n name: \"String\"\n }\n },\n emailAddress: {\n serializedName: \"email\",\n type: {\n name: \"String\"\n }\n },\n phone: {\n serializedName: \"phone\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const IssuerAttributes: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\",\n modelProperties: {\n enabled: {\n serializedName: \"enabled\",\n type: {\n name: \"Boolean\"\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 IssuerBundle: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IssuerBundle\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\"\n }\n },\n credentials: {\n serializedName: \"credentials\",\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\"\n }\n },\n organizationDetails: {\n serializedName: \"org_details\",\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\"\n }\n }\n }\n }\n};\n\nexport const CertificateIssuerUpdateParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateIssuerUpdateParameters\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\"\n }\n },\n credentials: {\n serializedName: \"credentials\",\n type: {\n name: \"Composite\",\n className: \"IssuerCredentials\"\n }\n },\n organizationDetails: {\n serializedName: \"org_details\",\n type: {\n name: \"Composite\",\n className: \"OrganizationDetails\"\n }\n },\n attributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"IssuerAttributes\"\n }\n }\n }\n }\n};\n\nexport const CertificateCreateParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateCreateParameters\",\n modelProperties: {\n certificatePolicy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificateOperation: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateOperation\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n },\n issuerParameters: {\n serializedName: \"issuer\",\n type: {\n name: \"Composite\",\n className: \"IssuerParameters\"\n }\n },\n csr: {\n serializedName: \"csr\",\n type: {\n name: \"ByteArray\"\n }\n },\n cancellationRequested: {\n serializedName: \"cancellation_requested\",\n type: {\n name: \"Boolean\"\n }\n },\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\"\n }\n },\n statusDetails: {\n serializedName: \"status_details\",\n type: {\n name: \"String\"\n }\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorModel\"\n }\n },\n target: {\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"request_id\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CertificateImportParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateImportParameters\",\n modelProperties: {\n base64EncodedCertificate: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n password: {\n serializedName: \"pwd\",\n type: {\n name: \"String\"\n }\n },\n certificatePolicy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificateUpdateParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateUpdateParameters\",\n modelProperties: {\n certificatePolicy: {\n serializedName: \"policy\",\n type: {\n name: \"Composite\",\n className: \"CertificatePolicy\"\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const CertificateOperationUpdateParameter: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateOperationUpdateParameter\",\n modelProperties: {\n cancellationRequested: {\n serializedName: \"cancellation_requested\",\n required: true,\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const CertificateMergeParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateMergeParameters\",\n modelProperties: {\n x509Certificates: {\n serializedName: \"x5c\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"ByteArray\"\n }\n }\n }\n },\n certificateAttributes: {\n serializedName: \"attributes\",\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\"\n }\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\n\nexport const BackupCertificateResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BackupCertificateResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const CertificateRestoreParameters: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateRestoreParameters\",\n modelProperties: {\n certificateBundleBackup: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Base64Url\"\n }\n }\n }\n }\n};\n\nexport const DeletedCertificateListResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateItem\"\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 PendingCertificateSigningRequestResult: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PendingCertificateSigningRequestResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n readOnly: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DeletedCertificateItem: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateItem\",\n modelProperties: {\n ...CertificateItem.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 CertificateAttributes: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CertificateAttributes\",\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 }\n }\n};\n\nexport const DeletedCertificateBundle: coreHttp.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeletedCertificateBundle\",\n modelProperties: {\n ...CertificateBundle.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-http\";\nimport {\n Contacts as ContactsMapper,\n CertificateIssuerSetParameters as CertificateIssuerSetParametersMapper,\n CertificateIssuerUpdateParameters as CertificateIssuerUpdateParametersMapper,\n CertificateCreateParameters as CertificateCreateParametersMapper,\n CertificateImportParameters as CertificateImportParametersMapper,\n CertificatePolicy as CertificatePolicyMapper,\n CertificateUpdateParameters as CertificateUpdateParametersMapper,\n CertificateOperationUpdateParameter as CertificateOperationUpdateParameterMapper,\n CertificateMergeParameters as CertificateMergeParametersMapper,\n CertificateRestoreParameters as CertificateRestoreParametersMapper\n} from \"../models/mappers\";\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 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 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 includePending: OperationQueryParameter = {\n parameterPath: [\"options\", \"includePending\"],\n mapper: {\n serializedName: \"includePending\",\n type: {\n name: \"Boolean\"\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 certificateName: OperationURLParameter = {\n parameterPath: \"certificateName\",\n mapper: {\n serializedName: \"certificate-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\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 contacts: OperationParameter = {\n parameterPath: \"contacts\",\n mapper: ContactsMapper\n};\n\nexport const provider: OperationParameter = {\n parameterPath: \"provider\",\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const credentials: OperationParameter = {\n parameterPath: [\"options\", \"credentials\"],\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const organizationDetails: OperationParameter = {\n parameterPath: [\"options\", \"organizationDetails\"],\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const attributes: OperationParameter = {\n parameterPath: [\"options\", \"attributes\"],\n mapper: CertificateIssuerSetParametersMapper\n};\n\nexport const issuerName: OperationURLParameter = {\n parameterPath: \"issuerName\",\n mapper: {\n serializedName: \"issuer-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const provider1: OperationParameter = {\n parameterPath: [\"options\", \"provider\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const credentials1: OperationParameter = {\n parameterPath: [\"options\", \"credentials\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const organizationDetails1: OperationParameter = {\n parameterPath: [\"options\", \"organizationDetails\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const attributes1: OperationParameter = {\n parameterPath: [\"options\", \"attributes\"],\n mapper: CertificateIssuerUpdateParametersMapper\n};\n\nexport const certificatePolicy: OperationParameter = {\n parameterPath: [\"options\", \"certificatePolicy\"],\n mapper: CertificateCreateParametersMapper\n};\n\nexport const certificateAttributes: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateCreateParametersMapper\n};\n\nexport const tags: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateCreateParametersMapper\n};\n\nexport const certificateName1: OperationURLParameter = {\n parameterPath: \"certificateName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[0-9a-zA-Z-]+$\")\n },\n serializedName: \"certificate-name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const base64EncodedCertificate: OperationParameter = {\n parameterPath: \"base64EncodedCertificate\",\n mapper: CertificateImportParametersMapper\n};\n\nexport const password: OperationParameter = {\n parameterPath: [\"options\", \"password\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const certificatePolicy1: OperationParameter = {\n parameterPath: [\"options\", \"certificatePolicy\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const certificateAttributes1: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const tags1: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateImportParametersMapper\n};\n\nexport const certificatePolicy2: OperationParameter = {\n parameterPath: \"certificatePolicy\",\n mapper: CertificatePolicyMapper\n};\n\nexport const certificatePolicy3: OperationParameter = {\n parameterPath: [\"options\", \"certificatePolicy\"],\n mapper: CertificateUpdateParametersMapper\n};\n\nexport const certificateAttributes2: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateUpdateParametersMapper\n};\n\nexport const tags2: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateUpdateParametersMapper\n};\n\nexport const certificateVersion: OperationURLParameter = {\n parameterPath: \"certificateVersion\",\n mapper: {\n serializedName: \"certificate-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const cancellationRequested: OperationParameter = {\n parameterPath: \"cancellationRequested\",\n mapper: CertificateOperationUpdateParameterMapper\n};\n\nexport const x509Certificates: OperationParameter = {\n parameterPath: \"x509Certificates\",\n mapper: CertificateMergeParametersMapper\n};\n\nexport const certificateAttributes3: OperationParameter = {\n parameterPath: [\"options\", \"certificateAttributes\"],\n mapper: CertificateMergeParametersMapper\n};\n\nexport const tags3: OperationParameter = {\n parameterPath: [\"options\", \"tags\"],\n mapper: CertificateMergeParametersMapper\n};\n\nexport const certificateBundleBackup: OperationParameter = {\n parameterPath: \"certificateBundleBackup\",\n mapper: CertificateRestoreParametersMapper\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 coreHttp from \"@azure/core-http\";\nimport { ApiVersion73, KeyVaultClientOptionalParams } from \"./models\";\n\nconst packageName = \"@azure/keyvault-certificates\";\nexport const packageVersion = \"4.4.0\";\n\n/** @internal */\nexport class KeyVaultClientContext extends coreHttp.ServiceClient {\n apiVersion: ApiVersion73;\n\n /**\n * Initializes a new instance of the KeyVaultClientContext class.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(\n apiVersion: ApiVersion73,\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\n const defaultUserAgent = `azsdk-js-${packageName.replace(\n /@.*\\//,\n \"\"\n )}/${packageVersion} ${coreHttp.getDefaultUserAgentValue()}`;\n\n super(undefined, {\n ...options,\n userAgent: options.userAgent\n ? `${options.userAgent} ${defaultUserAgent}`\n : `${defaultUserAgent}`\n });\n\n this.requestContentType = \"application/json; charset=utf-8\";\n this.baseUri = options.endpoint || \"{vaultBaseUrl}\";\n // Parameter assignments\n this.apiVersion = apiVersion;\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 * as coreHttp from \"@azure/core-http\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport { KeyVaultClientContext } from \"./keyVaultClientContext\";\nimport {\n KeyVaultClientOptionalParams,\n ApiVersion73,\n GetCertificatesOptionalParams,\n GetCertificatesResponse,\n DeleteCertificateOptionalParams,\n DeleteCertificateResponse,\n Contacts,\n SetCertificateContactsOptionalParams,\n SetCertificateContactsResponse,\n GetCertificateContactsOptionalParams,\n GetCertificateContactsResponse,\n DeleteCertificateContactsOptionalParams,\n DeleteCertificateContactsResponse,\n GetCertificateIssuersOptionalParams,\n GetCertificateIssuersResponse,\n SetCertificateIssuerOptionalParams,\n SetCertificateIssuerResponse,\n UpdateCertificateIssuerOptionalParams,\n UpdateCertificateIssuerResponse,\n GetCertificateIssuerOptionalParams,\n GetCertificateIssuerResponse,\n DeleteCertificateIssuerOptionalParams,\n DeleteCertificateIssuerResponse,\n CreateCertificateOptionalParams,\n CreateCertificateResponse,\n ImportCertificateOptionalParams,\n ImportCertificateResponse,\n GetCertificateVersionsOptionalParams,\n GetCertificateVersionsResponse,\n GetCertificatePolicyOptionalParams,\n GetCertificatePolicyResponse,\n CertificatePolicy,\n UpdateCertificatePolicyOptionalParams,\n UpdateCertificatePolicyResponse,\n UpdateCertificateOptionalParams,\n UpdateCertificateResponse,\n GetCertificateOptionalParams,\n GetCertificateResponse,\n UpdateCertificateOperationOptionalParams,\n UpdateCertificateOperationResponse,\n GetCertificateOperationOptionalParams,\n GetCertificateOperationResponse,\n DeleteCertificateOperationOptionalParams,\n DeleteCertificateOperationResponse,\n MergeCertificateOptionalParams,\n MergeCertificateResponse,\n BackupCertificateOptionalParams,\n BackupCertificateResponse,\n RestoreCertificateOptionalParams,\n RestoreCertificateResponse,\n GetDeletedCertificatesOptionalParams,\n GetDeletedCertificatesResponse,\n GetDeletedCertificateOptionalParams,\n GetDeletedCertificateResponse,\n PurgeDeletedCertificateOptionalParams,\n RecoverDeletedCertificateOptionalParams,\n RecoverDeletedCertificateResponse,\n GetCertificatesNextOptionalParams,\n GetCertificatesNextResponse,\n GetCertificateIssuersNextOptionalParams,\n GetCertificateIssuersNextResponse,\n GetCertificateVersionsNextOptionalParams,\n GetCertificateVersionsNextResponse,\n GetDeletedCertificatesNextOptionalParams,\n GetDeletedCertificatesNextResponse\n} from \"./models\";\n\n/** @internal */\nexport class KeyVaultClient extends KeyVaultClientContext {\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: ApiVersion73,\n options?: KeyVaultClientOptionalParams\n ) {\n super(apiVersion, options);\n }\n\n /**\n * The GetCertificates operation returns the set of certificates resources in the specified key vault.\n * This operation requires the certificates/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getCertificates(\n vaultBaseUrl: string,\n options?: GetCertificatesOptionalParams\n ): Promise<GetCertificatesResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificatesOperationSpec\n ) as Promise<GetCertificatesResponse>;\n }\n\n /**\n * Deletes all versions of a certificate object along with its associated policy. Delete certificate\n * cannot be used to remove individual versions of a certificate object. This operation requires the\n * certificates/delete permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n deleteCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: DeleteCertificateOptionalParams\n ): Promise<DeleteCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateOperationSpec\n ) as Promise<DeleteCertificateResponse>;\n }\n\n /**\n * Sets the certificate contacts for the specified key vault. This operation requires the\n * certificates/managecontacts permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param contacts The contacts for the key vault certificate.\n * @param options The options parameters.\n */\n setCertificateContacts(\n vaultBaseUrl: string,\n contacts: Contacts,\n options?: SetCertificateContactsOptionalParams\n ): Promise<SetCertificateContactsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n contacts,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n setCertificateContactsOperationSpec\n ) as Promise<SetCertificateContactsResponse>;\n }\n\n /**\n * The GetCertificateContacts operation returns the set of certificate contact resources in the\n * specified key vault. This operation requires the certificates/managecontacts permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getCertificateContacts(\n vaultBaseUrl: string,\n options?: GetCertificateContactsOptionalParams\n ): Promise<GetCertificateContactsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateContactsOperationSpec\n ) as Promise<GetCertificateContactsResponse>;\n }\n\n /**\n * Deletes the certificate contacts for a specified key vault certificate. This operation requires the\n * certificates/managecontacts permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n deleteCertificateContacts(\n vaultBaseUrl: string,\n options?: DeleteCertificateContactsOptionalParams\n ): Promise<DeleteCertificateContactsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateContactsOperationSpec\n ) as Promise<DeleteCertificateContactsResponse>;\n }\n\n /**\n * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified\n * key vault. This operation requires the certificates/manageissuers/getissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getCertificateIssuers(\n vaultBaseUrl: string,\n options?: GetCertificateIssuersOptionalParams\n ): Promise<GetCertificateIssuersResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateIssuersOperationSpec\n ) as Promise<GetCertificateIssuersResponse>;\n }\n\n /**\n * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation\n * requires the certificates/setissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param provider The issuer provider.\n * @param options The options parameters.\n */\n setCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n provider: string,\n options?: SetCertificateIssuerOptionalParams\n ): Promise<SetCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n provider,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n setCertificateIssuerOperationSpec\n ) as Promise<SetCertificateIssuerResponse>;\n }\n\n /**\n * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity.\n * This operation requires the certificates/setissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param options The options parameters.\n */\n updateCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n options?: UpdateCertificateIssuerOptionalParams\n ): Promise<UpdateCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificateIssuerOperationSpec\n ) as Promise<UpdateCertificateIssuerResponse>;\n }\n\n /**\n * The GetCertificateIssuer operation returns the specified certificate issuer resources in the\n * specified key vault. This operation requires the certificates/manageissuers/getissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param options The options parameters.\n */\n getCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n options?: GetCertificateIssuerOptionalParams\n ): Promise<GetCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateIssuerOperationSpec\n ) as Promise<GetCertificateIssuerResponse>;\n }\n\n /**\n * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the\n * vault. This operation requires the certificates/manageissuers/deleteissuers permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param issuerName The name of the issuer.\n * @param options The options parameters.\n */\n deleteCertificateIssuer(\n vaultBaseUrl: string,\n issuerName: string,\n options?: DeleteCertificateIssuerOptionalParams\n ): Promise<DeleteCertificateIssuerResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n issuerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateIssuerOperationSpec\n ) as Promise<DeleteCertificateIssuerResponse>;\n }\n\n /**\n * If this is the first version, the certificate resource is created. This operation requires the\n * certificates/create permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n createCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: CreateCertificateOptionalParams\n ): Promise<CreateCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n createCertificateOperationSpec\n ) as Promise<CreateCertificateResponse>;\n }\n\n /**\n * Imports an existing valid certificate, containing a private key, into Azure Key Vault. This\n * operation requires the certificates/import permission. The certificate to be imported can be in\n * either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as\n * well as x509 certificates. Key Vault will only accept a key in PKCS#8 format.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import.\n * This certificate needs to contain the private key.\n * @param options The options parameters.\n */\n importCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n base64EncodedCertificate: string,\n options?: ImportCertificateOptionalParams\n ): Promise<ImportCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n base64EncodedCertificate,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n importCertificateOperationSpec\n ) as Promise<ImportCertificateResponse>;\n }\n\n /**\n * The GetCertificateVersions operation returns the versions of a certificate in the specified key\n * vault. This operation requires the certificates/list permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n getCertificateVersions(\n vaultBaseUrl: string,\n certificateName: string,\n options?: GetCertificateVersionsOptionalParams\n ): Promise<GetCertificateVersionsResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateVersionsOperationSpec\n ) as Promise<GetCertificateVersionsResponse>;\n }\n\n /**\n * The GetCertificatePolicy operation returns the specified certificate policy resources in the\n * specified key vault. This operation requires the certificates/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in a given key vault.\n * @param options The options parameters.\n */\n getCertificatePolicy(\n vaultBaseUrl: string,\n certificateName: string,\n options?: GetCertificatePolicyOptionalParams\n ): Promise<GetCertificatePolicyResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificatePolicyOperationSpec\n ) as Promise<GetCertificatePolicyResponse>;\n }\n\n /**\n * Set specified members in the certificate policy. Leave others as null. This operation requires the\n * certificates/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in the given vault.\n * @param certificatePolicy The policy for the certificate.\n * @param options The options parameters.\n */\n updateCertificatePolicy(\n vaultBaseUrl: string,\n certificateName: string,\n certificatePolicy: CertificatePolicy,\n options?: UpdateCertificatePolicyOptionalParams\n ): Promise<UpdateCertificatePolicyResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n certificatePolicy,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificatePolicyOperationSpec\n ) as Promise<UpdateCertificatePolicyResponse>;\n }\n\n /**\n * The UpdateCertificate operation applies the specified update on the given certificate; the only\n * elements updated are the certificate's attributes. This operation requires the certificates/update\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in the given key vault.\n * @param certificateVersion The version of the certificate.\n * @param options The options parameters.\n */\n updateCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n certificateVersion: string,\n options?: UpdateCertificateOptionalParams\n ): Promise<UpdateCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n certificateVersion,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificateOperationSpec\n ) as Promise<UpdateCertificateResponse>;\n }\n\n /**\n * Gets information about a specific certificate. This operation requires the certificates/get\n * permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate in the given vault.\n * @param certificateVersion The version of the certificate. This URI fragment is optional. If not\n * specified, the latest version of the certificate is returned.\n * @param options The options parameters.\n */\n getCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n certificateVersion: string,\n options?: GetCertificateOptionalParams\n ): Promise<GetCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n certificateVersion,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateOperationSpec\n ) as Promise<GetCertificateResponse>;\n }\n\n /**\n * Updates a certificate creation operation that is already in progress. This operation requires the\n * certificates/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param cancellationRequested Indicates if cancellation was requested on the certificate operation.\n * @param options The options parameters.\n */\n updateCertificateOperation(\n vaultBaseUrl: string,\n certificateName: string,\n cancellationRequested: boolean,\n options?: UpdateCertificateOperationOptionalParams\n ): Promise<UpdateCertificateOperationResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n cancellationRequested,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n updateCertificateOperationOperationSpec\n ) as Promise<UpdateCertificateOperationResponse>;\n }\n\n /**\n * Gets the creation operation associated with a specified certificate. This operation requires the\n * certificates/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n getCertificateOperation(\n vaultBaseUrl: string,\n certificateName: string,\n options?: GetCertificateOperationOptionalParams\n ): Promise<GetCertificateOperationResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateOperationOperationSpec\n ) as Promise<GetCertificateOperationResponse>;\n }\n\n /**\n * Deletes the creation operation for a specified certificate that is in the process of being created.\n * The certificate is no longer created. This operation requires the certificates/update permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n deleteCertificateOperation(\n vaultBaseUrl: string,\n certificateName: string,\n options?: DeleteCertificateOperationOptionalParams\n ): Promise<DeleteCertificateOperationResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n deleteCertificateOperationOperationSpec\n ) as Promise<DeleteCertificateOperationResponse>;\n }\n\n /**\n * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key\n * pair currently available in the service. This operation requires the certificates/create permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param x509Certificates The certificate or the certificate chain to merge.\n * @param options The options parameters.\n */\n mergeCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n x509Certificates: Uint8Array[],\n options?: MergeCertificateOptionalParams\n ): Promise<MergeCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n x509Certificates,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n mergeCertificateOperationSpec\n ) as Promise<MergeCertificateResponse>;\n }\n\n /**\n * Requests that a backup of the specified certificate be downloaded to the client. All versions of the\n * certificate will be downloaded. This operation requires the certificates/backup permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param options The options parameters.\n */\n backupCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: BackupCertificateOptionalParams\n ): Promise<BackupCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n backupCertificateOperationSpec\n ) as Promise<BackupCertificateResponse>;\n }\n\n /**\n * Restores a backed up certificate, and all its versions, to a vault. This operation requires the\n * certificates/restore permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateBundleBackup The backup blob associated with a certificate bundle.\n * @param options The options parameters.\n */\n restoreCertificate(\n vaultBaseUrl: string,\n certificateBundleBackup: Uint8Array,\n options?: RestoreCertificateOptionalParams\n ): Promise<RestoreCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateBundleBackup,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n restoreCertificateOperationSpec\n ) as Promise<RestoreCertificateResponse>;\n }\n\n /**\n * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a\n * deleted state and ready for recovery or purging. This operation includes deletion-specific\n * information. This operation requires the certificates/get/list permission. This operation can only\n * be enabled on soft-delete enabled vaults.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param options The options parameters.\n */\n getDeletedCertificates(\n vaultBaseUrl: string,\n options?: GetDeletedCertificatesOptionalParams\n ): Promise<GetDeletedCertificatesResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getDeletedCertificatesOperationSpec\n ) as Promise<GetDeletedCertificatesResponse>;\n }\n\n /**\n * The GetDeletedCertificate operation retrieves the deleted certificate information plus its\n * attributes, such as retention interval, scheduled permanent deletion and the current deletion\n * recovery level. This operation requires the certificates/get permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate\n * @param options The options parameters.\n */\n getDeletedCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: GetDeletedCertificateOptionalParams\n ): Promise<GetDeletedCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getDeletedCertificateOperationSpec\n ) as Promise<GetDeletedCertificateResponse>;\n }\n\n /**\n * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified\n * certificate, without possibility for recovery. The operation is not available if the recovery level\n * does not specify 'Purgeable'. This operation requires the certificate/purge permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate\n * @param options The options parameters.\n */\n purgeDeletedCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: PurgeDeletedCertificateOptionalParams\n ): Promise<coreHttp.RestResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n purgeDeletedCertificateOperationSpec\n ) as Promise<coreHttp.RestResponse>;\n }\n\n /**\n * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation\n * is applicable in vaults enabled for soft-delete, and must be issued during the retention interval\n * (available in the deleted certificate's attributes). This operation requires the\n * certificates/recover permission.\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the deleted certificate\n * @param options The options parameters.\n */\n recoverDeletedCertificate(\n vaultBaseUrl: string,\n certificateName: string,\n options?: RecoverDeletedCertificateOptionalParams\n ): Promise<RecoverDeletedCertificateResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n recoverDeletedCertificateOperationSpec\n ) as Promise<RecoverDeletedCertificateResponse>;\n }\n\n /**\n * GetCertificatesNext\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 GetCertificates method.\n * @param options The options parameters.\n */\n getCertificatesNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetCertificatesNextOptionalParams\n ): Promise<GetCertificatesNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificatesNextOperationSpec\n ) as Promise<GetCertificatesNextResponse>;\n }\n\n /**\n * GetCertificateIssuersNext\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 GetCertificateIssuers method.\n * @param options The options parameters.\n */\n getCertificateIssuersNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetCertificateIssuersNextOptionalParams\n ): Promise<GetCertificateIssuersNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateIssuersNextOperationSpec\n ) as Promise<GetCertificateIssuersNextResponse>;\n }\n\n /**\n * GetCertificateVersionsNext\n * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net.\n * @param certificateName The name of the certificate.\n * @param nextLink The nextLink from the previous successful call to the GetCertificateVersions method.\n * @param options The options parameters.\n */\n getCertificateVersionsNext(\n vaultBaseUrl: string,\n certificateName: string,\n nextLink: string,\n options?: GetCertificateVersionsNextOptionalParams\n ): Promise<GetCertificateVersionsNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n certificateName,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getCertificateVersionsNextOperationSpec\n ) as Promise<GetCertificateVersionsNextResponse>;\n }\n\n /**\n * GetDeletedCertificatesNext\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 GetDeletedCertificates method.\n * @param options The options parameters.\n */\n getDeletedCertificatesNext(\n vaultBaseUrl: string,\n nextLink: string,\n options?: GetDeletedCertificatesNextOptionalParams\n ): Promise<GetDeletedCertificatesNextResponse> {\n const operationArguments: coreHttp.OperationArguments = {\n vaultBaseUrl,\n nextLink,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.sendOperationRequest(\n operationArguments,\n getDeletedCertificatesNextOperationSpec\n ) as Promise<GetDeletedCertificatesNextResponse>;\n }\n}\n// Operation Specifications\nconst serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);\n\nconst getCertificatesOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst setCertificateContactsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/contacts\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.Contacts\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.contacts,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateContactsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/contacts\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Contacts\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateContactsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/contacts\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.Contacts\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificateIssuersOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateIssuerListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst setCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n provider: [\"provider\"],\n credentials: [\"options\", \"credentials\"],\n organizationDetails: [\"options\", \"organizationDetails\"],\n attributes: [\"options\", \"attributes\"]\n },\n mapper: { ...Mappers.CertificateIssuerSetParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst updateCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n provider: [\"options\", \"provider\"],\n credentials: [\"options\", \"credentials\"],\n organizationDetails: [\"options\", \"organizationDetails\"],\n attributes: [\"options\", \"attributes\"]\n },\n mapper: { ...Mappers.CertificateIssuerUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateIssuerOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/issuers/{issuer-name}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.IssuerBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.issuerName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst createCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/create\",\n httpMethod: \"POST\",\n responses: {\n 202: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n certificatePolicy: [\"options\", \"certificatePolicy\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateCreateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName1],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst importCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/import\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n base64EncodedCertificate: [\"base64EncodedCertificate\"],\n password: [\"options\", \"password\"],\n certificatePolicy: [\"options\", \"certificatePolicy\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateImportParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName1],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateVersionsOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/versions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificatePolicyOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/policy\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificatePolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateCertificatePolicyOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/policy\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificatePolicy\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: Parameters.certificatePolicy2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst updateCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/{certificate-version}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n certificatePolicy: [\"options\", \"certificatePolicy\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateUpdateParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.certificateName,\n Parameters.certificateVersion\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/{certificate-version}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.certificateName,\n Parameters.certificateVersion\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst updateCertificateOperationOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { cancellationRequested: [\"cancellationRequested\"] },\n mapper: { ...Mappers.CertificateOperationUpdateParameter, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getCertificateOperationOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst deleteCertificateOperationOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateOperation\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst mergeCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/pending/merge\",\n httpMethod: \"POST\",\n responses: {\n 201: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: {\n x509Certificates: [\"x509Certificates\"],\n certificateAttributes: [\"options\", \"certificateAttributes\"],\n tags: [\"options\", \"tags\"]\n },\n mapper: { ...Mappers.CertificateMergeParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst backupCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/{certificate-name}/backup\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.BackupCertificateResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst restoreCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/certificates/restore\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n requestBody: {\n parameterPath: { certificateBundleBackup: [\"certificateBundleBackup\"] },\n mapper: { ...Mappers.CertificateRestoreParameters, required: true }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getDeletedCertificatesOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\n urlParameters: [Parameters.vaultBaseUrl],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates/{certificate-name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst purgeDeletedCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates/{certificate-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.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst recoverDeletedCertificateOperationSpec: coreHttp.OperationSpec = {\n path: \"/deletedcertificates/{certificate-name}/recover\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateBundle\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.certificateName],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificatesNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificateIssuersNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateIssuerListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [Parameters.vaultBaseUrl, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCertificateVersionsNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [Parameters.maxresults, Parameters.apiVersion],\n urlParameters: [\n Parameters.vaultBaseUrl,\n Parameters.certificateName,\n Parameters.nextLink\n ],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getDeletedCertificatesNextOperationSpec: coreHttp.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeletedCertificateListResult\n },\n default: {\n bodyMapper: Mappers.KeyVaultError\n }\n },\n queryParameters: [\n Parameters.maxresults,\n Parameters.includePending,\n Parameters.apiVersion\n ],\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.4.0\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * @internal\n *\n * Valid key names in WWW-Authenticate header.\n */\nconst validParsedWWWAuthenticateProperties = [\n \"authorization\",\n \"authorization_url\",\n \"resource\",\n \"scope\",\n \"tenantId\",\n] as const;\n\n/**\n * @internal\n *\n * A union type representing all valid key names in WWW-Authenticate header.\n */\ntype ValidParsedWWWAuthenticateProperties = typeof validParsedWWWAuthenticateProperties[number];\n\n/**\n * @internal\n *\n * Holds the known WWWAuthenticate keys and their values as a result of\n * parsing a WWW-Authenticate header.\n */\nexport type ParsedWWWAuthenticate = {\n [Key in ValidParsedWWWAuthenticateProperties]?: string;\n};\n\n/**\n * Parses an WWW-Authenticate response.\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 wwwAuthenticate - String value in the WWW-Authenticate header\n */\nexport function parseWWWAuthenticate(wwwAuthenticate: string): ParsedWWWAuthenticate {\n const pairDelimiter = /,? +/;\n const parsed = wwwAuthenticate\n .split(pairDelimiter)\n .reduce<ParsedWWWAuthenticate>((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 (\n validParsedWWWAuthenticateProperties.includes(key as ValidParsedWWWAuthenticateProperties)\n ) {\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/* eslint-disable @azure/azure-sdk/ts-use-interface-parameters */\n\nimport { AccessTokenCache, ExpiringAccessTokenCache } from \"@azure/core-http\";\nimport {\n BaseRequestPolicy,\n RequestPolicy,\n RequestPolicyFactory,\n RequestPolicyOptions,\n} from \"@azure/core-http\";\nimport { ParsedWWWAuthenticate, parseWWWAuthenticate } from \"./parseWWWAuthenticate\";\nimport { Constants } from \"@azure/core-http\";\nimport { HttpOperationResponse } from \"@azure/core-http\";\nimport { TokenCredential } from \"@azure/core-http\";\nimport { WebResource } from \"@azure/core-http\";\n\n/**\n * Representation of the Authentication Challenge\n */\nexport class AuthenticationChallenge {\n constructor(public authorization: string, public scope: string, public tenantId?: string) {}\n\n /**\n * Checks that this AuthenticationChallenge is equal to another one given.\n * Only compares the scope.\n * This is exactly what C# is doing, as we can see here:\n * https://github.com/Azure/azure-sdk-for-net/blob/70e54b878ff1d01a45266fb3674a396b4ab9c1d2/sdk/keyvault/Azure.Security.KeyVault.Shared/src/ChallengeBasedAuthenticationPolicy.cs#L143-L147\n * @param other - The other AuthenticationChallenge\n */\n public equalTo(other: AuthenticationChallenge | undefined): boolean {\n return other\n ? this.scope.toLowerCase() === other.scope.toLowerCase() &&\n this.authorization.toLowerCase() === other.authorization.toLowerCase() &&\n this.tenantId?.toLowerCase() === other.tenantId?.toLowerCase()\n : false;\n }\n}\n\n/**\n * Helps keep a copy of any previous authentication challenges,\n * so that we can compare on any further request.\n */\nexport class AuthenticationChallengeCache {\n public challenge?: AuthenticationChallenge;\n\n public setCachedChallenge(challenge: AuthenticationChallenge): void {\n this.challenge = challenge;\n }\n}\n\n/**\n * Creates a new ChallengeBasedAuthenticationPolicy factory.\n *\n * @param credential - The TokenCredential implementation that can supply the challenge token.\n */\nexport function challengeBasedAuthenticationPolicy(\n credential: TokenCredential\n): RequestPolicyFactory {\n const tokenCache: AccessTokenCache = new ExpiringAccessTokenCache();\n const challengeCache = new AuthenticationChallengeCache();\n return {\n create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => {\n return new ChallengeBasedAuthenticationPolicy(\n nextPolicy,\n options,\n credential,\n tokenCache,\n challengeCache\n );\n },\n };\n}\n\n/**\n *\n * Provides a RequestPolicy that can request a token from a TokenCredential\n * implementation and then apply it to the Authorization header of a request\n * as a Bearer token.\n *\n */\nexport class ChallengeBasedAuthenticationPolicy extends BaseRequestPolicy {\n private parseWWWAuthenticate: (wwwAuthenticate: string) => ParsedWWWAuthenticate =\n parseWWWAuthenticate;\n\n /**\n * Creates a new ChallengeBasedAuthenticationPolicy object.\n *\n * @param nextPolicy - The next RequestPolicy in the request pipeline.\n * @param options - Options for this RequestPolicy.\n * @param credential - The TokenCredential implementation that can supply the bearer token.\n * @param tokenCache - The cache for the most recent AccessToken returned by the TokenCredential.\n */\n constructor(\n nextPolicy: RequestPolicy,\n options: RequestPolicyOptions,\n private credential: TokenCredential,\n private tokenCache: AccessTokenCache,\n private challengeCache: AuthenticationChallengeCache\n ) {\n super(nextPolicy, options);\n }\n\n /**\n * Gets or updates the token from the token cache into the headers of the received web resource.\n */\n private async loadToken(webResource: WebResource): Promise<void> {\n let accessToken = this.tokenCache.getCachedToken();\n\n // If there's no cached token in the cache, we try to get a new one.\n if (accessToken === undefined) {\n const receivedToken = await this.credential.getToken(this.challengeCache.challenge!.scope, {\n tenantId: this.challengeCache.challenge!.tenantId,\n });\n accessToken = receivedToken || undefined;\n this.tokenCache.setCachedToken(accessToken);\n }\n\n if (accessToken) {\n webResource.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`\n );\n }\n }\n\n /**\n * Parses the given WWW-Authenticate header, generates a new AuthenticationChallenge,\n * then if the challenge is different from the one cached, resets the token and forces\n * a re-authentication, otherwise continues with the existing challenge and token.\n * @param wwwAuthenticate - Value of the incoming WWW-Authenticate header.\n * @param webResource - Ongoing HTTP request.\n */\n private async regenerateChallenge(\n wwwAuthenticate: string,\n webResource: WebResource\n ): Promise<HttpOperationResponse> {\n // The challenge based authentication will contain both:\n // - An authorization URI with a token,\n // - The resource to which that token is valid against (also called the scope).\n const parsedWWWAuth = this.parseWWWAuthenticate(wwwAuthenticate);\n const authorization = parsedWWWAuth.authorization!;\n const resource = parsedWWWAuth.resource! || parsedWWWAuth.scope!;\n const tenantId = parsedWWWAuth.tenantId;\n\n if (!(authorization && resource)) {\n return this._nextPolicy.sendRequest(webResource);\n }\n\n const challenge = new AuthenticationChallenge(authorization, resource + \"/.default\", tenantId);\n\n // Either if there's no cached challenge at this point (could have happen in parallel),\n // or if the cached challenge has a different scope,\n // we store the just received challenge and reset the cached token, to force a re-authentication.\n if (!this.challengeCache.challenge?.equalTo(challenge)) {\n this.challengeCache.setCachedChallenge(challenge);\n this.tokenCache.setCachedToken(undefined);\n }\n\n await this.loadToken(webResource);\n return this._nextPolicy.sendRequest(webResource);\n }\n\n /**\n * Applies the Bearer token to the request through the Authorization header.\n * @param webResource - Ongoing HTTP request.\n */\n public async sendRequest(webResource: WebResource): Promise<HttpOperationResponse> {\n // Ensure that we're about to use a secure connection.\n if (!webResource.url.startsWith(\"https:\")) {\n throw new Error(\"The resource address for authorization must use the 'https' protocol.\");\n }\n\n // The next request will happen differently whether we have a challenge or not.\n let response: HttpOperationResponse;\n\n if (\n this.challengeCache.challenge === undefined ||\n this.challengeCache.challenge === undefined\n ) {\n // If there's no challenge in cache, a blank body will start the challenge.\n const originalBody = webResource.body;\n webResource.body = \"\";\n try {\n response = await this._nextPolicy.sendRequest(webResource);\n } finally {\n webResource.body = originalBody;\n }\n } else {\n // If we did have a challenge in memory,\n // we attempt to load the token from the cache into the request before we try to send the request.\n await this.loadToken(webResource);\n response = await this._nextPolicy.sendRequest(webResource);\n }\n\n // If we don't receive a response with a 401 status code,\n // then we can assume this response has nothing to do with the challenge authentication process.\n if (response.status !== 401) {\n return response;\n }\n\n // If the response status is 401, we only re-authenticate if the WWW-Authenticate header is present.\n const wwwAuthenticate = response.headers.get(\"WWW-Authenticate\");\n if (!wwwAuthenticate) {\n return response;\n }\n\n // We re-generate the challenge and see if we have to re-authenticate.\n return this.regenerateChallenge(wwwAuthenticate, webResource);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as url from \"url\";\n\nexport interface ParsedKeyVaultEntityIdentifier {\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}\nexport function parseKeyvaultIdentifier(\n collection: string,\n identifier: string | undefined\n): ParsedKeyVaultEntityIdentifier {\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 = url.parse(identifier, true, true);\n } catch (e) {\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 { Span, SpanStatusCode, createSpanFunction } from \"@azure/core-tracing\";\nimport { OperationOptions } from \"@azure/core-http\";\n\n/**\n * An interface representing a function that is traced.\n *\n * A traced function will automatically create and close tracing '\n * spans as needed and will handle setting the status / errors as a\n * result of calling the underlying callback.\n *\n * use {@link createTraceFunction} to add tracing to a block of code.\n *\n * @internal\n */\nexport interface TracedFunction {\n <TOptions extends OperationOptions, TReturn>(\n operationName: string,\n options: TOptions,\n cb: (options: TOptions, span: Span) => Promise<TReturn>\n ): Promise<TReturn>;\n}\n\n/**\n * Returns a function that can be used for tracing options.\n *\n * @param prefix - The prefix to use, likely the name of the class / client.\n *\n * @example const withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CertificateClient\")\n *\n * @internal\n */\nexport function createTraceFunction(prefix: string): TracedFunction {\n const createSpan = createSpanFunction({\n namespace: \"Microsoft.KeyVault\",\n packagePrefix: prefix,\n });\n\n return async function (operationName, options, cb) {\n const { updatedOptions, span } = createSpan(operationName, options);\n\n try {\n // NOTE: we really do need to await on this function here so we can handle any exceptions thrown and properly\n // close the span.\n const result = await cb(updatedOptions, span);\n\n // otel 0.16+ needs this or else the code ends up being set as UNSET\n span.setStatus({\n code: SpanStatusCode.OK,\n });\n return result;\n } catch (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n throw err;\n } finally {\n span.end();\n }\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { delay, OperationOptions } from \"@azure/core-http\";\nimport { Poller, PollOperation, PollOperationState } from \"@azure/core-lro\";\nimport { KeyVaultClient } from \"../generated/keyVaultClient\";\n\n/**\n * Common parameters to a Key Vault Certificate Poller.\n */\nexport interface KeyVaultCertificatePollerOptions {\n certificateName: string;\n vaultUrl: string;\n client: KeyVaultClient;\n operationOptions?: OperationOptions;\n intervalInMs?: number;\n resumeFrom?: string;\n}\n\n/**\n * An interface representing the public shape of the state of a Key Vault Certificate Poller's operations.\n */\nexport interface KeyVaultCertificatePollOperationState<TResult>\n extends PollOperationState<TResult> {\n /**\n * The name of the certificate.\n */\n certificateName: string;\n}\n\n/**\n * Generates a version of the state with only public properties. At least those common for all of the Key Vault Certificates pollers.\n */\n// eslint-disable-next-line no-use-before-define\nexport function cleanState<TState extends KeyVaultCertificatePollOperationState<TResult>, TResult>(\n state: TState\n): KeyVaultCertificatePollOperationState<TResult> {\n return {\n certificateName: state.certificateName,\n isStarted: state.isStarted,\n isCancelled: state.isCancelled,\n isCompleted: state.isCompleted,\n error: state.error,\n result: state.result,\n };\n}\n\n/**\n * Common properties and methods of the Key Vault Certificate Pollers.\n */\nexport abstract class KeyVaultCertificatePoller<\n TState extends KeyVaultCertificatePollOperationState<TResult>,\n TResult\n> extends Poller<TState, TResult> {\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<void> {\n return delay(this.intervalInMs);\n }\n\n /**\n * Gets the public state of the polling operation\n */\n public getOperationState(): TState {\n return cleanState(this.operation.state) as TState;\n }\n}\n\n/**\n * Optional parameters to the KeyVaultCertificatePollOperation\n */\nexport interface KeyVaultCertificatePollOperationOptions {\n cancelMessage?: string;\n}\n\n/**\n * Common properties and methods of the Key Vault Certificate Poller operations.\n */\nexport class KeyVaultCertificatePollOperation<\n TState extends KeyVaultCertificatePollOperationState<TResult>,\n TResult\n> implements PollOperation<TState, TResult>\n{\n private cancelMessage: string = \"\";\n\n constructor(public state: TState, options: KeyVaultCertificatePollOperationOptions = {}) {\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<PollOperation<TState, TResult>> {\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<PollOperation<TState, TResult>> {\n throw new Error(this.cancelMessage);\n }\n\n /**\n * Serializes the create certificate's poll operation\n */\n public toString(): string {\n return JSON.stringify({\n state: cleanState(this.state),\n });\n }\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 Certificate Id.\n */\nexport interface KeyVaultCertificateIdentifier {\n /**\n * The complete representation of the Key Vault Certificate Id. For example:\n *\n * https://<keyvault-name>.vault.azure.net/certificates/<certificate-name>/<unique-version-id>\n *\n */\n sourceId: string;\n\n /**\n * The URL of the Azure Key Vault instance to which the Certificate belongs.\n */\n vaultUrl: string;\n\n /**\n * The version of Key Vault Certificate. Might be undefined.\n */\n version?: string;\n\n /**\n * The name of the Key Vault Certificate.\n */\n name: string;\n}\n\n/**\n * Parses the given Key Vault Certificate Id. An example is:\n *\n * https://<keyvault-name>.vault.azure.net/certificates/<certificate-name>/<unique-version-id>\n *\n * On parsing the above Id, this function returns:\n *```ts\n * {\n * sourceId: \"https://<keyvault-name>.vault.azure.net/certificates/<certificate-name>/<unique-version-id>\",\n * vaultUrl: \"https://<keyvault-name>.vault.azure.net\",\n * version: \"<unique-version-id>\",\n * name: \"<certificate-name>\"\n * }\n *```\n * @param id - The Id of the Key Vault Certificate.\n */\nexport function parseKeyVaultCertificateIdentifier(id: string): KeyVaultCertificateIdentifier {\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 {\n ArrayOneOrMore,\n CertificateContentType,\n CertificateOperation,\n CertificateIssuer,\n CertificatePolicy,\n CertificateProperties,\n DeletedCertificate,\n KeyVaultCertificate,\n KeyVaultCertificateWithPolicy,\n SubjectAlternativeNames,\n CertificateContact,\n CertificateOperationError,\n} from \"./certificatesModels\";\nimport {\n CertificateAttributes,\n CertificateBundle,\n CertificatePolicy as CoreCertificatePolicy,\n DeletedCertificateBundle,\n DeletedCertificateItem,\n IssuerAttributes,\n IssuerBundle,\n SubjectAlternativeNames as CoreSubjectAlternativeNames,\n X509CertificateProperties,\n CertificateOperation as CoreCertificateOperation,\n Contacts as CoreContacts,\n JsonWebKeyType as CertificateKeyType,\n ErrorModel,\n} from \"./generated/models\";\nimport { parseKeyVaultCertificateIdentifier } from \"./identifier\";\n\nexport function toCoreAttributes(properties: CertificateProperties): CertificateAttributes {\n return {\n recoveryLevel: properties.recoveryLevel,\n enabled: properties.enabled,\n notBefore: properties.notBefore,\n expires: properties.expiresOn,\n created: properties.createdOn,\n updated: properties.updatedOn,\n };\n}\n\nexport function toCorePolicy(\n id: string | undefined,\n policy: CertificatePolicy,\n attributes: CertificateAttributes = {}\n): CoreCertificatePolicy {\n let subjectAlternativeNames: CoreSubjectAlternativeNames = {};\n if (policy.subjectAlternativeNames) {\n subjectAlternativeNames = {\n emails: policy.subjectAlternativeNames.emails,\n dnsNames: policy.subjectAlternativeNames.dnsNames,\n upns: policy.subjectAlternativeNames.userPrincipalNames,\n };\n }\n\n return {\n id,\n lifetimeActions: policy.lifetimeActions\n ? policy.lifetimeActions.map((action) => ({\n action: { actionType: action.action },\n trigger: {\n lifetimePercentage: action.lifetimePercentage,\n daysBeforeExpiry: action.daysBeforeExpiry,\n },\n }))\n : undefined,\n keyProperties: {\n keyType: policy.keyType,\n keySize: policy.keySize,\n reuseKey: policy.reuseKey,\n curve: policy.keyCurveName,\n exportable: policy.exportable,\n },\n secretProperties: {\n contentType: policy.contentType,\n },\n x509CertificateProperties: {\n subject: policy.subject,\n ekus: policy.enhancedKeyUsage,\n subjectAlternativeNames,\n keyUsage: policy.keyUsage,\n validityInMonths: policy.validityInMonths,\n },\n issuerParameters: {\n name: policy.issuerName,\n certificateType: policy.certificateType,\n certificateTransparency: policy.certificateTransparency,\n },\n attributes,\n };\n}\n\nexport function toPublicPolicy(policy: CoreCertificatePolicy = {}): CertificatePolicy {\n let subjectAlternativeNames: SubjectAlternativeNames | undefined;\n const x509Properties: X509CertificateProperties = policy.x509CertificateProperties || {};\n\n if (policy.x509CertificateProperties) {\n if (x509Properties.subjectAlternativeNames) {\n const names = x509Properties.subjectAlternativeNames;\n if (names.emails && names.emails.length) {\n subjectAlternativeNames = {\n ...subjectAlternativeNames,\n emails: names.emails as ArrayOneOrMore<string>,\n };\n }\n if (names.dnsNames && names.dnsNames.length) {\n subjectAlternativeNames = {\n ...subjectAlternativeNames,\n dnsNames: names.dnsNames as ArrayOneOrMore<string>,\n };\n }\n if (names.upns && names.upns.length) {\n subjectAlternativeNames = {\n ...subjectAlternativeNames,\n userPrincipalNames: names.upns as ArrayOneOrMore<string>,\n };\n }\n }\n }\n\n const certificatePolicy: CertificatePolicy = {\n lifetimeActions: policy.lifetimeActions\n ? policy.lifetimeActions.map((action) => ({\n action: action.action ? action.action.actionType : undefined,\n daysBeforeExpiry: action.trigger ? action.trigger.daysBeforeExpiry : undefined,\n lifetimePercentage: action.trigger ? action.trigger.lifetimePercentage : undefined,\n }))\n : undefined,\n contentType: policy.secretProperties\n ? (policy.secretProperties.contentType as CertificateContentType)\n : undefined,\n enhancedKeyUsage: x509Properties.ekus,\n keyUsage: x509Properties.keyUsage,\n validityInMonths: x509Properties.validityInMonths,\n subject: x509Properties.subject,\n subjectAlternativeNames: subjectAlternativeNames!,\n };\n\n if (policy.attributes) {\n certificatePolicy.enabled = policy.attributes.enabled;\n }\n\n if (policy.keyProperties) {\n certificatePolicy.keyType = policy.keyProperties.keyType as CertificateKeyType;\n certificatePolicy.keySize = policy.keyProperties.keySize;\n certificatePolicy.reuseKey = policy.keyProperties.reuseKey;\n certificatePolicy.keyCurveName = policy.keyProperties.curve;\n certificatePolicy.exportable = policy.keyProperties.exportable;\n }\n\n if (policy.issuerParameters) {\n certificatePolicy.issuerName = policy.issuerParameters && policy.issuerParameters.name;\n certificatePolicy.certificateType = policy.issuerParameters\n .certificateType as CertificateContentType;\n certificatePolicy.certificateTransparency = policy.issuerParameters.certificateTransparency;\n }\n\n return certificatePolicy;\n}\n\nexport function toPublicIssuer(issuer: IssuerBundle = {}): CertificateIssuer {\n const parsedId = parseKeyVaultCertificateIdentifier(issuer.id!);\n const attributes: IssuerAttributes = issuer.attributes || {};\n\n const publicIssuer: CertificateIssuer = {\n id: issuer.id,\n name: parsedId.name,\n provider: issuer.provider,\n accountId: issuer.credentials && issuer.credentials.accountId,\n password: issuer.credentials && issuer.credentials.password,\n enabled: attributes.enabled,\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n };\n\n if (issuer.organizationDetails) {\n publicIssuer.organizationId = issuer.organizationDetails.id;\n publicIssuer.administratorContacts = issuer.organizationDetails.adminDetails\n ? issuer.organizationDetails.adminDetails.map((x) => ({\n email: x.emailAddress,\n phone: x.phone,\n firstName: x.firstName,\n lastName: x.lastName,\n }))\n : undefined;\n }\n return publicIssuer;\n}\n\nexport function getCertificateFromCertificateBundle(\n certificateBundle: CertificateBundle\n): KeyVaultCertificate {\n const parsedId = parseKeyVaultCertificateIdentifier(certificateBundle.id!);\n\n const attributes: CertificateAttributes = certificateBundle.attributes || {};\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n id: certificateBundle.id,\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n recoveryLevel: attributes.recoveryLevel,\n name: parsedId.name,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n tags: certificateBundle.tags,\n x509Thumbprint: certificateBundle.x509Thumbprint,\n recoverableDays: attributes.recoverableDays,\n };\n\n return {\n keyId: certificateBundle.kid,\n secretId: certificateBundle.sid,\n name: parsedId.name,\n cer: certificateBundle.cer,\n properties: abstractProperties,\n };\n}\n\nexport function getCertificateWithPolicyFromCertificateBundle(\n certificateBundle: CertificateBundle\n): KeyVaultCertificateWithPolicy {\n const parsedId = parseKeyVaultCertificateIdentifier(certificateBundle.id!);\n\n const attributes: CertificateAttributes = certificateBundle.attributes || {};\n const policy = toPublicPolicy(certificateBundle.policy || {});\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n id: certificateBundle.id,\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n recoveryLevel: attributes.recoveryLevel,\n name: parsedId.name,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n tags: certificateBundle.tags,\n x509Thumbprint: certificateBundle.x509Thumbprint,\n recoverableDays: attributes.recoverableDays,\n };\n\n return {\n keyId: certificateBundle.kid,\n secretId: certificateBundle.sid,\n name: parsedId.name,\n cer: certificateBundle.cer,\n policy,\n properties: abstractProperties,\n };\n}\n\nexport function getDeletedCertificateFromDeletedCertificateBundle(\n certificateBundle: DeletedCertificateBundle\n): DeletedCertificate {\n const certificate: KeyVaultCertificateWithPolicy =\n getCertificateWithPolicyFromCertificateBundle(certificateBundle);\n\n return {\n policy: certificate.policy,\n cer: certificate.cer,\n id: certificate.id,\n keyId: certificate.keyId,\n secretId: certificate.secretId,\n name: certificate.name,\n properties: certificate.properties,\n recoveryId: certificateBundle.recoveryId,\n scheduledPurgeDate: certificateBundle.scheduledPurgeDate,\n deletedOn: certificateBundle.deletedDate,\n };\n}\n\nexport function getDeletedCertificateFromItem(item: DeletedCertificateItem): DeletedCertificate {\n const parsedId = parseKeyVaultCertificateIdentifier(item.id!);\n\n const attributes: any = item.attributes || {};\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n name: parsedId.name,\n\n id: item.id,\n tags: item.tags,\n x509Thumbprint: item.x509Thumbprint,\n\n recoverableDays: item.attributes?.recoverableDays,\n recoveryLevel: item.attributes?.recoveryLevel,\n };\n\n return {\n deletedOn: item.deletedDate,\n recoveryId: item.recoveryId,\n scheduledPurgeDate: item.scheduledPurgeDate,\n name: parsedId.name,\n properties: abstractProperties,\n };\n}\n\nfunction getCertificateOperationErrorFromErrorModel(\n error?: ErrorModel | null\n): CertificateOperationError | undefined {\n if (error) {\n return {\n code: error.code,\n innerError: getCertificateOperationErrorFromErrorModel(error.innerError),\n message: error.message,\n };\n }\n return undefined;\n}\n\nexport function getCertificateOperationFromCoreOperation(\n certificateName: string,\n vaultUrl: string,\n operation: CoreCertificateOperation\n): CertificateOperation {\n return {\n cancellationRequested: operation.cancellationRequested,\n name: certificateName,\n issuerName: operation.issuerParameters ? operation.issuerParameters.name : undefined,\n certificateTransparency: operation.issuerParameters\n ? operation.issuerParameters.certificateTransparency\n : undefined,\n certificateType: operation.issuerParameters\n ? operation.issuerParameters.certificateType\n : undefined,\n csr: operation.csr,\n error: getCertificateOperationErrorFromErrorModel(operation.error),\n id: operation.id,\n requestId: operation.requestId,\n status: operation.status,\n statusDetails: operation.statusDetails,\n target: operation.target,\n vaultUrl: vaultUrl,\n };\n}\n\nexport function coreContactsToCertificateContacts(contacts: CoreContacts): CertificateContact[] {\n return contacts.contactList\n ? contacts.contactList.map(\n (x) => ({ email: x.emailAddress, phone: x.phone, name: x.name } as CertificateContact)\n )\n : [];\n}\n\nexport function getPropertiesFromCertificateBundle(\n certificateBundle: CertificateBundle\n): CertificateProperties {\n const parsedId = parseKeyVaultCertificateIdentifier(certificateBundle.id!);\n const attributes: CertificateAttributes = certificateBundle.attributes || {};\n\n const abstractProperties: CertificateProperties = {\n createdOn: attributes.created,\n updatedOn: attributes.updated,\n expiresOn: attributes.expires,\n id: certificateBundle.id,\n name: parsedId.name,\n enabled: attributes.enabled,\n notBefore: attributes.notBefore,\n recoveryLevel: attributes.recoveryLevel,\n vaultUrl: parsedId.vaultUrl,\n version: parsedId.version,\n tags: certificateBundle.tags,\n x509Thumbprint: certificateBundle.x509Thumbprint,\n recoverableDays: attributes.recoverableDays,\n };\n\n return abstractProperties;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike, AbortSignal } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-http\";\nimport {\n KeyVaultCertificateWithPolicy,\n CreateCertificateOptions,\n CertificatePolicy,\n GetCertificateOptions,\n GetPlainCertificateOperationOptions,\n CancelCertificateOperationOptions,\n} from \"../../certificatesModels\";\nimport { CertificateOperation } from \"../../generated/models\";\nimport {\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState,\n} from \"../keyVaultCertificatePoller\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport {\n getCertificateOperationFromCoreOperation,\n getCertificateWithPolicyFromCertificateBundle,\n toCoreAttributes,\n toCorePolicy,\n} from \"../../transformations\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CreateCertificatePoller\");\n\n/**\n * The public representation of the CreateCertificatePoller operation state.\n */\nexport type CreateCertificateState =\n KeyVaultCertificatePollOperationState<KeyVaultCertificateWithPolicy>;\n\n/**\n * An interface representing the state of a create certificate's poll operation\n */\nexport interface CreateCertificatePollOperationState\n extends KeyVaultCertificatePollOperationState<KeyVaultCertificateWithPolicy> {\n /**\n * The policy of the certificate.\n */\n certificatePolicy?: CertificatePolicy;\n /**\n * Optional parameters sent to createCertificates\n */\n createCertificateOptions: CreateCertificateOptions;\n /**\n * The operation of the certificate\n */\n certificateOperation?: CertificateOperation;\n}\n\n/**\n * An interface representing a create certificate's poll operation\n */\nexport class CreateCertificatePollOperation extends KeyVaultCertificatePollOperation<\n CreateCertificatePollOperationState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(\n public state: CreateCertificatePollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state);\n }\n\n /**\n * Creates a new certificate. If this is the first version, the certificate resource is created. This operation requires the certificates/create permission.\n */\n private createCertificate(\n certificateName: string,\n certificatePolicy: CertificatePolicy,\n options: CreateCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"createCertificate\", options, async (updatedOptions) => {\n const id = options.id;\n const certificateAttributes = toCoreAttributes(options);\n const corePolicy = toCorePolicy(id, certificatePolicy, certificateAttributes);\n const result = await this.client.createCertificate(this.vaultUrl, certificateName, {\n ...updatedOptions,\n certificatePolicy: corePolicy,\n certificateAttributes,\n });\n\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n */\n private getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets the certificate operation.\n */\n private getPlainCertificateOperation(\n certificateName: string,\n options: GetPlainCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"getPlainCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateOperation(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Cancels a certificate creation operation that is already in progress. This operation requires the certificates/update permission.\n */\n private cancelCertificateOperation(\n certificateName: string,\n options: CancelCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"cancelCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.updateCertificateOperation(\n this.vaultUrl,\n certificateName,\n true,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Reaches to the service and updates the create certificate's poll operation.\n */\n async update(\n this: CreateCertificatePollOperation,\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: CreateCertificatePollOperationState) => void;\n } = {}\n ): Promise<CreateCertificatePollOperation> {\n const state = this.state;\n const { certificateName, certificatePolicy, createCertificateOptions } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n createCertificateOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n state.isStarted = true;\n state.result = await this.createCertificate(\n certificateName,\n certificatePolicy!,\n createCertificateOptions\n );\n this.state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n } else if (!state.isCompleted) {\n this.state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n }\n\n if (state.certificateOperation && state.certificateOperation.status !== \"inProgress\") {\n state.isCompleted = true;\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n if (state.certificateOperation.error) {\n state.error = new Error(state.certificateOperation.error.message);\n }\n }\n\n return this;\n }\n\n /**\n * Reaches to the service and cancels the certificate's operation, also updating the certificate's poll operation\n */\n async cancel(\n this: CreateCertificatePollOperation,\n options: { abortSignal?: AbortSignal } = {}\n ): Promise<CreateCertificatePollOperation> {\n const state = this.state;\n const { certificateName } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n state.certificateOperation = await this.cancelCertificateOperation(\n certificateName,\n this.operationOptions\n );\n\n this.state.isCancelled = true;\n return this;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CreateCertificatePollOperation, CreateCertificateState } from \"./operation\";\nimport {\n KeyVaultCertificateWithPolicy,\n CreateCertificateOptions,\n CertificatePolicy,\n} from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions,\n} from \"../keyVaultCertificatePoller\";\n\nexport interface CreateCertificatePollerOptions extends KeyVaultCertificatePollerOptions {\n certificatePolicy?: CertificatePolicy;\n createCertificateOptions: CreateCertificateOptions;\n}\n\n/**\n * Class that deletes a poller that waits until a certificate finishes being deleted\n */\nexport class CreateCertificatePoller extends KeyVaultCertificatePoller<\n CreateCertificateState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(options: CreateCertificatePollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n certificatePolicy,\n createCertificateOptions,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom,\n } = options;\n\n let state: CreateCertificateState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new CreateCertificatePollOperation(\n {\n ...state,\n certificateName,\n certificatePolicy,\n createCertificateOptions,\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, AbortSignal } from \"@azure/abort-controller\";\nimport { OperationOptions } from \"@azure/core-http\";\nimport {\n CancelCertificateOperationOptions,\n CertificateOperation,\n GetCertificateOptions,\n GetPlainCertificateOperationOptions,\n KeyVaultCertificateWithPolicy,\n} from \"../../certificatesModels\";\nimport {\n cleanState,\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState,\n} from \"../keyVaultCertificatePoller\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport {\n getCertificateOperationFromCoreOperation,\n getCertificateWithPolicyFromCertificateBundle,\n} from \"../../transformations\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CertificateOperationPoller\");\n\n/**\n * An interface representing the publicly available properties of the state of the CertificateOperationPoller.\n */\nexport interface CertificateOperationState\n extends KeyVaultCertificatePollOperationState<KeyVaultCertificateWithPolicy> {\n /**\n * The operation of the certificate\n */\n certificateOperation?: CertificateOperation;\n}\n\n/**\n * An interface representing the active operation of a certificate's creation,\n * which is represented locally as the \"operation\" of an active LRO Poller.\n */\nexport class CertificateOperationPollOperation extends KeyVaultCertificatePollOperation<\n CertificateOperationState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(\n public state: CertificateOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state);\n }\n\n /**\n * Cancels a certificate creation operation that is already in progress. This operation requires the certificates/update permission.\n */\n private cancelCertificateOperation(\n certificateName: string,\n options: CancelCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"cancelCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.updateCertificateOperation(\n this.vaultUrl,\n certificateName,\n true,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n */\n private getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets the certificate operation.\n */\n private getPlainCertificateOperation(\n certificateName: string,\n options: GetPlainCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"getPlainCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateOperation(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Reaches to the service and updates the poll operation.\n */\n async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: CertificateOperationState) => void;\n } = {}\n ): Promise<CertificateOperationPollOperation> {\n const state = this.state;\n const certificateName = state.certificateName!;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n state.isStarted = true;\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n } else if (!state.isCompleted) {\n state.certificateOperation = await this.getPlainCertificateOperation(\n certificateName,\n this.operationOptions\n );\n }\n\n if (state.certificateOperation && state.certificateOperation.status !== \"inProgress\") {\n state.isCompleted = true;\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n if (state.certificateOperation.error) {\n state.error = new Error(state.certificateOperation.error.message);\n }\n }\n\n return this;\n }\n\n /**\n * Reaches to the service and cancels the certificate's operation, also updating the poll operation.\n */\n async cancel(\n this: CertificateOperationPollOperation,\n options: { abortSignal?: AbortSignal } = {}\n ): Promise<CertificateOperationPollOperation> {\n const state = this.state;\n const certificateName = state.certificateName!;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n state.certificateOperation = await this.cancelCertificateOperation(\n certificateName,\n this.operationOptions\n );\n\n this.state.isCancelled = true;\n return this;\n }\n\n /**\n * Serializes the certificate's poll operation\n */\n public toString(): string {\n const state: CertificateOperationState = {\n certificateOperation: this.state.certificateOperation,\n ...cleanState(this.state),\n };\n return JSON.stringify({\n state,\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CertificateOperationPollOperation, CertificateOperationState } from \"./operation\";\nimport { KeyVaultCertificateWithPolicy } from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions,\n cleanState,\n} from \"../keyVaultCertificatePoller\";\n\nexport interface CertificateOperationPollerOptions extends KeyVaultCertificatePollerOptions {}\n\n/**\n * Class that creates a poller that waits until a certificate finishes being created\n */\nexport class CertificateOperationPoller extends KeyVaultCertificatePoller<\n CertificateOperationState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(options: CertificateOperationPollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom,\n } = options;\n\n let state: CertificateOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new CertificateOperationPollOperation(\n {\n ...state,\n certificateName,\n },\n vaultUrl,\n client,\n operationOptions\n );\n\n super(operation);\n\n this.intervalInMs = intervalInMs;\n }\n\n /**\n * Gets the public state of the polling operation\n */\n public getOperationState(): CertificateOperationState {\n return {\n ...cleanState(this.operation.state),\n certificateOperation: this.operation.state.certificateOperation,\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-http\";\nimport {\n DeleteCertificateOptions,\n DeletedCertificate,\n GetDeletedCertificateOptions,\n} from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState,\n} from \"../keyVaultCertificatePoller\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport { getDeletedCertificateFromDeletedCertificateBundle } from \"../../transformations\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.DeleteCertificatePoller\");\n\n/**\n * The public representation of the DeleteCertificatePoller operation state.\n */\nexport type DeleteCertificateState = KeyVaultCertificatePollOperationState<DeletedCertificate>;\n\n/**\n * An interface representing the state of a delete certificate's poll operation\n */\nexport interface DeleteCertificatePollOperationState\n extends KeyVaultCertificatePollOperationState<DeletedCertificate> {}\n\n/**\n * An interface representing a delete certificate's poll operation\n */\nexport class DeleteCertificatePollOperation extends KeyVaultCertificatePollOperation<\n DeleteCertificatePollOperationState,\n DeletedCertificate\n> {\n constructor(\n public state: DeleteCertificatePollOperationState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state, { cancelMessage: \"Canceling the deletion of a certificate is not supported.\" });\n }\n\n /**\n * The DELETE operation applies to any certificate stored in Azure Key Vault. DELETE cannot be applied\n * to an individual version of a certificate. This operation requires the certificates/delete permission.\n */\n private deleteCertificate(\n certificateName: string,\n options: DeleteCertificateOptions = {}\n ): Promise<DeletedCertificate> {\n return withTrace(\"deleteCertificate\", options, async (updatedOptions) => {\n const response = await this.client.deleteCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getDeletedCertificateFromDeletedCertificateBundle(response);\n });\n }\n\n /**\n * Retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the\n * current deletion recovery level. This operation requires the certificates/get permission.\n */\n public async getDeletedCertificate(\n certificateName: string,\n options: GetDeletedCertificateOptions = {}\n ): Promise<DeletedCertificate> {\n return withTrace(\"getDeletedCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getDeletedCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getDeletedCertificateFromDeletedCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Reaches to the service and updates the delete certificate's poll operation.\n */\n async update(\n this: DeleteCertificatePollOperation,\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: DeleteCertificatePollOperationState) => void;\n } = {}\n ): Promise<DeleteCertificatePollOperation> {\n const state = this.state;\n const { certificateName } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n const deletedCertificate = await this.deleteCertificate(\n certificateName,\n this.operationOptions\n );\n state.isStarted = true;\n state.result = deletedCertificate;\n if (!deletedCertificate.recoveryId) {\n state.isCompleted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getDeletedCertificate(certificateName, this.operationOptions);\n state.isCompleted = true;\n } catch (error) {\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 { DeleteCertificatePollOperation, DeleteCertificatePollOperationState } from \"./operation\";\nimport { DeletedCertificate } from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions,\n} from \"../keyVaultCertificatePoller\";\n\nexport interface DeleteCertificatePollerOptions extends KeyVaultCertificatePollerOptions {}\n\n/**\n * Class that deletes a poller that waits until a certificate finishes being deleted\n * @internal\n */\nexport class DeleteCertificatePoller extends KeyVaultCertificatePoller<\n DeleteCertificatePollOperationState,\n DeletedCertificate\n> {\n constructor(options: DeleteCertificatePollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom,\n } = options;\n\n let state: DeleteCertificatePollOperationState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new DeleteCertificatePollOperation(\n {\n ...state,\n certificateName,\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-http\";\nimport { createTraceFunction } from \"../../../../keyvault-common/src\";\nimport {\n GetCertificateOptions,\n KeyVaultCertificateWithPolicy,\n RecoverDeletedCertificateOptions,\n} from \"../../certificatesModels\";\nimport { KeyVaultClient } from \"../../generated/keyVaultClient\";\nimport { getCertificateWithPolicyFromCertificateBundle } from \"../../transformations\";\nimport {\n KeyVaultCertificatePollOperation,\n KeyVaultCertificatePollOperationState,\n} from \"../keyVaultCertificatePoller\";\n\n/**\n * @internal\n */\nconst withTrace = createTraceFunction(\n \"Azure.KeyVault.Certificates.RecoverDeletedCertificatePoller\"\n);\n\n/**\n * Deprecated: Public representation of the recovery of a deleted certificate poll operation\n */\nexport type RecoverDeletedCertificateState =\n KeyVaultCertificatePollOperationState<KeyVaultCertificateWithPolicy>;\n\n/**\n * An interface representing the recovery of a deleted certificate's poll operation\n */\nexport class RecoverDeletedCertificatePollOperation extends KeyVaultCertificatePollOperation<\n RecoverDeletedCertificateState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(\n public state: RecoverDeletedCertificateState,\n private vaultUrl: string,\n private client: KeyVaultClient,\n private operationOptions: OperationOptions = {}\n ) {\n super(state, {\n cancelMessage: \"Canceling the recovery of a deleted certificate is not supported.\",\n });\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n */\n private getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Recovers the deleted certificate in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation\n * requires the certificate/recover permission.\n */\n private recoverDeletedCertificate(\n certificateName: string,\n options: RecoverDeletedCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"recoverDeletedCertificate\", options, async (updatedOptions) => {\n const result = await this.client.recoverDeletedCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Reaches to the service and updates the poll operation.\n */\n async update(\n options: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: RecoverDeletedCertificateState) => void;\n } = {}\n ): Promise<RecoverDeletedCertificatePollOperation> {\n const state = this.state;\n const { certificateName } = state;\n\n if (options.abortSignal) {\n this.operationOptions.abortSignal = options.abortSignal;\n }\n\n if (!state.isStarted) {\n try {\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n state.isCompleted = true;\n } catch (e) {\n // getCertificate will only work once the LRO is completed.\n }\n if (!state.isCompleted) {\n state.result = await this.recoverDeletedCertificate(certificateName, this.operationOptions);\n state.isStarted = true;\n }\n }\n\n if (!state.isCompleted) {\n try {\n state.result = await this.getCertificate(certificateName, this.operationOptions);\n state.isCompleted = true;\n } catch (error) {\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 {\n RecoverDeletedCertificatePollOperation,\n RecoverDeletedCertificateState,\n} from \"./operation\";\nimport { KeyVaultCertificateWithPolicy } from \"../../certificatesModels\";\nimport {\n KeyVaultCertificatePoller,\n KeyVaultCertificatePollerOptions,\n} from \"../keyVaultCertificatePoller\";\n\nexport interface RecoverDeletedCertificatePollerOptions extends KeyVaultCertificatePollerOptions {}\n\n/**\n * Class that creates a poller that waits until a deleted certificate is fully recovered.\n */\nexport class RecoverDeletedCertificatePoller extends KeyVaultCertificatePoller<\n RecoverDeletedCertificateState,\n KeyVaultCertificateWithPolicy\n> {\n constructor(options: RecoverDeletedCertificatePollerOptions) {\n const {\n vaultUrl,\n client,\n certificateName,\n operationOptions,\n intervalInMs = 2000,\n resumeFrom,\n } = options;\n\n let state: RecoverDeletedCertificateState | undefined;\n\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n\n const operation = new RecoverDeletedCertificatePollOperation(\n {\n ...state,\n certificateName,\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 { isNode } from \"@azure/core-http\";\nimport { CertificateContentType } from \"./certificatesModels\";\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function toBase64(bytes: Uint8Array): string {\n if (isNode) {\n return Buffer.from(bytes).toString(\"base64\");\n } else {\n return btoa(String.fromCharCode.apply(null, bytes as any as number[]));\n }\n}\n\n/**\n * Decodes a Uint8Array into an ASCII string.\n * @internal\n */\nexport function toAscii(bytes: Uint8Array): string {\n if (isNode) {\n return Buffer.from(bytes).toString(\"ascii\");\n } else {\n return new TextDecoder(\"ascii\").decode(bytes);\n }\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function stringToUint8Array(value: string): Uint8Array {\n if (isNode) {\n return Buffer.from(value);\n } else {\n return new TextEncoder().encode(value);\n }\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n if (isNode) {\n return Buffer.from(value, \"base64\");\n } else {\n return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));\n }\n}\n\n/**\n * Parses the PFX or ASCII PEM formatted value of the certificate containing both the X.509 certificates and the private key\n * into a Base64 encoded string.\n *\n * @internal\n * @param certificateBytes - The PFX or ASCII PEM formatted value of the certificate containing both the X.509 certificates and the private key\n * @param contentType - \"application/x-pem-file\", \"application/x-pkcs12\" or undefined\n */\nexport function parseCertificateBytes(\n certificateBytes: Uint8Array,\n contentType: CertificateContentType\n): string {\n if (contentType === \"application/x-pem-file\") {\n // PEM files have the certificate bytes already Base64 formatted.\n return toAscii(certificateBytes);\n } else {\n return toBase64(certificateBytes);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// The eslint plugin mentioned below doesn't follow through the extended types.\n/* eslint-disable @azure/azure-sdk/ts-apisurface-supportcancellation */\n\n// This file makes more sense if ordered based on how meaningful are some methods in relation to others.\n/* eslint-disable @typescript-eslint/member-ordering */\n\n/// <reference lib=\"esnext.asynciterable\" />\n\nimport {\n TokenCredential,\n isTokenCredential,\n signingPolicy,\n PipelineOptions,\n createPipelineFromOptions,\n InternalPipelineOptions,\n} from \"@azure/core-http\";\n\nimport { logger } from \"./log\";\nimport { PollerLike, PollOperationState } from \"@azure/core-lro\";\n\nimport {\n KeyVaultCertificate,\n KeyVaultCertificateWithPolicy,\n AdministratorContact,\n BackupCertificateOptions,\n BeginCreateCertificateOptions,\n BeginDeleteCertificateOptions,\n BeginRecoverDeletedCertificateOptions,\n CertificateIssuer,\n CertificateContact,\n CertificateContentType,\n CertificatePolicy,\n CertificateProperties,\n CreateCertificateOptions,\n DeleteCertificateOperationOptions,\n DeleteContactsOptions,\n DeleteIssuerOptions,\n DeletedCertificate,\n GetContactsOptions,\n GetIssuerOptions,\n GetCertificateOperationOptions,\n GetPlainCertificateOperationOptions,\n GetCertificateOptions,\n GetCertificatePolicyOptions,\n GetCertificateVersionOptions,\n GetDeletedCertificateOptions,\n CertificateTags,\n ImportCertificateOptions,\n ListPropertiesOfCertificatesOptions,\n ErrorModel,\n ListPropertiesOfCertificateVersionsOptions,\n ListPropertiesOfIssuersOptions,\n ListDeletedCertificatesOptions,\n MergeCertificateOptions,\n PurgeDeletedCertificateOptions,\n RestoreCertificateBackupOptions,\n SetContactsOptions,\n CreateIssuerOptions,\n CertificateOperation,\n CertificateOperationError,\n SubjectAlternativeNames,\n UpdateIssuerOptions,\n UpdateCertificatePropertiesOptions,\n UpdateCertificatePolicyOptions,\n WellKnownIssuerNames,\n CertificatePollerOptions,\n IssuerProperties,\n CertificateContactAll,\n CertificatePolicyAction,\n LifetimeAction,\n RequireAtLeastOne,\n ArrayOneOrMore,\n SubjectAlternativeNamesAll,\n CertificatePolicyProperties,\n PolicySubjectProperties,\n DefaultCertificatePolicy,\n CertificateClientOptions,\n LATEST_API_VERSION,\n CancelCertificateOperationOptions,\n ImportCertificatePolicy,\n KnownCertificateKeyCurveNames,\n KnownCertificateKeyTypes,\n KnownKeyUsageTypes,\n} from \"./certificatesModels\";\n\nimport {\n GetCertificatesOptionalParams,\n GetCertificateIssuersOptionalParams,\n GetCertificateVersionsOptionalParams,\n SetCertificateIssuerOptionalParams,\n BackupCertificateResult,\n GetDeletedCertificatesOptionalParams,\n IssuerParameters,\n IssuerCredentials,\n IssuerAttributes,\n X509CertificateProperties,\n SubjectAlternativeNames as CoreSubjectAlternativeNames,\n ActionType,\n DeletionRecoveryLevel,\n JsonWebKeyType as CertificateKeyType,\n JsonWebKeyCurveName as CertificateKeyCurveName,\n KnownDeletionRecoveryLevel as KnownDeletionRecoveryLevels,\n KeyUsageType,\n} from \"./generated/models\";\nimport { KeyVaultClient } from \"./generated/keyVaultClient\";\nimport { SDK_VERSION } from \"./constants\";\nimport \"@azure/core-paging\";\nimport { PageSettings, PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport { challengeBasedAuthenticationPolicy, createTraceFunction } from \"../../keyvault-common/src\";\nimport { CreateCertificatePoller } from \"./lro/create/poller\";\nimport { CertificateOperationPoller } from \"./lro/operation/poller\";\nimport { DeleteCertificatePoller } from \"./lro/delete/poller\";\nimport { RecoverDeletedCertificatePoller } from \"./lro/recover/poller\";\nimport { CertificateOperationState } from \"./lro/operation/operation\";\nimport { DeleteCertificateState } from \"./lro/delete/operation\";\nimport { CreateCertificateState } from \"./lro/create/operation\";\nimport { RecoverDeletedCertificateState } from \"./lro/recover/operation\";\nimport { parseCertificateBytes } from \"./utils\";\nimport { KeyVaultCertificateIdentifier, parseKeyVaultCertificateIdentifier } from \"./identifier\";\nimport {\n coreContactsToCertificateContacts,\n getCertificateFromCertificateBundle,\n getCertificateOperationFromCoreOperation,\n getCertificateWithPolicyFromCertificateBundle,\n getDeletedCertificateFromDeletedCertificateBundle,\n getDeletedCertificateFromItem,\n getPropertiesFromCertificateBundle,\n toCoreAttributes,\n toCorePolicy,\n toPublicIssuer,\n toPublicPolicy,\n} from \"./transformations\";\nimport { KeyVaultCertificatePollOperationState } from \"./lro/keyVaultCertificatePoller\";\n\nexport {\n CertificateClientOptions,\n ActionType,\n AdministratorContact,\n ArrayOneOrMore,\n BackupCertificateResult,\n BeginCreateCertificateOptions,\n BeginDeleteCertificateOptions,\n BeginRecoverDeletedCertificateOptions,\n KeyVaultCertificate,\n KeyVaultCertificateWithPolicy,\n BackupCertificateOptions,\n CertificateContentType,\n CertificateProperties,\n CertificateIssuer,\n CertificateOperation,\n CertificateOperationError,\n CertificatePolicy,\n ImportCertificatePolicy,\n CertificatePolicyAction,\n CertificatePolicyProperties,\n PolicySubjectProperties,\n CertificateTags,\n CreateCertificateOptions,\n CertificatePollerOptions,\n KeyVaultCertificateIdentifier,\n parseKeyVaultCertificateIdentifier,\n PollerLike,\n CreateCertificateState,\n DeleteCertificateState,\n RecoverDeletedCertificateState,\n CertificateOperationState,\n CoreSubjectAlternativeNames,\n RequireAtLeastOne,\n CertificateContactAll,\n CertificateContact,\n DeleteCertificateOperationOptions,\n DeleteContactsOptions,\n DeleteIssuerOptions,\n DeletedCertificate,\n DeletionRecoveryLevel,\n DefaultCertificatePolicy,\n ErrorModel,\n GetContactsOptions,\n GetIssuerOptions,\n GetCertificateOperationOptions,\n GetPlainCertificateOperationOptions,\n GetCertificateOptions,\n GetCertificatePolicyOptions,\n GetCertificateVersionOptions,\n GetDeletedCertificateOptions,\n ImportCertificateOptions,\n IssuerAttributes,\n IssuerCredentials,\n IssuerParameters,\n IssuerProperties,\n CertificateKeyType,\n CertificateKeyCurveName,\n KeyUsageType,\n LifetimeAction,\n ListPropertiesOfCertificatesOptions,\n ListPropertiesOfCertificateVersionsOptions,\n ListPropertiesOfIssuersOptions,\n ListDeletedCertificatesOptions,\n MergeCertificateOptions,\n PipelineOptions,\n PurgeDeletedCertificateOptions,\n RestoreCertificateBackupOptions,\n SetContactsOptions,\n SubjectAlternativeNamesAll,\n CreateIssuerOptions,\n SubjectAlternativeNames,\n UpdateIssuerOptions,\n UpdateCertificatePropertiesOptions as UpdateCertificateOptions,\n UpdateCertificatePolicyOptions,\n WellKnownIssuerNames as WellKnownIssuer,\n X509CertificateProperties,\n logger,\n CancelCertificateOperationOptions,\n KeyVaultCertificatePollOperationState,\n KnownCertificateKeyCurveNames,\n KnownDeletionRecoveryLevels,\n KnownCertificateKeyTypes,\n KnownKeyUsageTypes,\n};\n\n/**\n * Deprecated KeyVault copy of core-lro's PollerLike.\n */\n// eslint-disable-next-line no-use-before-define\nexport type KVPollerLike<TState extends PollOperationState<TResult>, TResult> = PollerLike<\n TState,\n TResult\n>;\n\nconst withTrace = createTraceFunction(\"Azure.KeyVault.Certificates.CertificateClient\");\n\n/**\n * The client to interact with the KeyVault certificates functionality\n */\nexport class CertificateClient {\n /**\n * The base URL to the vault\n */\n public readonly vaultUrl: string;\n\n private readonly client: KeyVaultClient;\n\n /**\n * Creates an instance of CertificateClient.\n * @param vaultUrl - the base URL to the vault.\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 vaultUrl: string,\n credential: TokenCredential,\n pipelineOptions: CertificateClientOptions = {}\n ) {\n this.vaultUrl = vaultUrl;\n\n const libInfo = `azsdk-js-keyvault-certificates/${SDK_VERSION}`;\n if (pipelineOptions.userAgentOptions) {\n pipelineOptions.userAgentOptions.userAgentPrefix =\n pipelineOptions.userAgentOptions.userAgentPrefix !== undefined\n ? `${pipelineOptions.userAgentOptions.userAgentPrefix} ${libInfo}`\n : libInfo;\n } else {\n pipelineOptions.userAgentOptions = {\n userAgentPrefix: libInfo,\n };\n }\n\n const authPolicy = isTokenCredential(credential)\n ? challengeBasedAuthenticationPolicy(credential)\n : signingPolicy(credential);\n\n const internalPipelineOptions: 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.client = new KeyVaultClient(\n pipelineOptions.serviceVersion || LATEST_API_VERSION,\n createPipelineFromOptions(internalPipelineOptions, authPolicy)\n );\n }\n\n private async *listPropertiesOfCertificatesPage(\n continuationState: PageSettings,\n options: ListPropertiesOfCertificatesOptions = {}\n ): AsyncIterableIterator<CertificateProperties[]> {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetCertificatesOptionalParams = {\n maxresults: continuationState.maxPageSize,\n includePending: options.includePending,\n ...options,\n };\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificates\",\n optionsComplete,\n (updatedOptions) => this.client.getCertificates(this.vaultUrl, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificates\",\n options,\n (updatedOptions) =>\n this.client.getCertificates(continuationState.continuationToken!, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n } else {\n break;\n }\n }\n }\n\n private async *listPropertiesOfCertificatesAll(\n options: ListPropertiesOfCertificatesOptions = {}\n ): AsyncIterableIterator<CertificateProperties> {\n const f = {};\n\n for await (const page of this.listPropertiesOfCertificatesPage(f, options)) {\n for (const certificate of page) {\n yield certificate;\n }\n }\n }\n\n /**\n * Iterates the latest version of all certificates in the vault. The full certificate identifier and attributes are provided\n * in the response. No values are returned for the certificates. This operations requires the certificates/list permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * // All in one call\n * for await (const certificateProperties of client.listPropertiesOfCertificates()) {\n * console.log(certificateProperties);\n * }\n * // By pages\n * for await (const page of client.listPropertiesOfCertificates().byPage()) {\n * for (const certificateProperties of page) {\n * console.log(certificateProperties);\n * }\n * }\n * ```\n * List all versions of the specified certificate.\n * @param options - The optional parameters\n */\n public listPropertiesOfCertificates(\n options: ListPropertiesOfCertificatesOptions = {}\n ): PagedAsyncIterableIterator<CertificateProperties> {\n const iter = this.listPropertiesOfCertificatesAll(options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfCertificatesPage(settings, options),\n };\n\n return result;\n }\n\n private async *listPropertiesOfCertificateVersionsPage(\n certificateName: string,\n continuationState: PageSettings,\n options: ListPropertiesOfCertificateVersionsOptions = {}\n ): AsyncIterableIterator<CertificateProperties[]> {\n if (continuationState.continuationToken == null) {\n const optionsComplete: GetCertificateVersionsOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificateVersions\",\n optionsComplete,\n (updatedOptions) =>\n this.client.getCertificateVersions(this.vaultUrl, certificateName, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listPropertiesOfCertificateVersions\",\n options,\n (updatedOptions) =>\n this.client.getCertificateVersions(\n continuationState.continuationToken!,\n certificateName,\n updatedOptions\n )\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getPropertiesFromCertificateBundle, this);\n } else {\n break;\n }\n }\n }\n\n private async *listPropertiesOfCertificateVersionsAll(\n certificateName: string,\n options: ListPropertiesOfCertificateVersionsOptions = {}\n ): AsyncIterableIterator<CertificateProperties> {\n const f = {};\n\n for await (const page of this.listPropertiesOfCertificateVersionsPage(\n certificateName,\n f,\n options\n )) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Returns the versions of a certificate in the specified key\n * vault. This operation requires the certificates/list permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * for await (const certificateProperties of client.listPropertiesOfCertificateVersions(\"MyCertificate\")) {\n * console.log(certificateProperties.version!);\n * }\n * ```\n * List the versions of a certificate.\n * @param certificateName - The name of the certificate.\n * @param options - The optional parameters\n */\n public listPropertiesOfCertificateVersions(\n certificateName: string,\n options: ListPropertiesOfCertificateVersionsOptions = {}\n ): PagedAsyncIterableIterator<CertificateProperties> {\n const iter = this.listPropertiesOfCertificateVersionsAll(certificateName, options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) =>\n this.listPropertiesOfCertificateVersionsPage(certificateName, settings, options),\n };\n\n return result;\n }\n\n /**\n * The DELETE operation applies to any certificate stored in Azure Key Vault. DELETE cannot be applied\n * to an individual version of a certificate.\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * This operation requires the certificates/delete permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const createPoller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await createPoller.pollUntilDone();\n *\n * const deletePoller = await client.beginDeleteCertificate(\"MyCertificate\");\n *\n * // Serializing the poller\n * const serialized = deletePoller.toString();\n *\n * // A new poller can be created with:\n * // const newPoller = await client.beginDeleteCertificate(\"MyCertificate\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const deletedCertificate = await deletePoller.pollUntilDone();\n * console.log(deletedCertificate);\n * ```\n * Deletes a certificate from a specified key vault.\n * @param certificateName - The name of the certificate.\n * @param options - The optional parameters\n */\n public async beginDeleteCertificate(\n certificateName: string,\n options: BeginDeleteCertificateOptions = {}\n ): Promise<PollerLike<DeleteCertificateState, DeletedCertificate>> {\n const poller = new DeleteCertificatePoller({\n certificateName,\n client: this.client,\n vaultUrl: this.vaultUrl,\n ...options,\n operationOptions: options,\n });\n // This will initialize the poller's operation (the deletion of the secret).\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes all of the certificate contacts. This operation requires the certificates/managecontacts permission.\n *\n * Example usage:\n * ```ts\n * let client = new CertificateClient(url, credentials);\n * await client.setContacts([{\n * email: \"b@b.com\",\n * name: \"b\",\n * phone: \"222222222222\"\n * }]);\n * await client.deleteContacts();\n * ```\n * Deletes all of the certificate contacts\n * @param options - The optional parameters\n */\n public deleteContacts(\n options: DeleteContactsOptions = {}\n ): Promise<CertificateContact[] | undefined> {\n return withTrace(\"deleteContacts\", options, async (updatedOptions) => {\n const result = await this.client.deleteCertificateContacts(this.vaultUrl, updatedOptions);\n return coreContactsToCertificateContacts(result._response.parsedBody);\n });\n }\n\n /**\n * Sets the certificate contacts for the key vault. This operation requires the certificates/managecontacts permission.\n *\n * Example usage:\n * ```ts\n * let client = new CertificateClient(url, credentials);\n * await client.setContacts([{\n * email: \"b@b.com\",\n * name: \"b\",\n * phone: \"222222222222\"\n * }]);\n * ```\n * Sets the certificate contacts.\n * @param contacts - The contacts to use\n * @param options - The optional parameters\n */\n public setContacts(\n contacts: CertificateContact[],\n options: SetContactsOptions = {}\n ): Promise<CertificateContact[] | undefined> {\n const coreContacts = contacts.map((x) => ({\n emailAddress: x ? x.email : undefined,\n name: x ? x.name : undefined,\n phone: x ? x.phone : undefined,\n }));\n\n return withTrace(\"setContacts\", options, async (updatedOptions) => {\n const result = await this.client.setCertificateContacts(\n this.vaultUrl,\n { contactList: coreContacts },\n updatedOptions\n );\n return coreContactsToCertificateContacts(result._response.parsedBody);\n });\n }\n\n /**\n * Returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission.\n *\n * Example usage:\n * ```ts\n * let client = new CertificateClient(url, credentials);\n * await client.setContacts([{\n * email: \"b@b.com\",\n * name: \"b\",\n * phone: \"222222222222\"\n * }]);\n * const contacts = await client.getContacts();\n * console.log(contacts);\n * ```\n * Sets the certificate contacts.\n * @param options - The optional parameters\n */\n public getContacts(options: GetContactsOptions = {}): Promise<CertificateContact[] | undefined> {\n return withTrace(\"getContacts\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateContacts(this.vaultUrl, updatedOptions);\n return coreContactsToCertificateContacts(result);\n });\n }\n\n private async *listPropertiesOfIssuersPage(\n continuationState: PageSettings,\n options: ListPropertiesOfIssuersOptions = {}\n ): AsyncIterableIterator<IssuerProperties[]> {\n if (continuationState.continuationToken == null) {\n const requestOptionsComplete: GetCertificateIssuersOptionalParams = {\n maxresults: continuationState.maxPageSize,\n ...options,\n };\n const currentSetResponse = await withTrace(\n \"listPropertiesOfIssuers\",\n requestOptionsComplete,\n (updatedOptions) => this.client.getCertificateIssuers(this.vaultUrl, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value;\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listPropertiesOfIssuers\",\n options,\n (updatedOptions) =>\n this.client.getCertificateIssuers(continuationState.continuationToken!, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value;\n } else {\n break;\n }\n }\n }\n\n private async *listPropertiesOfIssuersAll(\n options: ListPropertiesOfIssuersOptions = {}\n ): AsyncIterableIterator<IssuerProperties> {\n const f = {};\n\n for await (const page of this.listPropertiesOfIssuersPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * // All in one call\n * for await (const issuerProperties of client.listPropertiesOfIssuers()) {\n * console.log(issuerProperties);\n * }\n * // By pages\n * for await (const page of client.listPropertiesOfIssuers().byPage()) {\n * for (const issuerProperties of page) {\n * console.log(issuerProperties);\n * }\n * }\n * ```\n * List the certificate issuers.\n * @param options - The optional parameters\n */\n public listPropertiesOfIssuers(\n options: ListPropertiesOfIssuersOptions = {}\n ): PagedAsyncIterableIterator<IssuerProperties> {\n const iter = this.listPropertiesOfIssuersAll(options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listPropertiesOfIssuersPage(settings, options),\n };\n\n return result;\n }\n\n /**\n * The createIssuer operation adds or updates the specified certificate issuer. This\n * operation requires the certificates/setissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * ```\n * Sets the specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param provider - The issuer provider.\n * @param options - The optional parameters\n */\n public createIssuer(\n issuerName: string,\n provider: string,\n options: CreateIssuerOptions = {}\n ): Promise<CertificateIssuer> {\n return withTrace(\"createIssuer\", options, async (updatedOptions) => {\n const { accountId, password } = updatedOptions;\n\n const generatedOptions: SetCertificateIssuerOptionalParams = {\n ...updatedOptions,\n credentials: {\n accountId,\n password,\n },\n };\n\n if (\n updatedOptions.organizationId ||\n (updatedOptions.administratorContacts && updatedOptions.administratorContacts.length)\n ) {\n generatedOptions.organizationDetails = {\n id: updatedOptions.organizationId,\n adminDetails: updatedOptions.administratorContacts\n ? updatedOptions.administratorContacts.map((x) => ({\n emailAddress: x.email,\n phone: x.phone,\n firstName: x.firstName,\n lastName: x.lastName,\n }))\n : undefined,\n };\n }\n\n if (updatedOptions.enabled !== undefined) {\n generatedOptions.attributes = {\n enabled: updatedOptions.enabled,\n };\n }\n\n const result = await this.client.setCertificateIssuer(\n this.vaultUrl,\n issuerName,\n provider,\n generatedOptions\n );\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * The updateIssuer operation performs an update on the specified certificate issuer\n * entity. This operation requires the certificates/setissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * await client.updateIssuer(\"IssuerName\", {\n * provider: \"Provider2\"\n * });\n * ```\n * Updates the specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param options - The optional parameters\n */\n public async updateIssuer(\n issuerName: string,\n options: UpdateIssuerOptions = {}\n ): Promise<CertificateIssuer> {\n return withTrace(\"updateIssuer\", options, async (updatedOptions) => {\n const { accountId, password } = options;\n\n const generatedOptions: SetCertificateIssuerOptionalParams = {\n ...updatedOptions,\n credentials: {\n accountId,\n password,\n },\n };\n\n if (\n updatedOptions.organizationId ||\n (updatedOptions.administratorContacts && updatedOptions.administratorContacts.length)\n ) {\n generatedOptions.organizationDetails = {\n id: updatedOptions.organizationId,\n adminDetails: updatedOptions.administratorContacts\n ? updatedOptions.administratorContacts.map((x) => ({\n emailAddress: x.email,\n phone: x.phone,\n firstName: x.firstName,\n lastName: x.lastName,\n }))\n : undefined,\n };\n }\n\n if (updatedOptions.enabled) {\n generatedOptions.attributes = {\n enabled: updatedOptions.enabled,\n };\n }\n\n const result = await this.client.updateCertificateIssuer(\n this.vaultUrl,\n issuerName,\n generatedOptions\n );\n\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * The getIssuer operation returns the specified certificate issuer resources in the\n * specified key vault. This operation requires the certificates/manageissuers/getissuers\n * permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Test\");\n * const certificateIssuer = await client.getIssuer(\"IssuerName\");\n * console.log(certificateIssuer);\n * ```\n * Gets he specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param options - The optional parameters\n */\n public getIssuer(issuerName: string, options: GetIssuerOptions = {}): Promise<CertificateIssuer> {\n return withTrace(\"getIssuer\", options, async (updatedOptions) => {\n const result = await this.client.getCertificateIssuer(\n this.vaultUrl,\n issuerName,\n updatedOptions\n );\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * The deleteIssuer operation permanently removes the specified certificate issuer from\n * the vault. This operation requires the certificates/manageissuers/deleteissuers permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.createIssuer(\"IssuerName\", \"Provider\");\n * await client.deleteIssuer(\"IssuerName\");\n * ```\n * Deletes the specified certificate issuer.\n * @param issuerName - The name of the issuer.\n * @param options - The optional parameters\n */\n public deleteIssuer(\n issuerName: string,\n options: DeleteIssuerOptions = {}\n ): Promise<CertificateIssuer> {\n return withTrace(\"deleteIssuer\", options, async (updatedOptions) => {\n const result = await this.client.deleteCertificateIssuer(\n this.vaultUrl,\n issuerName,\n updatedOptions\n );\n return toPublicIssuer(result._response.parsedBody);\n });\n }\n\n /**\n * Creates a new certificate. If this is the first version, the certificate resource is created.\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * **Note:** Sending `Self` as the `issuerName` of the certificate's policy will create a self-signed certificate.\n *\n * This operation requires the certificates/create permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const certificatePolicy = {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * };\n * const createPoller = await client.beginCreateCertificate(\"MyCertificate\", certificatePolicy);\n *\n * // The pending certificate can be obtained by calling the following method:\n * const pendingCertificate = createPoller.getResult();\n *\n * // Serializing the poller\n * const serialized = createPoller.toString();\n *\n * // A new poller can be created with:\n * // const newPoller = await client.beginCreateCertificate(\"MyCertificate\", certificatePolicy, { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const certificate = await createPoller.pollUntilDone();\n * console.log(certificate);\n * ```\n * Creates a certificate\n * @param certificateName - The name of the certificate\n * @param certificatePolicy - The certificate's policy\n * @param options - Optional parameters\n */\n public async beginCreateCertificate(\n certificateName: string,\n policy: CertificatePolicy,\n options: BeginCreateCertificateOptions = {}\n ): Promise<PollerLike<CreateCertificateState, KeyVaultCertificateWithPolicy>> {\n const poller = new CreateCertificatePoller({\n vaultUrl: this.vaultUrl,\n client: this.client,\n certificateName,\n certificatePolicy: policy,\n createCertificateOptions: options,\n operationOptions: options,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n });\n // This will initialize the poller's operation (the creation of the secret).\n await poller.poll();\n return poller;\n }\n\n /**\n * Gets the latest information available from a specific certificate, including the certificate's policy. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const poller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await poller.pollUntilDone();\n * const certificate = await client.getCertificate(\"MyCertificate\");\n * console.log(certificate);\n * ```\n * Retrieves a certificate from the certificate's name (includes the certificate policy)\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public getCertificate(\n certificateName: string,\n options: GetCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"getCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n \"\",\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * Gets information about a specific certificate on a specific version. It won't return the certificate's policy. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const poller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await poller.pollUntilDone();\n * const certificateWithPolicy = await client.getCertificate(\"MyCertificate\");\n * const certificate = await client.getCertificateVersion(\"MyCertificate\", certificateWithPolicy.properties.version!);\n * console.log(certificate);\n * ```\n * Retrieves a certificate from the certificate's name and a specified version\n * @param certificateName - The name of the certificate\n * @param version - The specific version of the certificate\n * @param options - The optional parameters\n */\n public getCertificateVersion(\n certificateName: string,\n version: string,\n options: GetCertificateVersionOptions = {}\n ): Promise<KeyVaultCertificate> {\n return withTrace(\"getCertificateVersion\", options, async (updatedOptions) => {\n if (!version) {\n throw new Error(\"The 'version' cannot be empty.\");\n }\n const result = await this.client.getCertificate(\n this.vaultUrl,\n certificateName,\n version,\n updatedOptions\n );\n return getCertificateFromCertificateBundle(result);\n });\n }\n\n /**\n * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format.\n * If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * // See: @azure/keyvault-secrets\n * const certificateSecret = await secretClient.getSecret(\"MyCertificate\");\n * const base64EncodedCertificate = certificateSecret.value!;\n * let buffer: Uint8Array;\n *\n * if (isNode) {\n * buffer = Buffer.from(base64EncodedCertificate, \"base64\");\n * } else {\n * buffer = Uint8Array.from(atob(base64EncodedCertificate), (c) => c.charCodeAt(0));\n * }\n *\n * await client.importCertificate(\"MyCertificate\", buffer);\n * ```\n * Imports a certificate from a certificate's secret value\n * @param certificateName - The name of the certificate\n * @param certificateBytes - The PFX or ASCII PEM formatted value of the certificate containing both the X.509 certificates and the private key\n * @param options - The optional parameters\n */\n public importCertificate(\n certificateName: string,\n certificateBytes: Uint8Array,\n options: ImportCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"importCertificate\", options, async (updatedOptions) => {\n const base64EncodedCertificate = parseCertificateBytes(\n certificateBytes,\n updatedOptions.policy?.contentType\n );\n const result = await this.client.importCertificate(\n this.vaultUrl,\n certificateName,\n base64EncodedCertificate,\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result);\n });\n }\n\n /**\n * The getCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * const policy = await client.getCertificatePolicy(\"MyCertificate\");\n * console.log(policy);\n * ```\n * Gets a certificate's policy\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public getCertificatePolicy(\n certificateName: string,\n options: GetCertificatePolicyOptions = {}\n ): Promise<CertificatePolicy> {\n return withTrace(\"getCertificatePolicy\", options, async (updatedOptions) => {\n const result = await this.client.getCertificatePolicy(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return toPublicPolicy(result._response.parsedBody);\n });\n }\n\n /**\n * Updates the certificate policy for the specified certificate. This operation requires the certificates/update permission.\n * Gets a certificate's policy\n * @param certificateName - The name of the certificate\n * @param policy - The certificate policy\n * @param options - The optional parameters\n */\n public updateCertificatePolicy(\n certificateName: string,\n policy: CertificatePolicy,\n options: UpdateCertificatePolicyOptions = {}\n ): Promise<CertificatePolicy> {\n return withTrace(\"updateCertificatePolicy\", options, async (updatedOptions) => {\n const corePolicy = toCorePolicy(undefined, policy);\n const result = await this.client.updateCertificatePolicy(\n this.vaultUrl,\n certificateName,\n corePolicy,\n updatedOptions\n );\n return toPublicPolicy(result._response.parsedBody);\n });\n }\n\n /**\n * Applies the specified update on the given certificate; the only elements updated are the\n * certificate's attributes. This operation requires the certificates/update permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n *\n * // You may pass an empty string for version which will update\n * // the latest version of the certificate\n * await client.updateCertificateProperties(\"MyCertificate\", \"\", {\n * tags: {\n * customTag: \"value\"\n * }\n * });\n * ```\n * Updates a certificate\n * @param certificateName - The name of the certificate\n * @param version - The version of the certificate to update (an empty string will update the latest version)\n * @param options - The options, including what to update\n */\n public updateCertificateProperties(\n certificateName: string,\n version: string,\n options: UpdateCertificatePropertiesOptions = {}\n ): Promise<KeyVaultCertificate> {\n return withTrace(\"updateCertificateProperties\", options, async (updatedOptions) => {\n const result = await this.client.updateCertificate(this.vaultUrl, certificateName, version, {\n ...updatedOptions,\n certificateAttributes: toCoreAttributes(options),\n });\n return getCertificateFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission.\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const createPoller = await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n *\n * const poller = await client.getCertificateOperation(\"MyCertificate\");\n * const pendingCertificate = poller.getResult();\n *\n * const certificateOperation = poller.getOperationState().certificateOperation;\n * console.log(certificateOperation);\n * ```\n * Gets a certificate's poller operation\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public async getCertificateOperation(\n certificateName: string,\n options: GetCertificateOperationOptions = {}\n ): Promise<PollerLike<CertificateOperationState, KeyVaultCertificateWithPolicy>> {\n const poller = new CertificateOperationPoller({\n certificateName,\n client: this.client,\n vaultUrl: this.vaultUrl,\n intervalInMs: options.intervalInMs,\n resumeFrom: options.resumeFrom,\n operationOptions: options,\n });\n // This will initialize the poller's operation, which pre-populates some necessary properties.\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes the creation operation for a specified certificate that is in the process of being created.\n * The certificate is no longer created. This operation requires the certificates/update permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * await client.deleteCertificateOperation(\"MyCertificate\");\n * await client.getCertificateOperation(\"MyCertificate\"); // Throws error: Pending certificate not found: \"MyCertificate\"\n * ```\n * Delete a certificate's operation\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public deleteCertificateOperation(\n certificateName: string,\n options: DeleteCertificateOperationOptions = {}\n ): Promise<CertificateOperation> {\n return withTrace(\"deleteCertificateOperation\", options, async (updatedOptions) => {\n const result = await this.client.deleteCertificateOperation(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getCertificateOperationFromCoreOperation(\n certificateName,\n this.vaultUrl,\n result._response.parsedBody\n );\n });\n }\n\n /**\n * Performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Unknown\",\n * subject: \"cn=MyCert\"\n * });\n * const poller = await client.getCertificateOperation(\"MyCertificate\");\n * const { csr } = poller.getOperationState().certificateOperation!;\n * const base64Csr = Buffer.from(csr!).toString(\"base64\");\n * const wrappedCsr = [\"-----BEGIN CERTIFICATE REQUEST-----\", base64Csr, \"-----END CERTIFICATE REQUEST-----\"].join(\"\\n\");\n *\n * const fs = require(\"fs\");\n * fs.writeFileSync(\"test.csr\", wrappedCsr);\n *\n * // Certificate available locally made using:\n * // openssl genrsa -out ca.key 2048\n * // openssl req -new -x509 -key ca.key -out ca.crt\n * // You can read more about how to create a fake certificate authority here: https://gist.github.com/Soarez/9688998\n *\n * const childProcess = require(\"child_process\");\n * childProcess.execSync(\"openssl x509 -req -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out test.crt\");\n * const base64Crt = fs.readFileSync(\"test.crt\").toString().split(\"\\n\").slice(1, -1).join(\"\");\n *\n * await client.mergeCertificate(\"MyCertificate\", [Buffer.from(base64Crt)]);\n * ```\n * Merges a signed certificate request into a pending certificate\n * @param certificateName - The name of the certificate\n * @param x509Certificates - The certificate(s) to merge\n * @param options - The optional parameters\n */\n public mergeCertificate(\n certificateName: string,\n x509Certificates: Uint8Array[],\n options: MergeCertificateOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"mergeCertificate\", options, async (updatedOptions) => {\n const result = await this.client.mergeCertificate(\n this.vaultUrl,\n certificateName,\n x509Certificates,\n updatedOptions\n );\n return getCertificateWithPolicyFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded.\n * This operation requires the certificates/backup permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * const backup = await client.backupCertificate(\"MyCertificate\");\n * ```\n * Generates a backup of a certificate\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public backupCertificate(\n certificateName: string,\n options: BackupCertificateOptions = {}\n ): Promise<Uint8Array | undefined> {\n return withTrace(\"backupCertificate\", options, async (updatedOptions) => {\n const result = await this.client.backupCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return result._response.parsedBody.value;\n });\n }\n\n /**\n * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * await client.beginCreateCertificate(\"MyCertificate\", {\n * issuerName: \"Self\",\n * subject: \"cn=MyCert\"\n * });\n * const backup = await client.backupCertificate(\"MyCertificate\");\n * const poller = await client.beginDeleteCertificate(\"MyCertificate\");\n * await poller.pollUntilDone();\n * // Some time is required before we're able to restore the certificate\n * await client.restoreCertificateBackup(backup!);\n * ```\n * Restores a certificate from a backup\n * @param backup - The back-up certificate to restore from\n * @param options - The optional parameters\n */\n public restoreCertificateBackup(\n backup: Uint8Array,\n options: RestoreCertificateBackupOptions = {}\n ): Promise<KeyVaultCertificateWithPolicy> {\n return withTrace(\"restoreCertificateBackup\", options, async (updatedOptions) => {\n const result = await this.client.restoreCertificate(this.vaultUrl, backup, updatedOptions);\n return getCertificateWithPolicyFromCertificateBundle(result._response.parsedBody);\n });\n }\n\n private async *listDeletedCertificatesPage(\n continuationState: PageSettings,\n options: ListDeletedCertificatesOptions = {}\n ): AsyncIterableIterator<DeletedCertificate[]> {\n if (continuationState.continuationToken == null) {\n const requestOptionsComplete: GetDeletedCertificatesOptionalParams = {\n maxresults: continuationState.maxPageSize,\n includePending: options.includePending,\n ...options,\n };\n const currentSetResponse = await withTrace(\n \"listDeletedCertificates\",\n requestOptionsComplete,\n (updatedOptions) => this.client.getDeletedCertificates(this.vaultUrl, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedCertificateFromItem, this);\n }\n }\n while (continuationState.continuationToken) {\n const currentSetResponse = await withTrace(\n \"listDeletedCertificates\",\n options,\n (updatedOptions) =>\n this.client.getDeletedCertificates(continuationState.continuationToken!, updatedOptions)\n );\n continuationState.continuationToken = currentSetResponse.nextLink;\n if (currentSetResponse.value) {\n yield currentSetResponse.value.map(getDeletedCertificateFromItem, this);\n } else {\n break;\n }\n }\n }\n\n private async *listDeletedCertificatesAll(\n options: ListDeletedCertificatesOptions = {}\n ): AsyncIterableIterator<DeletedCertificate> {\n const f = {};\n\n for await (const page of this.listDeletedCertificatesPage(f, options)) {\n for (const item of page) {\n yield item;\n }\n }\n }\n\n /**\n * Retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific\n * information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * for await (const deletedCertificate of client.listDeletedCertificates()) {\n * console.log(deletedCertificate);\n * }\n * for await (const page of client.listDeletedCertificates().byPage()) {\n * for (const deletedCertificate of page) {\n * console.log(deletedCertificate);\n * }\n * }\n * ```\n * Lists deleted certificates\n * @param options - The optional parameters\n */\n public listDeletedCertificates(\n options: ListDeletedCertificatesOptions = {}\n ): PagedAsyncIterableIterator<DeletedCertificate> {\n const iter = this.listDeletedCertificatesAll(options);\n\n const result = {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings: PageSettings = {}) => this.listDeletedCertificatesPage(settings, options),\n };\n\n return result;\n }\n\n /**\n * retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the\n * current deletion recovery level. This operation requires the certificates/get permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const deletedCertificate = await client.getDeletedCertificate(\"MyDeletedCertificate\");\n * console.log(\"Deleted certificate:\", deletedCertificate);\n * ```\n * Gets a deleted certificate\n * @param certificateName - The name of the certificate\n * @param options - The optional parameters\n */\n public getDeletedCertificate(\n certificateName: string,\n options: GetDeletedCertificateOptions = {}\n ): Promise<DeletedCertificate> {\n return withTrace(\"getDeletedCertificate\", options, async (updatedOptions) => {\n const result = await this.client.getDeletedCertificate(\n this.vaultUrl,\n certificateName,\n updatedOptions\n );\n return getDeletedCertificateFromDeletedCertificateBundle(result._response.parsedBody);\n });\n }\n\n /**\n * Performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the\n * recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n * const deletePoller = await client.beginDeleteCertificate(\"MyCertificate\");\n * await deletePoller.pollUntilDone();\n * // Deleting a certificate takes time, make sure to wait before purging it\n * client.purgeDeletedCertificate(\"MyCertificate\");\n * ```\n * Gets a deleted certificate\n * @param certificateName - The name of the deleted certificate to purge\n * @param options - The optional parameters\n */\n public async purgeDeletedCertificate(\n certificateName: string,\n options: PurgeDeletedCertificateOptions = {}\n ): Promise<null> {\n return withTrace(\"purgeDeletedCertificate\", options, async (updatedOptions) => {\n await this.client.purgeDeletedCertificate(this.vaultUrl, certificateName, updatedOptions);\n return null;\n });\n }\n\n /**\n * Recovers the deleted certificate in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation\n * This function returns a Long Running Operation poller that allows you to wait indefinitely until the certificate is fully recovered.\n *\n * This operation requires the certificates/recover permission.\n *\n * Example usage:\n * ```ts\n * const client = new CertificateClient(url, credentials);\n *\n * const deletePoller = await client.beginDeleteCertificate(\"MyCertificate\");\n * await deletePoller.pollUntilDone();\n *\n * const recoverPoller = await client.beginRecoverDeletedCertificate(\"MyCertificate\");\n *\n * // Serializing the poller\n * const serialized = deletePoller.toString();\n *\n * // A new poller can be created with:\n * // const newPoller = await client.beginRecoverDeletedCertificate(\"MyCertificate\", { resumeFrom: serialized });\n *\n * // Waiting until it's done\n * const certificate = await recoverPoller.pollUntilDone();\n * console.log(certificate);\n * ```\n * Recovers a deleted certificate\n * @param certificateName - The name of the deleted certificate\n * @param options - The optional parameters\n */\n public async beginRecoverDeletedCertificate(\n certificateName: string,\n options: BeginRecoverDeletedCertificateOptions = {}\n ): Promise<PollerLike<RecoverDeletedCertificateState, KeyVaultCertificateWithPolicy>> {\n const poller = new RecoverDeletedCertificatePoller({\n certificateName,\n client: this.client,\n vaultUrl: this.vaultUrl,\n ...options,\n operationOptions: options,\n });\n // This will initialize the poller's operation (the recovery of the deleted secret).\n await poller.poll();\n return poller;\n }\n}\n"],"names":["createClientLogger","WellKnownIssuerNames","KnownCertificateKeyCurveNames","KnownCertificateKeyTypes","KnownKeyUsageTypes","KnownDeletionRecoveryLevel","ContactsMapper","CertificatePolicyMapper","coreHttp","Mappers.CertificateListResult","Mappers.KeyVaultError","Parameters.maxresults","Parameters.includePending","Parameters.apiVersion","Parameters.vaultBaseUrl","Parameters.accept","Mappers.DeletedCertificateBundle","Parameters.certificateName","Mappers.Contacts","Parameters.contacts","Parameters.contentType","Mappers.CertificateIssuerListResult","Mappers.IssuerBundle","Mappers.CertificateIssuerSetParameters","Parameters.issuerName","Mappers.CertificateIssuerUpdateParameters","Mappers.CertificateOperation","Mappers.CertificateCreateParameters","Parameters.certificateName1","Mappers.CertificateBundle","Mappers.CertificateImportParameters","Mappers.CertificatePolicy","Parameters.certificatePolicy2","Mappers.CertificateUpdateParameters","Parameters.certificateVersion","Mappers.CertificateOperationUpdateParameter","Mappers.CertificateMergeParameters","Mappers.BackupCertificateResult","Mappers.CertificateRestoreParameters","Mappers.DeletedCertificateListResult","Parameters.nextLink","ExpiringAccessTokenCache","BaseRequestPolicy","Constants","url","createSpanFunction","SpanStatusCode","Poller","delay","withTrace","isNode","isTokenCredential","signingPolicy","createPipelineFromOptions","__await","__asyncValues"],"mappings":"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"}
|