diff --git a/sdk/keyvault/azkeys/README.md b/sdk/keyvault/azkeys/README.md index 901e5dd1347c..ffb50e722195 100644 --- a/sdk/keyvault/azkeys/README.md +++ b/sdk/keyvault/azkeys/README.md @@ -111,8 +111,8 @@ Constructing the client also requires your vault's URL, which you can get from t ```go import ( - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" ) func main() { @@ -121,10 +121,7 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) } ``` @@ -148,15 +145,15 @@ This section contains code snippets covering common tasks: ### Create a key -[`CreateRSAKey`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.CreateRSAKey) and -[`CreateECKey`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.CreateECKey) create RSA and elliptic curve keys in the vault, respectively. If a key with the same name already exists, a new version of that key is created. +[`CreateKey`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.CreateKey) creates keys in the vault. If a key with the same name already exists, a new version of that key is created. ```go import ( + "context" "fmt" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" ) func main() { @@ -165,26 +162,29 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) // Create RSA Key - resp, err := client.CreateRSAKey(context.TODO(), "new-rsa-key", &azkeys.CreateRSAKeyOptions{Size: to.Ptr(int32(2048))}) + rsaParams := azkeys.CreateKeyParameters{ + KeySize: to.Ptr(int32(2048)), + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA), + } + resp, err := client.CreateKey(context.TODO(), "new-rsa-key", rsaParams, nil) if err != nil { // TODO: handle error } - fmt.Println(*resp.Key.JSONWebKey.ID) - fmt.Println(*resp.Key.JSONWebKey.KeyType) + fmt.Println(*resp.Key.KID) // Create EC Key - resp, err := client.CreateECKey(context.TODO(), "new-ec-key", &azkeys.CreateECKeyOptions{CurveName: to.Ptr(azkeys.CurveNameP256)}) + ecParams := azkeys.CreateKeyParameters{ + Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256K), + Kty: to.Ptr(azkeys.JSONWebKeyTypeEC), + } + resp, err = client.CreateKey(context.TODO(), "new-ec-key", ecParams, nil) if err != nil { // TODO: handle error } - fmt.Println(*resp.Key.JSONWebKey.ID) - fmt.Println(*resp.Key.JSONWebKey.KeyType) + fmt.Println(*resp.Key.KID) } ``` @@ -194,6 +194,7 @@ func main() { ```go import ( + "context" "fmt" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" @@ -206,22 +207,21 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) - resp, err := client.GetKey(context.TODO(), "key-name", nil) + // passing an empty string for the version parameter gets the latest version of the key + version := "" + resp, err := client.GetKey(context.TODO(), "key-name", version, nil) if err != nil { // TODO: handle error } - fmt.Println(*resp.Key.JSONWebKey.ID) + fmt.Println(*resp.Key.KID) } ``` ### Update an existing key -[`UpdateKeyProperties`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.UpdateKeyProperties) +[`UpdateKey`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.UpdateKey) updates the properties of a key previously stored in the Key Vault. ```go @@ -240,38 +240,33 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) - resp, err := client.GetKey(context.TODO(), "key-to-update", nil) - if err != nil { - // TODO: handle error + params := azkeys.UpdateKeyParameters{ + KeyAttributes: &azkeys.KeyAttributes{ + Expires: to.Ptr(time.Now().Add(48 * time.Hour)), + }, + // Key Vault doesn't interpret tags. The keys and values are up to your application. + Tags: map[string]*string{"expiraton-extended": to.Ptr("true")}, } - - resp.Key.Properties.Tags = map[string]*string{"Tag1": to.Ptr("val1")} - resp.Key.Properties.Enabled = to.Ptr(true) - - updateResp, err := client.UpdateKeyProperties(context.TODO(), resp.Key, nil) + // passing an empty string for the version parameter updates the latest version of the key + updateResp, err := client.UpdateKey(context.TODO(), "key-name", "", params, nil) if err != nil { // TODO: handle error } - fmt.Printf("Enabled: %v\tTag1: %s\n", *updateResp.Key.Properties.Enabled, *updateResp.Key.Properties.Tags["Tag1"]) + fmt.Printf("Updated key %s", *updateResp.Key.KID) } ``` ### Delete a key -[`BeginDeleteKey`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.BeginDeleteKey) requests Key Vault delete a key, returning a poller which allows you to wait for the deletion to finish. Waiting is helpful when you want to purge (permanently delete) the key as soon as possible. +[`DeleteKey`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.DeleteKey) requests that Key Vault delete a key. It returns when Key Vault has begun deleting the key. Deletion can take several seconds to complete, so it may be necessary to wait before performing other operations on the deleted key. ```go import ( "context" "fmt" - "time" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" ) @@ -282,27 +277,25 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) - resp, err := client.BeginDeleteKey(context.TODO(), "key-to-delete", nil) - if err != nil { - // TODO: handle error - } - pollResp, err := resp.PollUntilDone(context.TODO(), &runtime.PollUntilDoneOptions{Frequency: time.Second}) + // DeleteKey returns when Key Vault has begun deleting the key. That can take several + // seconds to complete, so it may be necessary to wait before performing other operations + // on the deleted key. + resp, err := client.DeleteKey(context.TODO(), "key-name", nil) if err != nil { // TODO: handle error } - fmt.Printf("Successfully deleted key %s", *pollResp.Key.ID) + + // In a soft-delete enabled vault, deleted keys can be recovered until they're purged (permanently deleted). + fmt.Printf("Key will be purged at %v", resp.ScheduledPurgeDate) } ``` ### Configure automatic key rotation -`UpdateKeyRotationPolicy` allows you to configure automatic key rotation for a key by specifying a rotation policy. -In addition, `RotateKey` allows you to rotate a key on-demand by creating a new version of the given key. +`UpdateKeyRotationPolicy` allows you to configure automatic key rotation for a key by specifying a rotation policy, and +`RotateKey` allows you to rotate a key on demand. See [Azure Key Vault documentation](https://docs.microsoft.com/azure/key-vault/keys/how-to-configure-key-rotation) for more information about key rotation policies. ```go import ( @@ -320,44 +313,32 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } - - getResp, err := client.GetKeyRotationPolicy(context.TODO(), "key-name", nil) - if err != nil { - // TODO: handle error - } - - getResp.Attributes.ExpiresIn = to.Ptr("P90D") - getResp.LifetimeActions = []*azkeys.LifetimeActions{ - { - Action: &azkeys.LifetimeActionsType{ - Type: to.Ptr(azkeys.RotationActionNotify), - }, - Trigger: &azkeys.LifetimeActionsTrigger{ - TimeBeforeExpiry: to.Ptr("P30D"), + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) + + // this policy rotates the key every 18 months + policy := azkeys.KeyRotationPolicy{ + LifetimeActions: []*azkeys.LifetimeActions{ + { + Action: &azkeys.LifetimeActionsType{ + Type: to.Ptr(azkeys.ActionTypeRotate), + }, + Trigger: &azkeys.LifetimeActionsTrigger{ + TimeAfterCreate: to.Ptr("P18M"), + }, }, }, } - - resp, err := client.UpdateKeyRotationPolicy(context.TODO(), "key-name", getResp.RotationPolicy, nil) - if err != nil { - // TODO: handle error - } - fmt.Println("Updated key rotation policy for: ", *resp.ID) - - _, err = client.RotateKey(context.TODO(), "key-name", nil) + resp, err := client.UpdateKeyRotationPolicy(context.TODO(), "key-name", policy, nil) if err != nil { // TODO: handle error } + fmt.Printf("Updated key rotation policy at: %v", resp.Attributes.Updated) } ``` ### List keys -[`NewListPropertiesOfKeysPager`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.NewListPropertiesOfKeysPager) creates a pager that lists the properties of all of the keys in the client's vault. +[`NewListKeysPager`](https://aka.ms/azsdk/go/keyvault-keys/docs#Client.NewListKeysPager) creates a pager that lists all keys in the client's vault. ```go import ( @@ -374,19 +355,16 @@ func main() { // TODO: handle error } - client, err := azkeys.NewClient("https://.vault.azure.net", cred, nil) - if err != nil { - // TODO: handle error - } + client := azkeys.NewClient("https://.vault.azure.net", cred, nil) - pager := client.NewListPropertiesOfKeysPager(nil) + pager := client.NewListKeysPager(nil) for pager.More() { resp, err := pager.NextPage(context.TODO()) if err != nil { // TODO: handle error } - for _, key := range resp.Keys { - fmt.Println(*key.ID) + for _, key := range resp.Value { + fmt.Println(*key.KID) } } } diff --git a/sdk/keyvault/azkeys/autorest.md b/sdk/keyvault/azkeys/autorest.md index 85eaf00fdaba..d44238f5b6ff 100644 --- a/sdk/keyvault/azkeys/autorest.md +++ b/sdk/keyvault/azkeys/autorest.md @@ -1,30 +1,127 @@ ## Go -These settings apply only when `--go` is specified on the command line. - ``` yaml +clear-output-folder: false +export-clients: true go: true -version: "^3.0.0" -input-file: -- https://github.com/Azure/azure-rest-api-specs/blob/e2ef44b87405b412403ccb005bfb3975411adf60/specification/keyvault/data-plane/Microsoft.KeyVault/stable/7.3/keys.json +input-file: https://github.com/Azure/azure-rest-api-specs/blob/ac155b972d0619a6e5bf665a863fb05ee7eeb30f/specification/keyvault/data-plane/Microsoft.KeyVault/stable/7.3/keys.json license-header: MICROSOFT_MIT_NO_VERSION -clear-output-folder: false -output-folder: internal/generated +module: github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys openapi-type: "data-plane" +output-folder: ../azkeys +override-client-name: Client security: "AADToken" security-scopes: "https://vault.azure.net/.default" -use: "@autorest/go@4.0.0-preview.42" -export-clients: true +use: "@autorest/go@4.0.0-preview.43" +version: "^3.0.0" -# export request creators and response handlers for use by pollers and pagers, and remove the keyVersion path param check -# (keyVersion == "" is legal for Key Vault but indescribable by OpenAPI) directive: - - from: keyvault_client.go - where: $ - transform: >- - return $. - replace(/get(.*)CreateRequest/g, function(_, s) { return `Get${s}CreateRequest` }). - replace(/get(.*)HandleResponse/g, function(_, s) { return `Get${s}HandleResponse` }). - replace(/if keyVersion == "" \{\s*.*\s*\}\s*/g, ``). - replace(/(urlPath = strings\.ReplaceAll\(urlPath, "\{key-version\}", url\.PathEscape\(keyVersion\)\)\s+)/g, function(_, s) { return `${s}urlPath = strings.ReplaceAll(urlPath, "//", "/")\n\t` }); + # delete unused models + - remove-model: KeyExportParameters + - remove-model: KeyProperties + + # make vault URL a parameter of the client constructor + - from: swagger-document + where: $["x-ms-parameterized-host"] + transform: $.parameters[0]["x-ms-parameter-location"] = "client" + + # capitalize acronyms + - from: swagger-document + where: $.definitions.KeyImportParameters.properties.Hsm + transform: $["x-ms-client-name"] = "HSM" + - from: swagger-document + where: $.definitions..properties..iv + transform: $["x-ms-client-name"] = "IV" + - from: swagger-document + where: $.definitions..properties..kid + transform: $["x-ms-client-name"] = "KID" + + # Maxresults -> MaxResults + - from: swagger-document + where: $.paths..parameters..[?(@.name=='maxresults')] + transform: $["x-ms-client-name"] = "MaxResults" + + # keyName, keyVersion -> name, version + - from: swagger-document + where: $.paths..parameters..[?(@.name=='key-name')] + transform: $["x-ms-client-name"] = "name" + - from: swagger-document + where: $.paths..parameters..[?(@.name=='key-version')] + transform: $["x-ms-client-name"] = "version" + + # rename parameter models to match their methods + - rename-model: + from: KeyCreateParameters + to: CreateKeyParameters + - rename-model: + from: KeyExportParameters + to: ExportKeyParameters + - rename-model: + from: KeyImportParameters + to: ImportKeyParameters + - rename-model: + from: KeyReleaseParameters + to: ReleaseParameters + - rename-model: + from: KeyRestoreParameters + to: RestoreKeyParameters + - rename-model: + from: KeySignParameters + to: SignParameters + - rename-model: + from: KeyUpdateParameters + to: UpdateKeyParameters + - rename-model: + from: KeyVerifyParameters + to: VerifyParameters + + # rename paged operations from Get* to List* + - rename-operation: + from: GetDeletedKeys + to: ListDeletedKeys + - rename-operation: + from: GetKeys + to: ListKeys + - rename-operation: + from: GetKeyVersions + to: ListKeyVersions + + # delete unused error models + - from: models.go + where: $ + transform: return $.replace(/(?:\/\/.*\s)+type (?:Error|KeyVaultError).+\{(?:\s.+\s)+\}\s/g, ""); + - from: models_serde.go + where: $ + transform: return $.replace(/(?:\/\/.*\s)+func \(\w \*?(?:Error|KeyVaultError)\).*\{\s(?:.+\s)+\}\s/g, ""); + + # delete the Attributes model defined in common.json (it's used only with allOf) + - from: models.go + where: $ + transform: return $.replace(/(?:\/\/.*\s)+type Attributes.+\{(?:\s.+\s)+\}\s/, ""); + - from: models_serde.go + where: $ + transform: return $.replace(/(?:\/\/.*\s)+func \(a \*?Attributes\).*\{\s(?:.+\s)+\}\s/g, ""); + + # delete generated constructor + - from: client.go + where: $ + transform: return $.replace(/(?:\/\/.*\s)+func NewClient.+\{\s(?:.+\s)+\}\s/, ""); + + # delete the version path param check (version == "" is legal for Key Vault but indescribable by OpenAPI) + - from: client.go + where: $ + transform: return $.replace(/\sif version == "" \{\s+.+version cannot be empty"\)\s+\}\s/g, ""); + + # delete client name prefix from method options and response types + - from: + - client.go + - models.go + - response_types.go + where: $ + transform: return $.replace(/Client(\w+)((?:Options|Response))/g, "$1$2"); + + # insert a handwritten type for "KID" fields so we can add parsing methods + - from: models.go + where: $ + transform: return $.replace(/(KID \*)string(\s+.*)/g, "$1ID$2") ``` diff --git a/sdk/keyvault/azkeys/client.go b/sdk/keyvault/azkeys/client.go index ada1ccbd7f9c..6bf1f3895c4f 100644 --- a/sdk/keyvault/azkeys/client.go +++ b/sdk/keyvault/azkeys/client.go @@ -3,815 +3,545 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// DO NOT EDIT. package azkeys import ( "context" - "net/http" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "errors" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/crypto" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/base" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/generated" - shared "github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal" + "net/http" + "net/url" + "strconv" + "strings" ) -// Client interacts with Key Vault keys. +// Client contains the methods for the Client group. +// Don't use this type directly, use NewClient() instead. type Client struct { - kvClient *generated.KeyVaultClient - vaultURL string -} - -// ClientOptions are the configurable options for a Client. -type ClientOptions struct { - azcore.ClientOptions -} - -// converts ClientOptions to generated *generated.ConnectionOptions -func (c *ClientOptions) toConnectionOptions() *policy.ClientOptions { - if c == nil { - return nil + endpoint string + pl runtime.Pipeline +} + +// BackupKey - The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does +// NOT return key material in a form that can be used outside the Azure Key Vault system, +// the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this +// operation is to allow a client to GENERATE a key in one Azure Key Vault +// instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to +// export, in protected form, any key type from Azure Key Vault. Individual +// versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that +// a BACKUP from one geographical area cannot be restored to another +// geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This +// operation requires the key/backup permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// options - BackupKeyOptions contains the optional parameters for the Client.BackupKey method. +func (client *Client) BackupKey(ctx context.Context, name string, options *BackupKeyOptions) (BackupKeyResponse, error) { + req, err := client.backupKeyCreateRequest(ctx, name, options) + if err != nil { + return BackupKeyResponse{}, err } - - return &policy.ClientOptions{ - Logging: c.Logging, - Retry: c.Retry, - Telemetry: c.Telemetry, - Transport: c.Transport, - PerCallPolicies: c.PerCallPolicies, - PerRetryPolicies: c.PerRetryPolicies, + resp, err := client.pl.Do(req) + if err != nil { + return BackupKeyResponse{}, err } -} - -// NewClient constructs a Client that accesses a Key Vault's keys. -func NewClient(vaultURL string, credential azcore.TokenCredential, options *ClientOptions) (*Client, error) { - if options == nil { - options = &ClientOptions{} + if !runtime.HasStatusCode(resp, http.StatusOK) { + return BackupKeyResponse{}, runtime.NewResponseError(resp) } - - genOptions := options.toConnectionOptions() - - genOptions.PerRetryPolicies = append( - genOptions.PerRetryPolicies, - shared.NewKeyVaultChallengePolicy(credential), - ) - - pl := runtime.NewPipeline(internal.ModuleName, internal.ModuleVersion, runtime.PipelineOptions{}, genOptions) - return &Client{ - kvClient: generated.NewKeyVaultClient(pl), - vaultURL: vaultURL, - }, nil + return client.backupKeyHandleResponse(resp) } -// VaultURL returns the URL for the client's Key Vault. -func (c *Client) VaultURL() string { - return c.vaultURL -} - -// NewCryptoClient creates a new *crypto.Client for the specified key and optional version. -// The created client uses the same vault URL and options as this Client. -func (c *Client) NewCryptoClient(keyName string, keyVersion *string) *crypto.Client { - keyVer := "" - if keyVersion != nil { - keyVer = *keyVersion +// backupKeyCreateRequest creates the BackupKey request. +func (client *Client) backupKeyCreateRequest(ctx context.Context, name string, options *BackupKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/backup" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - return &crypto.Client{CryptoClient: base.NewCryptoClient(c.vaultURL, keyName, keyVer, c.kvClient.Pipeline())} -} - -// CreateKeyOptions contains optional parameters for CreateKey. -type CreateKeyOptions struct { - // Curve is the elliptic curve name. For valid values, see PossibleCurveNameValues. - Curve *CurveName - - // Properties is the key's management properties. - Properties *Properties - - // Operations are the operations Key Vault will allow for the key. - Operations []*Operation - - // ReleasePolicy specifies conditions under which the key can be exported. - ReleasePolicy *ReleasePolicy - - // Size is the key size in bits. For example: 2048, 3072, or 4096 for RSA. - Size *int32 - - // PublicExponent is the public exponent of an RSA key. - PublicExponent *int32 - - // Tags is application specific metadata in the form of key-value pairs. - Tags map[string]*string -} - -// convert CreateKeyOptions to *generated.KeyVaultClientCreateKeyOptions -func (c *CreateKeyOptions) toGenerated() *generated.KeyVaultClientCreateKeyOptions { - return &generated.KeyVaultClientCreateKeyOptions{} -} - -// convert CreateKeyOptions to generated.KeyCreateParameters -func (c *CreateKeyOptions) toKeyCreateParameters(keyType KeyType) generated.KeyCreateParameters { - var attribs *generated.KeyAttributes - if c.Properties != nil { - attribs = c.Properties.toGenerated() - } - - var ops []*generated.JSONWebKeyOperation - if c.Operations != nil { - ops = make([]*generated.JSONWebKeyOperation, len(c.Operations)) - for i, o := range c.Operations { - ops[i] = (*generated.JSONWebKeyOperation)(o) - } - } - - return generated.KeyCreateParameters{ - Kty: keyType.toGenerated(), - Curve: (*generated.JSONWebKeyCurveName)(c.Curve), - KeyAttributes: attribs, - KeyOps: ops, - KeySize: c.Size, - PublicExponent: c.PublicExponent, - Tags: c.Tags, - ReleasePolicy: c.ReleasePolicy.toGenerated(), + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// CreateKeyResponse is returned by CreateKey. -type CreateKeyResponse struct { - Key -} - -// creates CreateKeyResponse from generated.KeyVaultClient.CreateKeyResponse -func createKeyResponseFromGenerated(g generated.KeyVaultClientCreateKeyResponse) CreateKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return CreateKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// backupKeyHandleResponse handles the BackupKey response. +func (client *Client) backupKeyHandleResponse(resp *http.Response) (BackupKeyResponse, error) { + result := BackupKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.BackupKeyResult); err != nil { + return BackupKeyResponse{}, err } + return result, nil } -// CreateKey creates a key. If the named key already exists, it creates a new version of the key. This method can create -// a key of any type. CreateRSAKey, CreateECKey, and CreateOctKey are more convenient for creating specific key types. -// Pass nil for options to accept default values. -func (c *Client) CreateKey(ctx context.Context, name string, keyType KeyType, options *CreateKeyOptions) (CreateKeyResponse, error) { - if options == nil { - options = &CreateKeyOptions{} - } - - resp, err := c.kvClient.CreateKey(ctx, c.vaultURL, name, options.toKeyCreateParameters(keyType), options.toGenerated()) +// CreateKey - The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, +// Azure Key Vault creates a new version of the key. It requires the keys/create +// permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name for the new key. The system will generate the version name for the new key. +// parameters - The parameters to create a key. +// options - CreateKeyOptions contains the optional parameters for the Client.CreateKey method. +func (client *Client) CreateKey(ctx context.Context, name string, parameters CreateKeyParameters, options *CreateKeyOptions) (CreateKeyResponse, error) { + req, err := client.createKeyCreateRequest(ctx, name, parameters, options) if err != nil { return CreateKeyResponse{}, err } - - return createKeyResponseFromGenerated(resp), nil -} - -// CreateECKeyOptions contains optional parameters for CreateECKey -type CreateECKeyOptions struct { - // Curve is the elliptic curve name. For valid values, see PossibleCurveNameValues. - Curve *CurveName - - // Tags is application specific metadata in the form of key-value pairs. - Tags map[string]*string - - // HardwareProtected determines whether the key is is created in a hardware security module (HSM). - HardwareProtected *bool - - // Properties is the key's management properties. - Properties *Properties - - // Operations are the operations Key Vault will allow for the key. - Operations []*Operation - - // ReleasePolicy specifies conditions under which the key can be exported - ReleasePolicy *ReleasePolicy -} - -// convert CreateECKeyOptions to generated.KeyCreateParameters -func (c *CreateECKeyOptions) toKeyCreateParameters(keyType KeyType) generated.KeyCreateParameters { - var keyOps []*generated.JSONWebKeyOperation - if c.Operations != nil { - keyOps = make([]*generated.JSONWebKeyOperation, len(c.Operations)) - for i, k := range c.Operations { - keyOps[i] = (*generated.JSONWebKeyOperation)(k) - } + resp, err := client.pl.Do(req) + if err != nil { + return CreateKeyResponse{}, err } - return generated.KeyCreateParameters{ - Kty: keyType.toGenerated(), - Curve: (*generated.JSONWebKeyCurveName)(c.Curve), - Tags: c.Tags, - KeyOps: keyOps, - ReleasePolicy: c.ReleasePolicy.toGenerated(), - KeyAttributes: c.Properties.toGenerated(), + if !runtime.HasStatusCode(resp, http.StatusOK) { + return CreateKeyResponse{}, runtime.NewResponseError(resp) } + return client.createKeyHandleResponse(resp) } -// CreateECKeyResponse is returned by CreateECKey. -type CreateECKeyResponse struct { - Key -} - -// convert the generated.KeyVaultClientCreateKeyResponse to CreateECKeyResponse -func createECKeyResponseFromGenerated(g generated.KeyVaultClientCreateKeyResponse) CreateECKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return CreateECKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// createKeyCreateRequest creates the CreateKey request. +func (client *Client) createKeyCreateRequest(ctx context.Context, name string, parameters CreateKeyParameters, options *CreateKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/create" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// CreateECKey creates a new elliptic curve key. If the named key already exists, this creates a new version of the key. -// Pass nil for options to accept default values. -func (c *Client) CreateECKey(ctx context.Context, name string, options *CreateECKeyOptions) (CreateECKeyResponse, error) { - keyType := KeyTypeEC - - if options == nil { - options = &CreateECKeyOptions{} +// createKeyHandleResponse handles the CreateKey response. +func (client *Client) createKeyHandleResponse(resp *http.Response) (CreateKeyResponse, error) { + result := CreateKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return CreateKeyResponse{}, err } - if options.HardwareProtected != nil && *options.HardwareProtected { - keyType = KeyTypeECHSM + return result, nil +} + +// Decrypt - The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified +// algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of +// data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT +// operation applies to asymmetric and symmetric keys stored in Azure Key Vault +// since it uses the private portion of the key. This operation requires the keys/decrypt permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// version - The version of the key. +// parameters - The parameters for the decryption operation. +// options - DecryptOptions contains the optional parameters for the Client.Decrypt method. +func (client *Client) Decrypt(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *DecryptOptions) (DecryptResponse, error) { + req, err := client.decryptCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return DecryptResponse{}, err } - - resp, err := c.kvClient.CreateKey(ctx, c.vaultURL, name, options.toKeyCreateParameters(keyType), &generated.KeyVaultClientCreateKeyOptions{}) + resp, err := client.pl.Do(req) if err != nil { - return CreateECKeyResponse{}, err + return DecryptResponse{}, err } - - return createECKeyResponseFromGenerated(resp), nil -} - -// CreateOctKeyOptions contains optional parameters for CreateOctKey -type CreateOctKeyOptions struct { - // HardwareProtected determines whether the key is is created in a hardware security module (HSM). - HardwareProtected *bool - - // Size is the key size in bits. For example: 128, 192 or 256. - Size *int32 - - // Properties is the key's management properties. - Properties *Properties - - // Operations are the operations Key Vault will allow for the key. - Operations []*Operation - - // ReleasePolicy specifies conditions under which the key can be exported - ReleasePolicy *ReleasePolicy - - // Tags is application specific metadata in the form of key-value pairs. - Tags map[string]*string + if !runtime.HasStatusCode(resp, http.StatusOK) { + return DecryptResponse{}, runtime.NewResponseError(resp) + } + return client.decryptHandleResponse(resp) } -// conver the CreateOctKeyOptions to generated.KeyCreateParameters -func (c *CreateOctKeyOptions) toKeyCreateParameters(keyType KeyType) generated.KeyCreateParameters { - var keyOps []*generated.JSONWebKeyOperation - if c.Operations != nil { - keyOps = make([]*generated.JSONWebKeyOperation, len(c.Operations)) - for i, k := range c.Operations { - keyOps[i] = (*generated.JSONWebKeyOperation)(k) - } +// decryptCreateRequest creates the Decrypt request. +func (client *Client) decryptCreateRequest(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *DecryptOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/decrypt" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - return generated.KeyCreateParameters{ - Kty: keyType.toGenerated(), - KeySize: c.Size, - Tags: c.Tags, - ReleasePolicy: c.ReleasePolicy.toGenerated(), - KeyAttributes: c.Properties.toGenerated(), - KeyOps: keyOps, + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// CreateOctKeyResponse is returned by CreateOctKey. -type CreateOctKeyResponse struct { - Key -} - -// convert generated response to CreateOctKeyResponse -func createOctKeyResponseFromGenerated(g generated.KeyVaultClientCreateKeyResponse) CreateOctKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return CreateOctKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// decryptHandleResponse handles the Decrypt response. +func (client *Client) decryptHandleResponse(resp *http.Response) (DecryptResponse, error) { + result := DecryptResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { + return DecryptResponse{}, err } + return result, nil } -// CreateOctKey creates a new AES key. If the named key already exists, this creates a new version of the key. Pass nil for options to accept default values. -func (c *Client) CreateOctKey(ctx context.Context, name string, options *CreateOctKeyOptions) (CreateOctKeyResponse, error) { - keyType := KeyTypeOctHSM - - if options != nil && options.HardwareProtected != nil && !*options.HardwareProtected { - keyType = KeyTypeOct - } else if options == nil { - options = &CreateOctKeyOptions{} - } - - resp, err := c.kvClient.CreateKey(ctx, c.vaultURL, name, options.toKeyCreateParameters(keyType), &generated.KeyVaultClientCreateKeyOptions{}) +// DeleteKey - The delete key operation cannot be used to remove individual versions of a key. This operation removes the +// cryptographic material associated with the key, which means the key is not usable for +// Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key to delete. +// options - DeleteKeyOptions contains the optional parameters for the Client.DeleteKey method. +func (client *Client) DeleteKey(ctx context.Context, name string, options *DeleteKeyOptions) (DeleteKeyResponse, error) { + req, err := client.deleteKeyCreateRequest(ctx, name, options) if err != nil { - return CreateOctKeyResponse{}, err + return DeleteKeyResponse{}, err } - - return createOctKeyResponseFromGenerated(resp), nil -} - -// CreateRSAKeyOptions contains optional parameters for CreateRSAKey. -type CreateRSAKeyOptions struct { - // HardwareProtected determines whether the key is is created in a hardware security module (HSM). - HardwareProtected *bool - - // Size is the key size in bits. For example: 2048, 3072, or 4096. - Size *int32 - - // PublicExponent is the key's public exponent. - PublicExponent *int32 - - // Tags is application specific metadata in the form of key-value pairs. - Tags map[string]*string - - // Properties is the key's management properties. - Properties *Properties - - // Operations are the operations Key Vault will allow for the key. - Operations []*Operation - - // ReleasePolicy specifies conditions under which the key can be exported - ReleasePolicy *ReleasePolicy -} - -// convert CreateRSAKeyOptions to generated.KeyCreateParameters -func (c CreateRSAKeyOptions) toKeyCreateParameters(k KeyType) generated.KeyCreateParameters { - var keyOps []*generated.JSONWebKeyOperation - if c.Operations != nil { - keyOps = make([]*generated.JSONWebKeyOperation, len(c.Operations)) - for i, k := range c.Operations { - keyOps[i] = (*generated.JSONWebKeyOperation)(k) - } + resp, err := client.pl.Do(req) + if err != nil { + return DeleteKeyResponse{}, err } - return generated.KeyCreateParameters{ - Kty: k.toGenerated(), - KeySize: c.Size, - PublicExponent: c.PublicExponent, - Tags: c.Tags, - KeyAttributes: c.Properties.toGenerated(), - KeyOps: keyOps, - ReleasePolicy: c.ReleasePolicy.toGenerated(), + if !runtime.HasStatusCode(resp, http.StatusOK) { + return DeleteKeyResponse{}, runtime.NewResponseError(resp) } + return client.deleteKeyHandleResponse(resp) } -// CreateRSAKeyResponse is returned by CreateRSAKey. -type CreateRSAKeyResponse struct { - Key -} - -// convert internal response to CreateRSAKeyResponse -func createRSAKeyResponseFromGenerated(g generated.KeyVaultClientCreateKeyResponse) CreateRSAKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return CreateRSAKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// deleteKeyCreateRequest creates the DeleteKey request. +func (client *Client) deleteKeyCreateRequest(ctx context.Context, name string, options *DeleteKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } -} - -// CreateRSAKey can be used to create a new RSA key in Azure Key Vault. If the named key already -// exists, Azure Key Vault creates a new version of the key. RSA keys can be created in Standard or -// Premium SKU vaults, RSAHSM can be created in Premium SKU vaults or Managed HSMs. -// It requires the keys/create permission. Pass nil for options to accept default values. -func (c *Client) CreateRSAKey(ctx context.Context, name string, options *CreateRSAKeyOptions) (CreateRSAKeyResponse, error) { - keyType := KeyTypeRSA - - if options == nil { - options = &CreateRSAKeyOptions{} + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err } - if options.HardwareProtected != nil && *options.HardwareProtected { - keyType = KeyTypeRSAHSM + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil +} + +// deleteKeyHandleResponse handles the DeleteKey response. +func (client *Client) deleteKeyHandleResponse(resp *http.Response) (DeleteKeyResponse, error) { + result := DeleteKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.DeletedKeyBundle); err != nil { + return DeleteKeyResponse{}, err + } + return result, nil +} + +// Encrypt - The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure +// Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size +// of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly +// necessary for symmetric keys stored in Azure Key Vault since protection with an +// asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience +// for callers that have a key-reference but do not have access to the +// public key material. This operation requires the keys/encrypt permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// version - The version of the key. +// parameters - The parameters for the encryption operation. +// options - EncryptOptions contains the optional parameters for the Client.Encrypt method. +func (client *Client) Encrypt(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *EncryptOptions) (EncryptResponse, error) { + req, err := client.encryptCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return EncryptResponse{}, err } - - resp, err := c.kvClient.CreateKey(ctx, c.vaultURL, name, options.toKeyCreateParameters(keyType), &generated.KeyVaultClientCreateKeyOptions{}) + resp, err := client.pl.Do(req) if err != nil { - return CreateRSAKeyResponse{}, err + return EncryptResponse{}, err } - - return createRSAKeyResponseFromGenerated(resp), nil -} - -// ListPropertiesOfKeysOptions contains optional parameters for ListKeys -type ListPropertiesOfKeysOptions struct { - // placeholder for future optional parameters -} - -// ListPropertiesOfKeysResponse contains a page of key properties. -type ListPropertiesOfKeysResponse struct { - // NextLink is the URL to get the next page. - NextLink *string - - // Keys is the page's content. - Keys []*KeyItem + if !runtime.HasStatusCode(resp, http.StatusOK) { + return EncryptResponse{}, runtime.NewResponseError(resp) + } + return client.encryptHandleResponse(resp) } -// convert internal Response to ListKeysPage -func listKeysPageFromGenerated(i generated.KeyVaultClientGetKeysResponse) ListPropertiesOfKeysResponse { - var keys []*KeyItem - for _, k := range i.Value { - keys = append(keys, keyItemFromGenerated(k)) +// encryptCreateRequest creates the Encrypt request. +func (client *Client) encryptCreateRequest(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *EncryptOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/encrypt" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - return ListPropertiesOfKeysResponse{ - NextLink: i.NextLink, - Keys: keys, + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// NewListPropertiesOfKeysPager retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the -// public part of a stored key. The LIST operation is applicable to all key types, however only the -// base key identifier, attributes, and tags are provided in the response. Individual versions of a -// key are not listed in the response. This operation requires the keys/list permission. -func (c *Client) NewListPropertiesOfKeysPager(options *ListPropertiesOfKeysOptions) *runtime.Pager[ListPropertiesOfKeysResponse] { - return runtime.NewPager(runtime.PagingHandler[ListPropertiesOfKeysResponse]{ - More: func(page ListPropertiesOfKeysResponse) bool { - return page.NextLink != nil && len(*page.NextLink) > 0 - }, - Fetcher: func(ctx context.Context, page *ListPropertiesOfKeysResponse) (ListPropertiesOfKeysResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = c.kvClient.GetKeysCreateRequest(ctx, c.vaultURL, &generated.KeyVaultClientGetKeysOptions{}) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ListPropertiesOfKeysResponse{}, err - } - resp, err := c.kvClient.Pipeline().Do(req) - if err != nil { - return ListPropertiesOfKeysResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ListPropertiesOfKeysResponse{}, runtime.NewResponseError(resp) - } - genResp, err := c.kvClient.GetKeysHandleResponse(resp) - if err != nil { - return ListPropertiesOfKeysResponse{}, err - } - return listKeysPageFromGenerated(genResp), nil - }, - }) -} - -// GetKeyOptions contains the options for the Client.GetKey method -type GetKeyOptions struct { - Version string -} - -// GetKeyResponse is returned by GetResponse. -type GetKeyResponse struct { - Key -} - -// convert internal response to GetKeyResponse -func getKeyResponseFromGenerated(g generated.KeyVaultClientGetKeyResponse) GetKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return GetKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// encryptHandleResponse handles the Encrypt response. +func (client *Client) encryptHandleResponse(resp *http.Response) (EncryptResponse, error) { + result := EncryptResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { + return EncryptResponse{}, err } + return result, nil } -// GetKey is used to retrieve the content for any single Key. If the requested key is symmetric, then -// no key material is released in the response. This operation requires the keys/get permission. -// Pass nil for options to accept default values. -func (c *Client) GetKey(ctx context.Context, name string, options *GetKeyOptions) (GetKeyResponse, error) { - if options == nil { - options = &GetKeyOptions{} +// GetDeletedKey - The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be +// invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This +// operation requires the keys/get permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// options - GetDeletedKeyOptions contains the optional parameters for the Client.GetDeletedKey method. +func (client *Client) GetDeletedKey(ctx context.Context, name string, options *GetDeletedKeyOptions) (GetDeletedKeyResponse, error) { + req, err := client.getDeletedKeyCreateRequest(ctx, name, options) + if err != nil { + return GetDeletedKeyResponse{}, err } - - resp, err := c.kvClient.GetKey(ctx, c.vaultURL, name, options.Version, &generated.KeyVaultClientGetKeyOptions{}) + resp, err := client.pl.Do(req) if err != nil { - return GetKeyResponse{}, err + return GetDeletedKeyResponse{}, err } - - return getKeyResponseFromGenerated(resp), err -} - -// GetDeletedKeyOptions contains optional parameters for GetDeletedKey -type GetDeletedKeyOptions struct { - // placeholder for future optional parameters -} - -// convert the GetDeletedKeyOptions to the internal representation -func (g GetDeletedKeyOptions) toGenerated() *generated.KeyVaultClientGetDeletedKeyOptions { - return &generated.KeyVaultClientGetDeletedKeyOptions{} -} - -// GetDeletedKeyResponse contains the response from a Client.GetDeletedKey -type GetDeletedKeyResponse struct { - DeletedKey -} - -// convert generated response to GetDeletedKeyResponse -func getDeletedKeyResponseFromGenerated(g generated.KeyVaultClientGetDeletedKeyResponse) GetDeletedKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return GetDeletedKeyResponse{ - DeletedKey: DeletedKey{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - Key: jsonWebKeyFromGenerated(g.Key), - RecoveryID: g.RecoveryID, - DeletedOn: g.DeletedDate, - ScheduledPurgeDate: g.ScheduledPurgeDate, - }, + if !runtime.HasStatusCode(resp, http.StatusOK) { + return GetDeletedKeyResponse{}, runtime.NewResponseError(resp) } + return client.getDeletedKeyHandleResponse(resp) } -// GetDeletedKey is used to retrieve information about a deleted key. This operation is only -// applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, -// it will return an error if invoked on a non soft-delete enabled vault. This operation requires -// the keys/get permission. Pass nil for options to accept default values. -func (c *Client) GetDeletedKey(ctx context.Context, name string, options *GetDeletedKeyOptions) (GetDeletedKeyResponse, error) { - if options == nil { - options = &GetDeletedKeyOptions{} +// getDeletedKeyCreateRequest creates the GetDeletedKey request. +func (client *Client) getDeletedKeyCreateRequest(ctx context.Context, name string, options *GetDeletedKeyOptions) (*policy.Request, error) { + urlPath := "/deletedkeys/{key-name}" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - - resp, err := c.kvClient.GetDeletedKey(ctx, c.vaultURL, name, options.toGenerated()) + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath)) if err != nil { - return GetDeletedKeyResponse{}, err + return nil, err } - - return getDeletedKeyResponseFromGenerated(resp), nil + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// PurgeDeletedKeyOptions contains optional parameters for PurgeDeletedKey. -type PurgeDeletedKeyOptions struct { - // placeholder for future optional parameters -} - -// convert options to internal options -func (p *PurgeDeletedKeyOptions) toGenerated() *generated.KeyVaultClientPurgeDeletedKeyOptions { - return &generated.KeyVaultClientPurgeDeletedKeyOptions{} -} - -// PurgeDeletedKeyResponse is returned by PurgeDeletedKey. -type PurgeDeletedKeyResponse struct { - // placeholder for future response values -} - -// Converts the generated response to the publicly exposed version. -func purgeDeletedKeyResponseFromGenerated(i generated.KeyVaultClientPurgeDeletedKeyResponse) PurgeDeletedKeyResponse { - return PurgeDeletedKeyResponse{} -} - -// PurgeDeletedKey permanently deletes a deleted key. Key Vault may require several seconds to finish purging the key after this -// method returns. Pass nil for options to accept default values. -func (c *Client) PurgeDeletedKey(ctx context.Context, name string, options *PurgeDeletedKeyOptions) (PurgeDeletedKeyResponse, error) { - if options == nil { - options = &PurgeDeletedKeyOptions{} +// getDeletedKeyHandleResponse handles the GetDeletedKey response. +func (client *Client) getDeletedKeyHandleResponse(resp *http.Response) (GetDeletedKeyResponse, error) { + result := GetDeletedKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.DeletedKeyBundle); err != nil { + return GetDeletedKeyResponse{}, err } - resp, err := c.kvClient.PurgeDeletedKey(ctx, c.vaultURL, name, options.toGenerated()) - return purgeDeletedKeyResponseFromGenerated(resp), err -} - -// DeleteKeyResponse contains the response for a Client.BeginDeleteKey operation. -type DeleteKeyResponse struct { - DeletedKey -} - -// BeginDeleteKeyOptions contains optional parameters for BeginDeleteKey. -type BeginDeleteKeyOptions struct { - // ResumeToken is a string to rehydrate a poller for an operation that has already begun. - ResumeToken string + return result, nil } -// BeginDeleteKey deletes all versions of a key. It returns a Poller that enables waiting for the deletion to finish. -// Pass nil for options to accept default values. -func (c *Client) BeginDeleteKey(ctx context.Context, name string, options *BeginDeleteKeyOptions) (*runtime.Poller[DeleteKeyResponse], error) { - if options == nil { - options = &BeginDeleteKeyOptions{} +// GetKey - The get key operation is applicable to all key types. If the requested key is symmetric, then no key material +// is released in the response. This operation requires the keys/get permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key to get. +// version - Adding the version parameter retrieves a specific version of a key. This URI fragment is optional. If not specified, +// the latest version of the key is returned. +// options - GetKeyOptions contains the optional parameters for the Client.GetKey method. +func (client *Client) GetKey(ctx context.Context, name string, version string, options *GetKeyOptions) (GetKeyResponse, error) { + req, err := client.getKeyCreateRequest(ctx, name, version, options) + if err != nil { + return GetKeyResponse{}, err } - - handler := beginDeleteKeyPoller{ - poll: func(ctx context.Context) (*http.Response, error) { - req, err := c.kvClient.GetDeletedKeyCreateRequest(ctx, c.vaultURL, name, nil) - if err != nil { - return nil, err - } - return c.kvClient.Pipeline().Do(req) - }, + resp, err := client.pl.Do(req) + if err != nil { + return GetKeyResponse{}, err } - - if options.ResumeToken != "" { - return runtime.NewPollerFromResumeToken(options.ResumeToken, c.kvClient.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[DeleteKeyResponse]{ - Handler: &handler, - }) + if !runtime.HasStatusCode(resp, http.StatusOK) { + return GetKeyResponse{}, runtime.NewResponseError(resp) } + return client.getKeyHandleResponse(resp) +} - var rawResp *http.Response - ctx = runtime.WithCaptureResponse(ctx, &rawResp) - if _, err := c.kvClient.DeleteKey(ctx, c.vaultURL, name, nil); err != nil { +// getKeyCreateRequest creates the GetKey request. +func (client *Client) getKeyCreateRequest(ctx context.Context, name string, version string, options *GetKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { return nil, err } - - return runtime.NewPoller(rawResp, c.kvClient.Pipeline(), &runtime.NewPollerOptions[DeleteKeyResponse]{ - Handler: &handler, - }) -} - -// BackupKeyOptions contains optional parameters for BackupKey -type BackupKeyOptions struct { - // placeholder for future optional parameters + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// convert Options to generated version -func (b BackupKeyOptions) toGenerated() *generated.KeyVaultClientBackupKeyOptions { - return &generated.KeyVaultClientBackupKeyOptions{} -} - -// BackupKeyResponse contains the response from the Client.BackupKey method -type BackupKeyResponse struct { - // READ-ONLY; The backup blob containing the backed up key. - Value []byte -} - -// convert internal reponse to BackupKeyResponse -func backupKeyResponseFromGenerated(i generated.KeyVaultClientBackupKeyResponse) BackupKeyResponse { - return BackupKeyResponse{ - Value: i.Value, +// getKeyHandleResponse handles the GetKey response. +func (client *Client) getKeyHandleResponse(resp *http.Response) (GetKeyResponse, error) { + result := GetKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return GetKeyResponse{}, err } + return result, nil } -// BackupKey exports all versions of a key from Azure Key Vault in a protected form. -// -// Note that this operation does NOT return key material in a form that can be used outside the -// Azure Key Vault system. The returned key material is either protected to an Azure Key Vault -// HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE -// a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure -// Key Vault instance. BACKUP / RESTORE can be performed within geographical boundaries only; a -// BACKUP from one geographical area cannot be restored to another geographical area. For example, -// a backup from the US geographical area cannot be restored in an EU geographical area. -// Pass nil for options to accept default values. -func (c *Client) BackupKey(ctx context.Context, name string, options *BackupKeyOptions) (BackupKeyResponse, error) { - if options == nil { - options = &BackupKeyOptions{} +// GetKeyRotationPolicy - The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key +// vault. This operation requires the keys/get permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key in a given key vault. +// options - GetKeyRotationPolicyOptions contains the optional parameters for the Client.GetKeyRotationPolicy method. +func (client *Client) GetKeyRotationPolicy(ctx context.Context, name string, options *GetKeyRotationPolicyOptions) (GetKeyRotationPolicyResponse, error) { + req, err := client.getKeyRotationPolicyCreateRequest(ctx, name, options) + if err != nil { + return GetKeyRotationPolicyResponse{}, err } - - resp, err := c.kvClient.BackupKey(ctx, c.vaultURL, name, options.toGenerated()) + resp, err := client.pl.Do(req) if err != nil { - return BackupKeyResponse{}, err + return GetKeyRotationPolicyResponse{}, err } - - return backupKeyResponseFromGenerated(resp), nil -} - -// BeginRecoverDeletedKeyOptions contains the optional parameters for the Client.BeginRecoverDeletedKey operation -type BeginRecoverDeletedKeyOptions struct { - // ResumeToken returns a string for creating a new poller to begin polling again - ResumeToken string + if !runtime.HasStatusCode(resp, http.StatusOK) { + return GetKeyRotationPolicyResponse{}, runtime.NewResponseError(resp) + } + return client.getKeyRotationPolicyHandleResponse(resp) } -// RecoverDeletedKeyResponse is the response object for the Client.RecoverDeletedKey operation. -type RecoverDeletedKeyResponse struct { - Key +// getKeyRotationPolicyCreateRequest creates the GetKeyRotationPolicy request. +func (client *Client) getKeyRotationPolicyCreateRequest(ctx context.Context, name string, options *GetKeyRotationPolicyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/rotationpolicy" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// change recover deleted key reponse to the generated version. -func recoverDeletedKeyResponseFromGenerated(g generated.KeyVaultClientRecoverDeletedKeyResponse) RecoverDeletedKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return RecoverDeletedKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// getKeyRotationPolicyHandleResponse handles the GetKeyRotationPolicy response. +func (client *Client) getKeyRotationPolicyHandleResponse(resp *http.Response) (GetKeyRotationPolicyResponse, error) { + result := GetKeyRotationPolicyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyRotationPolicy); err != nil { + return GetKeyRotationPolicyResponse{}, err } + return result, nil } -// BeginRecoverDeletedKey recovers a deleted key to its latest version. Pass nil for options to accept default values. -func (c *Client) BeginRecoverDeletedKey(ctx context.Context, name string, options *BeginRecoverDeletedKeyOptions) (*runtime.Poller[RecoverDeletedKeyResponse], error) { - if options == nil { - options = &BeginRecoverDeletedKeyOptions{} +// GetRandomBytes - Get the requested number of bytes containing random values from a managed HSM. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// parameters - The request object to get random bytes. +// options - GetRandomBytesOptions contains the optional parameters for the Client.GetRandomBytes method. +func (client *Client) GetRandomBytes(ctx context.Context, parameters GetRandomBytesRequest, options *GetRandomBytesOptions) (GetRandomBytesResponse, error) { + req, err := client.getRandomBytesCreateRequest(ctx, parameters, options) + if err != nil { + return GetRandomBytesResponse{}, err } - - handler := beginRecoverDeletedKeyPoller{ - poll: func(ctx context.Context) (*http.Response, error) { - req, err := c.kvClient.GetKeyCreateRequest(ctx, c.vaultURL, name, "", nil) - if err != nil { - return nil, err - } - return c.kvClient.Pipeline().Do(req) - }, + resp, err := client.pl.Do(req) + if err != nil { + return GetRandomBytesResponse{}, err } - - if options.ResumeToken != "" { - return runtime.NewPollerFromResumeToken(options.ResumeToken, c.kvClient.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RecoverDeletedKeyResponse]{ - Handler: &handler, - }) + if !runtime.HasStatusCode(resp, http.StatusOK) { + return GetRandomBytesResponse{}, runtime.NewResponseError(resp) } + return client.getRandomBytesHandleResponse(resp) +} - var rawResp *http.Response - ctx = runtime.WithCaptureResponse(ctx, &rawResp) - if _, err := c.kvClient.RecoverDeletedKey(ctx, c.vaultURL, name, nil); err != nil { +// getRandomBytesCreateRequest creates the GetRandomBytes request. +func (client *Client) getRandomBytesCreateRequest(ctx context.Context, parameters GetRandomBytesRequest, options *GetRandomBytesOptions) (*policy.Request, error) { + urlPath := "/rng" + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { return nil, err } - - return runtime.NewPoller(rawResp, c.kvClient.Pipeline(), &runtime.NewPollerOptions[RecoverDeletedKeyResponse]{ - Handler: &handler, - }) -} - -// UpdateKeyPropertiesOptions contains optional parameters for UpdateKeyProperties -type UpdateKeyPropertiesOptions struct { - // Operations are the operations Key Vault will allow for the key. - Operations []*Operation + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// UpdateKeyPropertiesResponse is returned by UpdateKeyProperties. -type UpdateKeyPropertiesResponse struct { - Key -} - -// convert the internal response to UpdateKeyPropertiesResponse -func updateKeyPropertiesFromGenerated(g generated.KeyVaultClientUpdateKeyResponse) UpdateKeyPropertiesResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return UpdateKeyPropertiesResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// getRandomBytesHandleResponse handles the GetRandomBytes response. +func (client *Client) getRandomBytesHandleResponse(resp *http.Response) (GetRandomBytesResponse, error) { + result := GetRandomBytesResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.RandomBytes); err != nil { + return GetRandomBytesResponse{}, err } + return result, nil } -// UpdateKeyProperties updates the management properties of a key, but not its cryptographic material. -// Pass nil for options to accept default values. -func (c *Client) UpdateKeyProperties(ctx context.Context, properties Properties, options *UpdateKeyPropertiesOptions) (UpdateKeyPropertiesResponse, error) { - if options == nil { - options = &UpdateKeyPropertiesOptions{} - } - name, version := "", "" - if properties.Name != nil { - name = *properties.Name +// ImportKey - The import key operation may be used to import any key type into an Azure Key Vault. If the named key already +// exists, Azure Key Vault creates a new version of the key. This operation requires the +// keys/import permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - Name for the imported key. +// parameters - The parameters to import a key. +// options - ImportKeyOptions contains the optional parameters for the Client.ImportKey method. +func (client *Client) ImportKey(ctx context.Context, name string, parameters ImportKeyParameters, options *ImportKeyOptions) (ImportKeyResponse, error) { + req, err := client.importKeyCreateRequest(ctx, name, parameters, options) + if err != nil { + return ImportKeyResponse{}, err } - if properties.Version != nil { - version = *properties.Version + resp, err := client.pl.Do(req) + if err != nil { + return ImportKeyResponse{}, err } - params := generated.KeyUpdateParameters{ - KeyAttributes: properties.toGenerated(), - ReleasePolicy: properties.ReleasePolicy.toGenerated(), - Tags: properties.Tags, + if !runtime.HasStatusCode(resp, http.StatusOK) { + return ImportKeyResponse{}, runtime.NewResponseError(resp) } - if options.Operations != nil { - params.KeyOps = make([]*generated.JSONWebKeyOperation, len(options.Operations)) - for i, op := range options.Operations { - params.KeyOps[i] = (*generated.JSONWebKeyOperation)(op) - } + return client.importKeyHandleResponse(resp) +} + +// importKeyCreateRequest creates the ImportKey request. +func (client *Client) importKeyCreateRequest(ctx context.Context, name string, parameters ImportKeyParameters, options *ImportKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - resp, err := c.kvClient.UpdateKey(ctx, c.vaultURL, name, version, params, nil) + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.endpoint, urlPath)) if err != nil { - return UpdateKeyPropertiesResponse{}, err + return nil, err } - - return updateKeyPropertiesFromGenerated(resp), nil + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// ListDeletedKeysResponse holds the data for a single page. -type ListDeletedKeysResponse struct { - // NextLink is the URL to get the next page. - NextLink *string - - // DeletedKeys is the page's content. - DeletedKeys []*DeletedKeyItem -} - -// ListDeletedKeysOptions contains optional parameters for NewListDeletedKeysPager. -type ListDeletedKeysOptions struct { - // placeholder for future optional parameters -} - -// Convert publicly exposed options to the generated version.a -func (l *ListDeletedKeysOptions) toGenerated() *generated.KeyVaultClientGetDeletedKeysOptions { - return &generated.KeyVaultClientGetDeletedKeysOptions{} +// importKeyHandleResponse handles the ImportKey response. +func (client *Client) importKeyHandleResponse(resp *http.Response) (ImportKeyResponse, error) { + result := ImportKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return ImportKeyResponse{}, err + } + return result, nil } -// NewListDeletedKeysPager creates a pager that lists deleted keys. Pass nil for options to accept default values. -func (c *Client) NewListDeletedKeysPager(options *ListDeletedKeysOptions) *runtime.Pager[ListDeletedKeysResponse] { +// NewListDeletedKeysPager - Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public +// part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys +// operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return +// an error if invoked on a non soft-delete enabled vault. This operation +// requires the keys/list permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// options - ListDeletedKeysOptions contains the optional parameters for the Client.ListDeletedKeys method. +func (client *Client) NewListDeletedKeysPager(options *ListDeletedKeysOptions) *runtime.Pager[ListDeletedKeysResponse] { return runtime.NewPager(runtime.PagingHandler[ListDeletedKeysResponse]{ More: func(page ListDeletedKeysResponse) bool { return page.NextLink != nil && len(*page.NextLink) > 0 @@ -820,429 +550,725 @@ func (c *Client) NewListDeletedKeysPager(options *ListDeletedKeysOptions) *runti var req *policy.Request var err error if page == nil { - req, err = c.kvClient.GetDeletedKeysCreateRequest(ctx, c.vaultURL, options.toGenerated()) + req, err = client.listDeletedKeysCreateRequest(ctx, options) } else { req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) } if err != nil { return ListDeletedKeysResponse{}, err } - resp, err := c.kvClient.Pipeline().Do(req) + resp, err := client.pl.Do(req) if err != nil { return ListDeletedKeysResponse{}, err } if !runtime.HasStatusCode(resp, http.StatusOK) { return ListDeletedKeysResponse{}, runtime.NewResponseError(resp) } - genResp, err := c.kvClient.GetDeletedKeysHandleResponse(resp) - if err != nil { - return ListDeletedKeysResponse{}, runtime.NewResponseError(resp) - } - - var values []*DeletedKeyItem - for _, d := range genResp.Value { - values = append(values, deletedKeyItemFromGenerated(d)) - } - - return ListDeletedKeysResponse{ - NextLink: genResp.NextLink, - DeletedKeys: values, - }, nil + return client.listDeletedKeysHandleResponse(resp) }, }) } -// ListPropertiesOfKeyVersionsOptions contains optional parameters for NewListPropertiesOfKeyVersionsPager. -type ListPropertiesOfKeyVersionsOptions struct { - // placeholder for future optional parameters -} - -// convert the public ListKeyVersionsOptions to the generated version -func (l *ListPropertiesOfKeyVersionsOptions) toGenerated() *generated.KeyVaultClientGetKeyVersionsOptions { - if l == nil { - return &generated.KeyVaultClientGetKeyVersionsOptions{} +// listDeletedKeysCreateRequest creates the ListDeletedKeys request. +func (client *Client) listDeletedKeysCreateRequest(ctx context.Context, options *ListDeletedKeysOptions) (*policy.Request, error) { + urlPath := "/deletedkeys" + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err } - return &generated.KeyVaultClientGetKeyVersionsOptions{} -} - -// ListPropertiesOfKeyVersionsResponse contains a page of key versions. -type ListPropertiesOfKeyVersionsResponse struct { - // NextLink is the URL to get the next page. - NextLink *string - - // Keys is the page's content. - Keys []*KeyItem + reqQP := req.Raw().URL.Query() + if options != nil && options.MaxResults != nil { + reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10)) + } + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// create ListKeysPage from generated pager -func listKeyVersionsPageFromGenerated(i generated.KeyVaultClientGetKeyVersionsResponse) ListPropertiesOfKeyVersionsResponse { - var keys []*KeyItem - for _, s := range i.Value { - if s != nil { - keys = append(keys, keyItemFromGenerated(s)) - } - } - return ListPropertiesOfKeyVersionsResponse{ - NextLink: i.NextLink, - Keys: keys, +// listDeletedKeysHandleResponse handles the ListDeletedKeys response. +func (client *Client) listDeletedKeysHandleResponse(resp *http.Response) (ListDeletedKeysResponse, error) { + result := ListDeletedKeysResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.DeletedKeyListResult); err != nil { + return ListDeletedKeysResponse{}, err } + return result, nil } -// NewListPropertiesOfKeyVersionsPager creates a pager that lists properties of a key's versions, not including key material. -func (c *Client) NewListPropertiesOfKeyVersionsPager(keyName string, options *ListPropertiesOfKeyVersionsOptions) *runtime.Pager[ListPropertiesOfKeyVersionsResponse] { - return runtime.NewPager(runtime.PagingHandler[ListPropertiesOfKeyVersionsResponse]{ - More: func(page ListPropertiesOfKeyVersionsResponse) bool { +// NewListKeyVersionsPager - The full key identifier, attributes, and tags are provided in the response. This operation requires +// the keys/list permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// options - ListKeyVersionsOptions contains the optional parameters for the Client.ListKeyVersions method. +func (client *Client) NewListKeyVersionsPager(name string, options *ListKeyVersionsOptions) *runtime.Pager[ListKeyVersionsResponse] { + return runtime.NewPager(runtime.PagingHandler[ListKeyVersionsResponse]{ + More: func(page ListKeyVersionsResponse) bool { return page.NextLink != nil && len(*page.NextLink) > 0 }, - Fetcher: func(ctx context.Context, page *ListPropertiesOfKeyVersionsResponse) (ListPropertiesOfKeyVersionsResponse, error) { + Fetcher: func(ctx context.Context, page *ListKeyVersionsResponse) (ListKeyVersionsResponse, error) { var req *policy.Request var err error if page == nil { - req, err = c.kvClient.GetKeyVersionsCreateRequest(ctx, c.vaultURL, keyName, options.toGenerated()) + req, err = client.listKeyVersionsCreateRequest(ctx, name, options) } else { req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) } if err != nil { - return ListPropertiesOfKeyVersionsResponse{}, err + return ListKeyVersionsResponse{}, err } - resp, err := c.kvClient.Pipeline().Do(req) + resp, err := client.pl.Do(req) if err != nil { - return ListPropertiesOfKeyVersionsResponse{}, err + return ListKeyVersionsResponse{}, err } if !runtime.HasStatusCode(resp, http.StatusOK) { - return ListPropertiesOfKeyVersionsResponse{}, runtime.NewResponseError(resp) + return ListKeyVersionsResponse{}, runtime.NewResponseError(resp) } - genResp, err := c.kvClient.GetKeyVersionsHandleResponse(resp) - if err != nil { - return ListPropertiesOfKeyVersionsResponse{}, runtime.NewResponseError(resp) - } - return listKeyVersionsPageFromGenerated(genResp), nil + return client.listKeyVersionsHandleResponse(resp) }, }) } -// RestoreKeyBackupOptions contains optional parameters for RestoreKey. -type RestoreKeyBackupOptions struct { - // placeholder for future optional parameters +// listKeyVersionsCreateRequest creates the ListKeyVersions request. +func (client *Client) listKeyVersionsCreateRequest(ctx context.Context, name string, options *ListKeyVersionsOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/versions" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + if options != nil && options.MaxResults != nil { + reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10)) + } + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -func (r RestoreKeyBackupOptions) toGenerated() *generated.KeyVaultClientRestoreKeyOptions { - return &generated.KeyVaultClientRestoreKeyOptions{} +// listKeyVersionsHandleResponse handles the ListKeyVersions response. +func (client *Client) listKeyVersionsHandleResponse(resp *http.Response) (ListKeyVersionsResponse, error) { + result := ListKeyVersionsResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyListResult); err != nil { + return ListKeyVersionsResponse{}, err + } + return result, nil } -// RestoreKeyBackupResponse is returned by RestoreKeyBackup. -type RestoreKeyBackupResponse struct { - Key +// NewListKeysPager - Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part +// of a stored key. The LIST operation is applicable to all key types, however only the base key +// identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. +// This operation requires the keys/list permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// options - ListKeysOptions contains the optional parameters for the Client.ListKeys method. +func (client *Client) NewListKeysPager(options *ListKeysOptions) *runtime.Pager[ListKeysResponse] { + return runtime.NewPager(runtime.PagingHandler[ListKeysResponse]{ + More: func(page ListKeysResponse) bool { + return page.NextLink != nil && len(*page.NextLink) > 0 + }, + Fetcher: func(ctx context.Context, page *ListKeysResponse) (ListKeysResponse, error) { + var req *policy.Request + var err error + if page == nil { + req, err = client.listKeysCreateRequest(ctx, options) + } else { + req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + } + if err != nil { + return ListKeysResponse{}, err + } + resp, err := client.pl.Do(req) + if err != nil { + return ListKeysResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusOK) { + return ListKeysResponse{}, runtime.NewResponseError(resp) + } + return client.listKeysHandleResponse(resp) + }, + }) } -// converts the generated response to the publicly exposed version. -func restoreKeyBackupResponseFromGenerated(g generated.KeyVaultClientRestoreKeyResponse) RestoreKeyBackupResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return RestoreKeyBackupResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// listKeysCreateRequest creates the ListKeys request. +func (client *Client) listKeysCreateRequest(ctx context.Context, options *ListKeysOptions) (*policy.Request, error) { + urlPath := "/keys" + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + if options != nil && options.MaxResults != nil { + reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10)) } + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// RestoreKeyBackup restores all versions of a backed up key to the vault. The keyBackup parameter is the bytes of a key backup as returned by BackupKey. -// Pass nil for options to accept default values. -func (c *Client) RestoreKeyBackup(ctx context.Context, keyBackup []byte, options *RestoreKeyBackupOptions) (RestoreKeyBackupResponse, error) { - if options == nil { - options = &RestoreKeyBackupOptions{} +// listKeysHandleResponse handles the ListKeys response. +func (client *Client) listKeysHandleResponse(resp *http.Response) (ListKeysResponse, error) { + result := ListKeysResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyListResult); err != nil { + return ListKeysResponse{}, err } + return result, nil +} - resp, err := c.kvClient.RestoreKey(ctx, c.vaultURL, generated.KeyRestoreParameters{KeyBundleBackup: keyBackup}, options.toGenerated()) +// PurgeDeletedKey - The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can +// be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. +// This operation requires the keys/purge permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key +// options - PurgeDeletedKeyOptions contains the optional parameters for the Client.PurgeDeletedKey method. +func (client *Client) PurgeDeletedKey(ctx context.Context, name string, options *PurgeDeletedKeyOptions) (PurgeDeletedKeyResponse, error) { + req, err := client.purgeDeletedKeyCreateRequest(ctx, name, options) if err != nil { - return RestoreKeyBackupResponse{}, err + return PurgeDeletedKeyResponse{}, err } - - return restoreKeyBackupResponseFromGenerated(resp), nil -} - -// ImportKeyOptions contains optional parameters for ImportKeyOptions. -type ImportKeyOptions struct { - // HardwareProtected determines whether Key Vault protects the imported key with an HSM. - HardwareProtected *bool - - // Properties is the properties of the key. - Properties *Properties + resp, err := client.pl.Do(req) + if err != nil { + return PurgeDeletedKeyResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusNoContent) { + return PurgeDeletedKeyResponse{}, runtime.NewResponseError(resp) + } + return PurgeDeletedKeyResponse{}, nil } -func (i ImportKeyOptions) toImportKeyParameters(key JSONWebKey) generated.KeyImportParameters { - var attribs *generated.KeyAttributes - if i.Properties != nil { - attribs = i.Properties.toGenerated() +// purgeDeletedKeyCreateRequest creates the PurgeDeletedKey request. +func (client *Client) purgeDeletedKeyCreateRequest(ctx context.Context, name string, options *PurgeDeletedKeyOptions) (*policy.Request, error) { + urlPath := "/deletedkeys/{key-name}" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil +} + +// RecoverDeletedKey - The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It +// recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted +// key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation +// requires the keys/recover permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the deleted key. +// options - RecoverDeletedKeyOptions contains the optional parameters for the Client.RecoverDeletedKey method. +func (client *Client) RecoverDeletedKey(ctx context.Context, name string, options *RecoverDeletedKeyOptions) (RecoverDeletedKeyResponse, error) { + req, err := client.recoverDeletedKeyCreateRequest(ctx, name, options) + if err != nil { + return RecoverDeletedKeyResponse{}, err + } + resp, err := client.pl.Do(req) + if err != nil { + return RecoverDeletedKeyResponse{}, err } - return generated.KeyImportParameters{ - Key: key.toGenerated(), - Hsm: i.HardwareProtected, - KeyAttributes: attribs, + if !runtime.HasStatusCode(resp, http.StatusOK) { + return RecoverDeletedKeyResponse{}, runtime.NewResponseError(resp) } + return client.recoverDeletedKeyHandleResponse(resp) } -// ImportKeyResponse is returned by ImportKey. -type ImportKeyResponse struct { - Key +// recoverDeletedKeyCreateRequest creates the RecoverDeletedKey request. +func (client *Client) recoverDeletedKeyCreateRequest(ctx context.Context, name string, options *RecoverDeletedKeyOptions) (*policy.Request, error) { + urlPath := "/deletedkeys/{key-name}/recover" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// convert the generated response to the ImportKeyResponse -func importKeyResponseFromGenerated(g generated.KeyVaultClientImportKeyResponse) ImportKeyResponse { - vaultURL, name, version := shared.ParseID(g.Key.Kid) - return ImportKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(g.Attributes, g.Key.Kid, name, version, g.Managed, vaultURL, g.Tags, g.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(g.Key), - ID: g.Key.Kid, - Name: name, - }, +// recoverDeletedKeyHandleResponse handles the RecoverDeletedKey response. +func (client *Client) recoverDeletedKeyHandleResponse(resp *http.Response) (RecoverDeletedKeyResponse, error) { + result := RecoverDeletedKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return RecoverDeletedKeyResponse{}, err } + return result, nil } -// ImportKey imports a key into the vault. If the named key already exists, this creates a new version of the key. Pass nil for options to accept default values. -func (c *Client) ImportKey(ctx context.Context, name string, key JSONWebKey, options *ImportKeyOptions) (ImportKeyResponse, error) { - if options == nil { - options = &ImportKeyOptions{} +// Release - The release key operation is applicable to all key types. The target key must be marked exportable. This operation +// requires the keys/release permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key to get. +// version - Adding the version parameter retrieves a specific version of a key. +// parameters - The parameters for the key release operation. +// options - ReleaseOptions contains the optional parameters for the Client.Release method. +func (client *Client) Release(ctx context.Context, name string, version string, parameters ReleaseParameters, options *ReleaseOptions) (ReleaseResponse, error) { + req, err := client.releaseCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return ReleaseResponse{}, err } - - resp, err := c.kvClient.ImportKey(ctx, c.vaultURL, name, options.toImportKeyParameters(key), &generated.KeyVaultClientImportKeyOptions{}) + resp, err := client.pl.Do(req) if err != nil { - return ImportKeyResponse{}, err + return ReleaseResponse{}, err } - - return importKeyResponseFromGenerated(resp), nil + if !runtime.HasStatusCode(resp, http.StatusOK) { + return ReleaseResponse{}, runtime.NewResponseError(resp) + } + return client.releaseHandleResponse(resp) } -// GetRandomBytesOptions contains optional parameters for GetRandomBytes. -type GetRandomBytesOptions struct { - // placeholder for future optional parameters +// releaseCreateRequest creates the Release request. +func (client *Client) releaseCreateRequest(ctx context.Context, name string, version string, parameters ReleaseParameters, options *ReleaseOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/release" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) +} + +// releaseHandleResponse handles the Release response. +func (client *Client) releaseHandleResponse(resp *http.Response) (ReleaseResponse, error) { + result := ReleaseResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyReleaseResult); err != nil { + return ReleaseResponse{}, err + } + return result, nil +} + +// RestoreKey - Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes +// and access control policies. The RESTORE operation may be used to import a previously backed +// up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as +// it had when it was backed up. If the key name is not available in the target Key +// Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier +// will change if the key is restored to a different vault. Restore will restore all +// versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault +// must be owned by the same Microsoft Azure Subscription as the source Key Vault +// The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// parameters - The parameters to restore the key. +// options - RestoreKeyOptions contains the optional parameters for the Client.RestoreKey method. +func (client *Client) RestoreKey(ctx context.Context, parameters RestoreKeyParameters, options *RestoreKeyOptions) (RestoreKeyResponse, error) { + req, err := client.restoreKeyCreateRequest(ctx, parameters, options) + if err != nil { + return RestoreKeyResponse{}, err + } + resp, err := client.pl.Do(req) + if err != nil { + return RestoreKeyResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusOK) { + return RestoreKeyResponse{}, runtime.NewResponseError(resp) + } + return client.restoreKeyHandleResponse(resp) } -func (g GetRandomBytesOptions) toGenerated() *generated.KeyVaultClientGetRandomBytesOptions { - return &generated.KeyVaultClientGetRandomBytesOptions{} +// restoreKeyCreateRequest creates the RestoreKey request. +func (client *Client) restoreKeyCreateRequest(ctx context.Context, parameters RestoreKeyParameters, options *RestoreKeyOptions) (*policy.Request, error) { + urlPath := "/keys/restore" + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// GetRandomBytesResponse is returned by GetRandomBytes. -type GetRandomBytesResponse struct { - // Value is the random bytes. - Value []byte +// restoreKeyHandleResponse handles the RestoreKey response. +func (client *Client) restoreKeyHandleResponse(resp *http.Response) (RestoreKeyResponse, error) { + result := RestoreKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return RestoreKeyResponse{}, err + } + return result, nil } -// GetRandomBytes gets the requested number of random bytes from Azure Managed HSM. Pass nil for options to accept default values. -func (c *Client) GetRandomBytes(ctx context.Context, count *int32, options *GetRandomBytesOptions) (GetRandomBytesResponse, error) { - if options == nil { - options = &GetRandomBytesOptions{} +// RotateKey - The operation will rotate the key based on the key policy. It requires the keys/rotate permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of key to be rotated. The system will generate a new version in the specified key. +// options - RotateKeyOptions contains the optional parameters for the Client.RotateKey method. +func (client *Client) RotateKey(ctx context.Context, name string, options *RotateKeyOptions) (RotateKeyResponse, error) { + req, err := client.rotateKeyCreateRequest(ctx, name, options) + if err != nil { + return RotateKeyResponse{}, err } - - resp, err := c.kvClient.GetRandomBytes( - ctx, - c.vaultURL, - generated.GetRandomBytesRequest{Count: count}, - options.toGenerated(), - ) - + resp, err := client.pl.Do(req) if err != nil { - return GetRandomBytesResponse{}, err + return RotateKeyResponse{}, err } - - return GetRandomBytesResponse{ - Value: resp.Value, - }, nil -} - -// RotateKeyOptions contains optional parameters for RotateKey. -type RotateKeyOptions struct { - // placeholder for future optional parameters + if !runtime.HasStatusCode(resp, http.StatusOK) { + return RotateKeyResponse{}, runtime.NewResponseError(resp) + } + return client.rotateKeyHandleResponse(resp) } -func (r RotateKeyOptions) toGenerated() *generated.KeyVaultClientRotateKeyOptions { - return &generated.KeyVaultClientRotateKeyOptions{} +// rotateKeyCreateRequest creates the RotateKey request. +func (client *Client) rotateKeyCreateRequest(ctx context.Context, name string, options *RotateKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/rotate" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil } -// RotateKeyResponse is returned by RotateKey. -type RotateKeyResponse struct { - Key +// rotateKeyHandleResponse handles the RotateKey response. +func (client *Client) rotateKeyHandleResponse(resp *http.Response) (RotateKeyResponse, error) { + result := RotateKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return RotateKeyResponse{}, err + } + return result, nil } -// RotateKey rotates a key based on the key's rotation policy, creating a new version in the specified key. Pass nil for options to accept default values. -func (c *Client) RotateKey(ctx context.Context, keyName string, options *RotateKeyOptions) (RotateKeyResponse, error) { - if options == nil { - options = &RotateKeyOptions{} +// Sign - The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation +// uses the private portion of the key. This operation requires the keys/sign permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// version - The version of the key. +// parameters - The parameters for the signing operation. +// options - SignOptions contains the optional parameters for the Client.Sign method. +func (client *Client) Sign(ctx context.Context, name string, version string, parameters SignParameters, options *SignOptions) (SignResponse, error) { + req, err := client.signCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return SignResponse{}, err } - - resp, err := c.kvClient.RotateKey( - ctx, - c.vaultURL, - keyName, - options.toGenerated(), - ) + resp, err := client.pl.Do(req) if err != nil { - return RotateKeyResponse{}, err + return SignResponse{}, err } - - vaultURL, name, version := shared.ParseID(resp.Key.Kid) - return RotateKeyResponse{ - Key: Key{ - Properties: keyPropertiesFromGenerated(resp.Attributes, resp.Key.Kid, name, version, resp.Managed, vaultURL, resp.Tags, resp.ReleasePolicy), - JSONWebKey: jsonWebKeyFromGenerated(resp.Key), - ID: resp.Key.Kid, - Name: name, - }, - }, nil + if !runtime.HasStatusCode(resp, http.StatusOK) { + return SignResponse{}, runtime.NewResponseError(resp) + } + return client.signHandleResponse(resp) } -// GetKeyRotationPolicyOptions contains optional parameters for GetKeyRotationPolicy. -type GetKeyRotationPolicyOptions struct { - // placeholder for future optional parameters +// signCreateRequest creates the Sign request. +func (client *Client) signCreateRequest(ctx context.Context, name string, version string, parameters SignParameters, options *SignOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/sign" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) +} + +// signHandleResponse handles the Sign response. +func (client *Client) signHandleResponse(resp *http.Response) (SignResponse, error) { + result := SignResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { + return SignResponse{}, err + } + return result, nil +} + +// UnwrapKey - The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation +// is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and +// symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey +// permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// version - The version of the key. +// parameters - The parameters for the key operation. +// options - UnwrapKeyOptions contains the optional parameters for the Client.UnwrapKey method. +func (client *Client) UnwrapKey(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *UnwrapKeyOptions) (UnwrapKeyResponse, error) { + req, err := client.unwrapKeyCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return UnwrapKeyResponse{}, err + } + resp, err := client.pl.Do(req) + if err != nil { + return UnwrapKeyResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusOK) { + return UnwrapKeyResponse{}, runtime.NewResponseError(resp) + } + return client.unwrapKeyHandleResponse(resp) } -func (g GetKeyRotationPolicyOptions) toGenerated() *generated.KeyVaultClientGetKeyRotationPolicyOptions { - return &generated.KeyVaultClientGetKeyRotationPolicyOptions{} +// unwrapKeyCreateRequest creates the UnwrapKey request. +func (client *Client) unwrapKeyCreateRequest(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *UnwrapKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/unwrapkey" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// GetKeyRotationPolicyResponse is returned by GetKeyRotationPolicy. -type GetKeyRotationPolicyResponse struct { - RotationPolicy +// unwrapKeyHandleResponse handles the UnwrapKey response. +func (client *Client) unwrapKeyHandleResponse(resp *http.Response) (UnwrapKeyResponse, error) { + result := UnwrapKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { + return UnwrapKeyResponse{}, err + } + return result, nil } -func getKeyRotationPolicyResponseFromGenerated(i generated.KeyVaultClientGetKeyRotationPolicyResponse) GetKeyRotationPolicyResponse { - var acts []*LifetimeActions - for _, a := range i.LifetimeActions { - acts = append(acts, lifetimeActionsFromGenerated(a)) +// UpdateKey - In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material +// of a key itself cannot be changed. This operation requires the keys/update permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of key to update. +// version - The version of the key to update. +// parameters - The parameters of the key to update. +// options - UpdateKeyOptions contains the optional parameters for the Client.UpdateKey method. +func (client *Client) UpdateKey(ctx context.Context, name string, version string, parameters UpdateKeyParameters, options *UpdateKeyOptions) (UpdateKeyResponse, error) { + req, err := client.updateKeyCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return UpdateKeyResponse{}, err } - var attribs *RotationPolicyAttributes - if i.Attributes != nil { - attribs = &RotationPolicyAttributes{ - ExpiresIn: i.Attributes.ExpiryTime, - CreatedOn: i.Attributes.Created, - UpdatedOn: i.Attributes.Updated, - } + resp, err := client.pl.Do(req) + if err != nil { + return UpdateKeyResponse{}, err } - return GetKeyRotationPolicyResponse{ - RotationPolicy: RotationPolicy{ - ID: i.ID, - LifetimeActions: acts, - Attributes: attribs, - }, + if !runtime.HasStatusCode(resp, http.StatusOK) { + return UpdateKeyResponse{}, runtime.NewResponseError(resp) } + return client.updateKeyHandleResponse(resp) } -// GetKeyRotationPolicy gets the specified key's rotation policy. Pass nil for options to accept default values. -func (c *Client) GetKeyRotationPolicy(ctx context.Context, keyName string, options *GetKeyRotationPolicyOptions) (GetKeyRotationPolicyResponse, error) { - if options == nil { - options = &GetKeyRotationPolicyOptions{} +// updateKeyCreateRequest creates the UpdateKey request. +func (client *Client) updateKeyCreateRequest(ctx context.Context, name string, version string, parameters UpdateKeyParameters, options *UpdateKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - - resp, err := c.kvClient.GetKeyRotationPolicy( - ctx, - c.vaultURL, - keyName, - options.toGenerated(), - ) + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(client.endpoint, urlPath)) if err != nil { - return GetKeyRotationPolicyResponse{}, err + return nil, err } - - return getKeyRotationPolicyResponseFromGenerated(resp), nil + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) } -// ReleaseKeyOptions contains optional parameters for Client.ReleaseKey. -type ReleaseKeyOptions struct { - // Version is the version of the key to release - Version *string - - // Algorithm is the encryption algorithm used to protected exported key material. - Algorithm *ExportEncryptionAlg - - // Nonce is client-provided nonce for freshness. - Nonce *string -} - -// ReleaseKeyResponse is returned by ReleaseKey. -type ReleaseKeyResponse struct { - // Value is a signed token containing the released key. - Value *string +// updateKeyHandleResponse handles the UpdateKey response. +func (client *Client) updateKeyHandleResponse(resp *http.Response) (UpdateKeyResponse, error) { + result := UpdateKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return UpdateKeyResponse{}, err + } + return result, nil } -// ReleaseKey is applicable to all key types. The target key must be exportable. Pass nil for options to accept default values. -func (c *Client) ReleaseKey(ctx context.Context, name string, targetAttestationToken string, options *ReleaseKeyOptions) (ReleaseKeyResponse, error) { - if options == nil { - options = &ReleaseKeyOptions{} - } - version := "" - if options.Version != nil { - version = *options.Version +// UpdateKeyRotationPolicy - Set specified members in the key policy. Leave others as undefined. This operation requires the +// keys/update permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key in the given vault. +// keyRotationPolicy - The policy for the key. +// options - UpdateKeyRotationPolicyOptions contains the optional parameters for the Client.UpdateKeyRotationPolicy +// method. +func (client *Client) UpdateKeyRotationPolicy(ctx context.Context, name string, keyRotationPolicy KeyRotationPolicy, options *UpdateKeyRotationPolicyOptions) (UpdateKeyRotationPolicyResponse, error) { + req, err := client.updateKeyRotationPolicyCreateRequest(ctx, name, keyRotationPolicy, options) + if err != nil { + return UpdateKeyRotationPolicyResponse{}, err } - resp, err := c.kvClient.Release( - ctx, - c.vaultURL, - name, - version, - generated.KeyReleaseParameters{ - TargetAttestationToken: &targetAttestationToken, - Enc: (*generated.KeyEncryptionAlgorithm)(options.Algorithm), - Nonce: options.Nonce, - }, - &generated.KeyVaultClientReleaseOptions{}, - ) - + resp, err := client.pl.Do(req) if err != nil { - return ReleaseKeyResponse{}, err + return UpdateKeyRotationPolicyResponse{}, err } - - return ReleaseKeyResponse{ - Value: resp.Value, - }, err + if !runtime.HasStatusCode(resp, http.StatusOK) { + return UpdateKeyRotationPolicyResponse{}, runtime.NewResponseError(resp) + } + return client.updateKeyRotationPolicyHandleResponse(resp) } -// UpdateKeyRotationPolicyOptions contains optional parameters for UpdateKeyRotationPolicy. -type UpdateKeyRotationPolicyOptions struct { - // placeholder for future optional parameters +// updateKeyRotationPolicyCreateRequest creates the UpdateKeyRotationPolicy request. +func (client *Client) updateKeyRotationPolicyCreateRequest(ctx context.Context, name string, keyRotationPolicy KeyRotationPolicy, options *UpdateKeyRotationPolicyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/rotationpolicy" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, keyRotationPolicy) } -// UpdateKeyRotationPolicyResponse is returned by UpdateKeyRotationPolicy. -type UpdateKeyRotationPolicyResponse struct { - RotationPolicy +// updateKeyRotationPolicyHandleResponse handles the UpdateKeyRotationPolicy response. +func (client *Client) updateKeyRotationPolicyHandleResponse(resp *http.Response) (UpdateKeyRotationPolicyResponse, error) { + result := UpdateKeyRotationPolicyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyRotationPolicy); err != nil { + return UpdateKeyRotationPolicyResponse{}, err + } + return result, nil +} + +// Verify - The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary +// for asymmetric keys stored in Azure Key Vault since signature verification can be +// performed using the public portion of the key but this operation is supported as a convenience for callers that only have +// a key-reference and not the public portion of the key. This operation requires +// the keys/verify permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// version - The version of the key. +// parameters - The parameters for verify operations. +// options - VerifyOptions contains the optional parameters for the Client.Verify method. +func (client *Client) Verify(ctx context.Context, name string, version string, parameters VerifyParameters, options *VerifyOptions) (VerifyResponse, error) { + req, err := client.verifyCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return VerifyResponse{}, err + } + resp, err := client.pl.Do(req) + if err != nil { + return VerifyResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusOK) { + return VerifyResponse{}, runtime.NewResponseError(resp) + } + return client.verifyHandleResponse(resp) } -func updateKeyRotationPolicyResponseFromGenerated(i generated.KeyVaultClientUpdateKeyRotationPolicyResponse) UpdateKeyRotationPolicyResponse { - var acts []*LifetimeActions - for _, a := range i.LifetimeActions { - acts = append(acts, lifetimeActionsFromGenerated(a)) +// verifyCreateRequest creates the Verify request. +func (client *Client) verifyCreateRequest(ctx context.Context, name string, version string, parameters VerifyParameters, options *VerifyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/verify" + if name == "" { + return nil, errors.New("parameter name cannot be empty") } - var attribs *RotationPolicyAttributes - if i.Attributes != nil { - attribs = &RotationPolicyAttributes{ - ExpiresIn: i.Attributes.ExpiryTime, - CreatedOn: i.Attributes.Created, - UpdatedOn: i.Attributes.Updated, - } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) + if err != nil { + return nil, err } - return UpdateKeyRotationPolicyResponse{ - RotationPolicy: RotationPolicy{ - ID: i.ID, - LifetimeActions: acts, - Attributes: attribs, - }, + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) +} + +// verifyHandleResponse handles the Verify response. +func (client *Client) verifyHandleResponse(resp *http.Response) (VerifyResponse, error) { + result := VerifyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyVerifyResult); err != nil { + return VerifyResponse{}, err + } + return result, nil +} + +// WrapKey - The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been +// stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric +// keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the +// key. This operation is supported for asymmetric keys as a convenience for +// callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey +// permission. +// If the operation fails it returns an *azcore.ResponseError type. +// Generated from API version 7.3 +// name - The name of the key. +// version - The version of the key. +// parameters - The parameters for wrap operation. +// options - WrapKeyOptions contains the optional parameters for the Client.WrapKey method. +func (client *Client) WrapKey(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *WrapKeyOptions) (WrapKeyResponse, error) { + req, err := client.wrapKeyCreateRequest(ctx, name, version, parameters, options) + if err != nil { + return WrapKeyResponse{}, err + } + resp, err := client.pl.Do(req) + if err != nil { + return WrapKeyResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusOK) { + return WrapKeyResponse{}, runtime.NewResponseError(resp) } + return client.wrapKeyHandleResponse(resp) } -// UpdateKeyRotationPolicy updates the key's rotation policy. Pass nil for options to accept default values. -func (c *Client) UpdateKeyRotationPolicy(ctx context.Context, keyName string, policy RotationPolicy, options *UpdateKeyRotationPolicyOptions) (UpdateKeyRotationPolicyResponse, error) { - resp, err := c.kvClient.UpdateKeyRotationPolicy( - ctx, - c.vaultURL, - keyName, - policy.toGenerated(), - &generated.KeyVaultClientUpdateKeyRotationPolicyOptions{}, - ) - +// wrapKeyCreateRequest creates the WrapKey request. +func (client *Client) wrapKeyCreateRequest(ctx context.Context, name string, version string, parameters KeyOperationsParameters, options *WrapKeyOptions) (*policy.Request, error) { + urlPath := "/keys/{key-name}/{key-version}/wrapkey" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.endpoint, urlPath)) if err != nil { - return UpdateKeyRotationPolicyResponse{}, err + return nil, err } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.3") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, runtime.MarshalAsJSON(req, parameters) +} - return updateKeyRotationPolicyResponseFromGenerated(resp), nil +// wrapKeyHandleResponse handles the WrapKey response. +func (client *Client) wrapKeyHandleResponse(resp *http.Response) (WrapKeyResponse, error) { + result := WrapKeyResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { + return WrapKeyResponse{}, err + } + return result, nil } diff --git a/sdk/keyvault/azkeys/client_test.go b/sdk/keyvault/azkeys/client_test.go index bb38d1464455..0946ed3fe278 100644 --- a/sdk/keyvault/azkeys/client_test.go +++ b/sdk/keyvault/azkeys/client_test.go @@ -4,927 +4,678 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -package azkeys +package azkeys_test import ( "context" "crypto/sha256" "encoding/json" + "errors" "fmt" "net/http" "strings" "testing" "time" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/crypto" + "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" "github.com/stretchr/testify/require" ) -var ctx = context.Background() - -const HSMTEST = "HSM" -const REGULARTEST = "NON-HSM" -const INVALIDKEYNAME = "key!@#$%" - -var testTypes = []string{REGULARTEST, HSMTEST} - -func TestConstructor(t *testing.T) { - client, err := NewClient("https://fakekvurl.vault.azure.net/", &FakeCredential{}, nil) +// pollStatus calls a function until it stops returning a response error with the given status code. +// If this takes more than 2 minutes, it fails the test. +func pollStatus(t *testing.T, expectedStatus int, fn func() error) { + var err error + for i := 0; i < 12; i++ { + err = fn() + var respErr *azcore.ResponseError + if !(errors.As(err, &respErr) && respErr.StatusCode == expectedStatus) { + break + } + if i < 11 { + recording.Sleep(10 * time.Second) + } + } require.NoError(t, err) - require.NotNil(t, client.kvClient) } -func TestCreateKeyRSA(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) - - resp, err := client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - validateKey(t, to.Ptr(resp.Key)) - - resp2, err := client.CreateRSAKey(ctx, key+"hsm", &CreateRSAKeyOptions{HardwareProtected: to.Ptr(true)}) - require.NoError(t, err) - validateKey(t, to.Ptr(resp2.Key)) - - cleanUpKey(t, client, key) - cleanUpKey(t, client, key+"hsm") - - invalid, err := client.CreateRSAKey(ctx, "invalidName!@#$", nil) - require.Error(t, err) - require.Nil(t, invalid.Key.Properties) - }) +func requireEqualAttributes(t *testing.T, a, b *azkeys.KeyAttributes) { + if a == nil || b == nil { + require.Equal(t, a, b) + return } + require.Equal(t, a.Created, b.Created) + require.Equal(t, a.Enabled, b.Enabled) + require.Equal(t, a.Expires, b.Expires) + require.Equal(t, a.Exportable, b.Exportable) + require.Equal(t, a.NotBefore, b.NotBefore) + require.Equal(t, a.RecoverableDays, b.RecoverableDays) + require.Equal(t, a.RecoveryLevel, b.RecoveryLevel) + require.Equal(t, a.Updated, b.Updated) } -func TestCreateKeyRSATags(t *testing.T) { - startTest(t, REGULARTEST) - - client, err := createClient(t, REGULARTEST) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) +type serdeModel interface { + json.Marshaler + json.Unmarshaler +} - resp, err := client.CreateRSAKey(ctx, key, &CreateRSAKeyOptions{ - Tags: map[string]*string{ - "Tag1": to.Ptr("Val1"), - }, - }) - defer cleanUpKey(t, client, key) +func testSerde[T serdeModel](t *testing.T, model T) { + data, err := model.MarshalJSON() require.NoError(t, err) - validateKey(t, to.Ptr(resp.Key)) - require.Equal(t, 1, len(resp.Key.Properties.Tags)) - - resp.Key.Properties.Tags = map[string]*string{} - // Remove the tag - resp2, err := client.UpdateKeyProperties(ctx, *resp.Key.Properties, nil) + err = model.UnmarshalJSON(data) require.NoError(t, err) - require.Equal(t, 0, len(resp2.Properties.Tags)) - validateKey(t, &resp2.Key) } -func TestCreateECKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) +func TestBackupRestore(t *testing.T) { + name := "KV" + for _, mhsm := range []bool{false, true} { + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) - client, err := createClient(t, testType) + keyName := createRandomName(t, "testbackuprestore") + createResp, err := client.CreateKey(context.Background(), keyName, azkeys.CreateKeyParameters{Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA)}, nil) require.NoError(t, err) + require.Equal(t, keyName, createResp.Key.KID.Name()) + require.NotEmpty(t, createResp.Key.KID.Version()) + require.NotNil(t, createResp.Attributes) + require.NotNil(t, createResp.Key) - key, err := createRandomName(t, "key") + backupResp, err := client.BackupKey(context.Background(), keyName, nil) require.NoError(t, err) + require.NotEmpty(t, backupResp.Value) - resp, err := client.CreateECKey(ctx, key, nil) + deleteResp, err := client.DeleteKey(context.Background(), keyName, nil) require.NoError(t, err) - validateKey(t, to.Ptr(resp.Key)) - - invalid, err := client.CreateECKey(ctx, "key!@#$", nil) - require.Error(t, err) - require.Nil(t, invalid.Key.Properties) - - cleanUpKey(t, client, key) - }) - } -} - -func TestCreateOCTKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) + require.Equal(t, createResp.Key.KID.Name(), deleteResp.Key.KID.Name()) + require.Equal(t, createResp.Key.KID.Version(), deleteResp.Key.KID.Version()) + requireEqualAttributes(t, createResp.Attributes, deleteResp.Attributes) + require.NotNil(t, deleteResp.Key) + require.NotEmpty(t, deleteResp.RecoveryID) + require.NotEmpty(t, deleteResp.ScheduledPurgeDate) + pollStatus(t, 404, func() error { + _, err := client.GetDeletedKey(context.Background(), keyName, nil) + return err + }) - client, err := createClient(t, testType) + _, err = client.PurgeDeletedKey(context.Background(), keyName, nil) require.NoError(t, err) - key, err := createRandomName(t, "key") + var restoreResp azkeys.RestoreKeyResponse + restoreParams := azkeys.RestoreKeyParameters{KeyBundleBackup: backupResp.Value} + pollStatus(t, 409, func() error { + restoreResp, err = client.RestoreKey(context.Background(), restoreParams, nil) + return err + }) require.NoError(t, err) + defer cleanUpKey(t, client, restoreResp.Key.KID) + require.NotNil(t, restoreResp.Key) + testSerde(t, &restoreParams) - resp, err := client.CreateOctKey(ctx, key, &CreateOctKeyOptions{ - Size: to.Ptr(int32(256)), - HardwareProtected: to.Ptr(true)}, - ) - - if testType == REGULARTEST { - require.Error(t, err) - } else { - require.NoError(t, err) - validateKey(t, to.Ptr(resp.Key)) - - cleanUpKey(t, client, key) - } + getResp, err := client.GetKey(context.Background(), keyName, "", nil) + require.NoError(t, err) + require.Equal(t, restoreResp.Attributes, getResp.Attributes) + require.Equal(t, createResp.Key.KID.Name(), getResp.Key.KID.Name()) + require.Equal(t, createResp.Key.KID.Version(), getResp.Key.KID.Version()) }) } } -func TestListKeys(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - for i := 0; i < 4; i++ { - key, err := createRandomName(t, fmt.Sprintf("key-%d", i)) - require.NoError(t, err) +func TestCRUD(t *testing.T) { + attributes := &azkeys.KeyAttributes{ + Expires: to.Ptr(time.Date(2050, 1, 1, 1, 1, 1, 0, time.UTC)), + NotBefore: to.Ptr(time.Date(2040, 1, 1, 1, 1, 1, 0, time.UTC)), + } + tags := map[string]*string{"key": to.Ptr("value")} + for _, mhsm := range []bool{false, true} { + for _, params := range []azkeys.CreateKeyParameters{ + { + Kty: to.Ptr(azkeys.JSONWebKeyTypeEC), + Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256K), + KeyAttributes: attributes, + Tags: tags, + }, + { + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA), + KeyAttributes: attributes, + KeySize: to.Ptr(int32(2048)), + PublicExponent: to.Ptr(int32(65537)), + Tags: tags, + }, + } { + testSerde(t, ¶ms) + name := string(*params.Kty) + if mhsm { + name += "_MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) - _, err = client.CreateKey(ctx, key, KeyTypeRSA, nil) + keyName := createRandomName(t, "testcrud") + createResp, err := client.CreateKey(context.Background(), keyName, params, nil) require.NoError(t, err) - } + require.Equal(t, keyName, createResp.Key.KID.Name()) + require.NotEmpty(t, createResp.Key.KID.Version()) + require.NotNil(t, createResp.Attributes) + require.NotNil(t, createResp.Key) + require.True(t, *createResp.Attributes.Enabled) - pager := client.NewListPropertiesOfKeysPager(nil) - count := 0 - for pager.More() { - resp, err := pager.NextPage(ctx) + getResp, err := client.GetKey(context.Background(), keyName, "", nil) require.NoError(t, err) - count += len(resp.Keys) - for _, key := range resp.Keys { - require.NotNil(t, key) + requireEqualAttributes(t, createResp.Attributes, getResp.Attributes) + require.Equal(t, createResp.Key.KID.Name(), getResp.Key.KID.Name()) + require.Equal(t, createResp.Key.KID.Version(), getResp.Key.KID.Version()) + testSerde(t, &getResp.KeyBundle) + + updateParams := azkeys.UpdateKeyParameters{ + KeyAttributes: &azkeys.KeyAttributes{ + Enabled: to.Ptr(false), + }, } - } - require.GreaterOrEqual(t, count, 4) - - for i := 0; i < 4; i++ { - key, err := createRandomName(t, fmt.Sprintf("key-%d", i)) + testSerde(t, &updateParams) + updateResp, err := client.UpdateKey(context.Background(), keyName, createResp.Key.KID.Version(), updateParams, nil) require.NoError(t, err) - cleanUpKey(t, client, key) - } - }) - } -} - -func TestGetKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) + require.Equal(t, createResp.Key.KID.Name(), updateResp.Key.KID.Name()) + require.Equal(t, createResp.Key.KID.Version(), updateResp.Key.KID.Version()) + require.False(t, *updateResp.Attributes.Enabled) - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) - - r, err := client.CreateKey(ctx, key, KeyTypeRSA, nil) - require.NoError(t, err) - validateKey(t, to.Ptr(r.Key)) - - resp, err := client.GetKey(ctx, key, nil) - require.NoError(t, err) - validateKey(t, to.Ptr(resp.Key)) + deleteResp, err := client.DeleteKey(context.Background(), keyName, nil) + require.NoError(t, err) + require.Equal(t, createResp.Key.KID.Name(), deleteResp.Key.KID.Name()) + require.Equal(t, createResp.Key.KID.Version(), deleteResp.Key.KID.Version()) + requireEqualAttributes(t, updateResp.Attributes, deleteResp.Attributes) + testSerde(t, &deleteResp.DeletedKeyBundle) + pollStatus(t, 404, func() error { + _, err := client.GetDeletedKey(context.Background(), keyName, nil) + return err + }) - invalid, err := client.CreateKey(ctx, "invalidkey[]()", KeyTypeRSA, nil) - require.Error(t, err) - require.Nil(t, invalid.Key.Properties) - }) + _, err = client.PurgeDeletedKey(context.Background(), keyName, nil) + require.NoError(t, err) + }) + } } } -func TestDeleteKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - r, err := client.CreateKey(ctx, key, KeyTypeRSA, nil) - require.NoError(t, err) - validateKey(t, to.Ptr(r.Key)) +func TestEncryptDecrypt(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) - poller, err := client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - deleteResp, err := poller.PollUntilDone(ctx, delay()) + keyName := createRandomName(t, "key") + createParams := azkeys.CreateKeyParameters{ + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSAHSM), + KeyOps: to.SliceOfPtrs(azkeys.JSONWebKeyOperationEncrypt, azkeys.JSONWebKeyOperationDecrypt), + } + createResp, err := client.CreateKey(context.Background(), keyName, createParams, nil) require.NoError(t, err) - require.NotNil(t, deleteResp.Key) - require.NotNil(t, deleteResp.Key.ID) - - _, err = client.GetKey(ctx, key, nil) - require.Error(t, err) - _, err = client.PurgeDeletedKey(ctx, key, nil) + encryptParams := azkeys.KeyOperationsParameters{ + Algorithm: to.Ptr(azkeys.JSONWebKeyEncryptionAlgorithmRSAOAEP256), + Value: []byte("plaintext"), + } + testSerde(t, &encryptParams) + encryptResponse, err := client.Encrypt(context.Background(), keyName, createResp.Key.KID.Version(), encryptParams, nil) require.NoError(t, err) + require.NotEmpty(t, encryptResponse.Result) + testSerde(t, &encryptResponse.KeyOperationResult) - for i := 0; i < 5; i++ { - _, err = client.GetDeletedKey(ctx, key, nil) - if err != nil { - break - } - require.NoError(t, err) - recording.Sleep(time.Second * 2) + decryptParams := azkeys.KeyOperationsParameters{ + Algorithm: encryptParams.Algorithm, + Value: encryptResponse.Result, } - - _, err = client.GetDeletedKey(ctx, key, nil) - require.Error(t, err) - - _, err = poller.Result(ctx) + testSerde(t, &decryptParams) + decryptResponse, err := client.Decrypt(context.Background(), keyName, "", decryptParams, nil) require.NoError(t, err) - - _, err = client.BeginDeleteKey(ctx, "nonexistent", nil) - require.Error(t, err) + require.Equal(t, decryptResponse.Result, encryptParams.Value) + testSerde(t, &encryptResponse.KeyOperationResult) }) } } -func TestBeginDeleteKeyRehydrate(t *testing.T) { - startTest(t, REGULARTEST) - - client, err := createClient(t, testTypes[0]) - require.NoError(t, err) - - key, err := createRandomName(t, "rehydrate-poller") - require.NoError(t, err) +func TestEncryptDecryptSymmetric(t *testing.T) { + client := startTest(t, true) - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - - defer cleanUpKey(t, client, key) - - deletePoller, err := client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - - rt, err := deletePoller.ResumeToken() - require.NoError(t, err) - - rehydrated, err := client.BeginDeleteKey(ctx, key, &BeginDeleteKeyOptions{ResumeToken: rt}) - require.NoError(t, err) - - _, err = rehydrated.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - // Validate key is not get-able - _, err = client.GetKey(ctx, key, nil) - require.Error(t, err) - - // Recover deleted - recover, err := client.BeginRecoverDeletedKey(ctx, key, nil) - require.NoError(t, err) - - rt, err = recover.ResumeToken() - require.NoError(t, err) - - rehydratedRecover, err := client.BeginRecoverDeletedKey(ctx, key, &BeginRecoverDeletedKeyOptions{ResumeToken: rt}) + keyName := createRandomName(t, "key") + createParams := azkeys.CreateKeyParameters{ + Kty: to.Ptr(azkeys.JSONWebKeyTypeOct), + KeyOps: to.SliceOfPtrs(azkeys.JSONWebKeyOperationEncrypt, azkeys.JSONWebKeyOperationDecrypt), + KeySize: to.Ptr(int32(256)), + } + createResp, err := client.CreateKey(context.Background(), keyName, createParams, nil) require.NoError(t, err) - _, err = rehydratedRecover.PollUntilDone(ctx, delay()) + encryptParams := azkeys.KeyOperationsParameters{ + Algorithm: to.Ptr(azkeys.JSONWebKeyEncryptionAlgorithmA256CBCPAD), + // IV must be random in real usage. This value is static only to ensure it matches in playback. + IV: []byte("0123456789ABCDEF"), + Value: []byte("plaintext"), + } + testSerde(t, &encryptParams) + encryptResponse, err := client.Encrypt(context.Background(), keyName, createResp.Key.KID.Version(), encryptParams, nil) require.NoError(t, err) + require.NotEmpty(t, encryptResponse.Result) - _, err = client.GetKey(ctx, key, nil) + decryptParams := azkeys.KeyOperationsParameters{ + Algorithm: encryptParams.Algorithm, + IV: encryptResponse.IV, + Value: encryptResponse.Result, + } + testSerde(t, &decryptParams) + decryptResponse, err := client.Decrypt(context.Background(), keyName, "", decryptParams, nil) require.NoError(t, err) + require.Equal(t, decryptResponse.Result, encryptParams.Value) } -func TestBackupKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "backup-key") - require.NoError(t, err) - - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - - defer cleanUpKey(t, client, key) - - backupResp, err := client.BackupKey(ctx, key, nil) - require.NoError(t, err) - require.Greater(t, len(backupResp.Value), 0) - - respPoller, err := client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - _, err = respPoller.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - _, err = client.PurgeDeletedKey(ctx, key, nil) - require.NoError(t, err) - - const retries = 5 - for i := 0; i < retries; i++ { - // unfortunately purging a deleted key is non-deterministic so we - // need to retry until we either succeed or hit the retry cap. - restoreResp, err := client.RestoreKeyBackup(ctx, backupResp.Value, nil) - if err != nil && i+1 == retries { - t.Fatal("retry limit reached") - } else if err != nil { - if recording.GetRecordMode() != recording.PlaybackMode { - time.Sleep(time.Minute) - } - continue - } - require.NoError(t, err) - require.NotNil(t, restoreResp.Key) - break - } - - // Now the Key should be Get-able - _, err = client.GetKey(ctx, key, nil) - require.NoError(t, err) - - // confirm invalid response - invalidResp, err := client.BackupKey(ctx, INVALIDKEYNAME, nil) - require.Error(t, err) - require.Equal(t, 0, len(invalidResp.Value)) - - // confirm invalid restore key backup - _, err = client.RestoreKeyBackup(ctx, []byte("doesnotexist"), nil) - require.Error(t, err) - }) - } +func TestGetRandomBytes(t *testing.T) { + client := startTest(t, true) + req := azkeys.GetRandomBytesRequest{Count: to.Ptr(int32(100))} + testSerde(t, &req) + resp, err := client.GetRandomBytes(context.Background(), req, nil) + require.NoError(t, err) + require.Equal(t, 100, len(resp.Value)) + testSerde(t, &resp) } -func TestRecoverDeletedKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) - - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - - defer cleanUpKey(t, client, key) - - pollerResp, err := client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - - _, err = pollerResp.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - _, err = client.GetDeletedKey(ctx, key, nil) - require.NoError(t, err) - - resp, err := client.BeginRecoverDeletedKey(ctx, key, nil) - require.NoError(t, err) - - _, err = resp.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - getResp, err := client.GetKey(ctx, key, nil) - require.NoError(t, err) - require.NotNil(t, getResp.Key) - - _, err = client.BeginRecoverDeletedKey(ctx, "INVALIDKEYNAME", nil) - require.Error(t, err) +func TestID(t *testing.T) { + for _, test := range []struct{ ID, name, version string }{ + {"https://foo.vault.azure.net/keys/name/version", "name", "version"}, + {"https://foo.vault.azure.net/keys/name", "name", ""}, + } { + t.Run(test.ID, func(t *testing.T) { + ID := azkeys.ID(test.ID) + require.Equal(t, test.name, ID.Name()) + require.Equal(t, test.version, ID.Version()) }) } } -func TestUpdateKeyProperties(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) - - createResp, err := client.CreateRSAKey(ctx, key, &CreateRSAKeyOptions{ - Properties: &Properties{ - Enabled: to.Ptr(true), - ExpiresOn: to.Ptr(time.Date(2050, 2, 1, 0, 0, 0, 0, time.UTC)), - NotBefore: to.Ptr(time.Date(2050, 1, 1, 0, 0, 0, 0, time.UTC)), - }, - }) - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - expectedOps := []*Operation{to.Ptr(OperationUnwrapKey)} - expectedProps := Properties{ - Enabled: to.Ptr(false), - ExpiresOn: to.Ptr(createResp.Properties.ExpiresOn.Add(time.Hour)), - Name: createResp.Name, - NotBefore: to.Ptr(createResp.Properties.NotBefore.Add(time.Minute)), - Tags: map[string]*string{"Tag1": to.Ptr("Val1")}, +func TestImportKey(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) + jwk := &azkeys.JSONWebKey{ + KeyOps: to.SliceOfPtrs(string(azkeys.JSONWebKeyOperationEncrypt)), + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA), + N: toBytes("a0914d00234ac683b21b4c15d5bed887bdc959c2e57af54ae734e8f00720d775d275e455207e3784ceeb60a50a4655dd72a7a94d271e8ee8f7959a669ca6e775bf0e23badae991b4529d978528b4bd90521d32dd2656796ba82b6bbfc7668c8f5eeb5053747fd199319d29a8440d08f4412d527ff9311eda71825920b47b1c46b11ab3e91d7316407e89c7f340f7b85a34042ce51743b27d4718403d34c7b438af6181be05e4d11eb985d38253d7fe9bf53fc2f1b002d22d2d793fa79a504b6ab42d0492804d7071d727a06cf3a8893aa542b1503f832b296371b6707d4dc6e372f8fe67d8ded1c908fde45ce03bc086a71487fa75e43aa0e0679aa0d20efe35", t), + E: toBytes("10001", t), + D: toBytes("627c7d24668148fe2252c7fa649ea8a5a9ed44d75c766cda42b29b660e99404f0e862d4561a6c95af6a83d213e0a2244b03cd28576473215073785fb067f015da19084ade9f475e08b040a9a2c7ba00253bb8125508c9df140b75161d266be347a5e0f6900fe1d8bbf78ccc25eeb37e0c9d188d6e1fc15169ba4fe12276193d77790d2326928bd60d0d01d6ead8d6ac4861abadceec95358fd6689c50a1671a4a936d2376440a41445501da4e74bfb98f823bd19c45b94eb01d98fc0d2f284507f018ebd929b8180dbe6381fdd434bffb7800aaabdd973d55f9eaf9bb88a6ea7b28c2a80231e72de1ad244826d665582c2362761019de2e9f10cb8bcc2625649", t), + P: toBytes("00d1deac8d68ddd2c1fd52d5999655b2cf1565260de5269e43fd2a85f39280e1708ffff0682166cb6106ee5ea5e9ffd9f98d0becc9ff2cda2febc97259215ad84b9051e563e14a051dce438bc6541a24ac4f014cf9732d36ebfc1e61a00d82cbe412090f7793cfbd4b7605be133dfc3991f7e1bed5786f337de5036fc1e2df4cf3", t), + Q: toBytes("00c3dc66b641a9b73cd833bc439cd34fc6574465ab5b7e8a92d32595a224d56d911e74624225b48c15a670282a51c40d1dad4bc2e9a3c8dab0c76f10052dfb053bc6ed42c65288a8e8bace7a8881184323f94d7db17ea6dfba651218f931a93b8f738f3d8fd3f6ba218d35b96861a0f584b0ab88ddcf446b9815f4d287d83a3237", t), + DP: toBytes("00c9a159be7265cbbabc9afcc4967eb74fe58a4c4945431902d1142da599b760e03838f8cbd26b64324fea6bdc9338503f459793636e59b5361d1e6951e08ddb089e1b507be952a81fbeaf7e76890ea4f536e25505c3f648b1e88377dfc19b4c304e738dfca07211b792286a392a704d0f444c0a802539110b7f1f121c00cff0a9", t), + DQ: toBytes("00a0bd4c0a3d9f64436a082374b5caf2488bac1568696153a6a5e4cd85d186db31e2f58f024c617d29f37b4e6b54c97a1e25efec59c4d1fd3061ac33509ce8cae5c11f4cd2e83f41a8264f785e78dc0996076ee23dfdfc43d67c463afaa0180c4a718357f9a6f270d542479a0f213870e661fb950abca4a14ca290570ba7983347", t), + QI: toBytes("009fe7ae42e92bc04fcd5780464bd21d0c8ac0c599f9af020fde6ab0a7e7d1d39902f5d8fb6c614184c4c1b103fb46e94cd10a6c8a40f9991a1f28269f326435b6c50276fda6493353c650a833f724d80c7d522ba16c79f0eb61f672736b68fb8be3243d10943c4ab7028d09e76cfb5892222e38bc4d35585bf35a88cd68c73b07", t), } - resp, err := client.UpdateKeyProperties(ctx, expectedProps, &UpdateKeyPropertiesOptions{ - Operations: expectedOps, - }) - require.NoError(t, err) - require.Equal(t, expectedOps, resp.JSONWebKey.KeyOps) - require.Equal(t, *expectedProps.Enabled, *resp.Properties.Enabled) - require.Equal(t, *expectedProps.ExpiresOn, *resp.Properties.ExpiresOn) - require.Equal(t, *expectedProps.NotBefore, *resp.Properties.NotBefore) - require.Equal(t, expectedProps.Tags, resp.Properties.Tags) + params := azkeys.ImportKeyParameters{HSM: to.Ptr(true), Key: jwk} + testSerde(t, ¶ms) + resp, err := client.ImportKey(context.Background(), createRandomName(t, "testimport"), params, nil) + require.NoError(t, err) + defer cleanUpKey(t, client, resp.Key.KID) + require.Equal(t, jwk.KeyOps, resp.Key.KeyOps) + require.Equal(t, jwk.N, resp.Key.N) + require.Equal(t, jwk.E, resp.Key.E) }) } } -func TestUpdateKeyPropertiesPatchSemantics(t *testing.T) { - for _, testType := range testTypes { - t.Run(testType, func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "test-update-semantics") - require.NoError(t, err) - - expectedOps := []*Operation{to.Ptr(OperationVerify)} - expectedTags := map[string]*string{"tag": to.Ptr("value")} - createResp, err := client.CreateECKey(ctx, key, &CreateECKeyOptions{ - Operations: expectedOps, - Tags: expectedTags, - }) - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - // a no-op update shouldn't change properties set at creation - _, err = client.UpdateKeyProperties(ctx, Properties{Name: createResp.Name}, &UpdateKeyPropertiesOptions{}) - require.NoError(t, err) - - getResp, err := client.GetKey(ctx, key, nil) - require.NoError(t, err) - require.Equal(t, expectedOps, getResp.JSONWebKey.KeyOps) - require.Equal(t, expectedTags, getResp.Properties.Tags) - }) - } -} - -func TestUpdateKeyPropertiesImmutable(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "immuta") - require.NoError(t, err) - - // retry creating the release policy because Key Vault sometimes can't reach - // the fake attestation service we use in CI for several minutes after deployment - var createResp CreateRSAKeyResponse - for i := 0; i < 5; i++ { - createResp, err = client.CreateRSAKey(ctx, key, &CreateRSAKeyOptions{ - HardwareProtected: to.Ptr(true), - Properties: &Properties{ - Exportable: to.Ptr(true), - }, - ReleasePolicy: &ReleasePolicy{ - Immutable: to.Ptr(true), - EncodedPolicy: getMarshalledReleasePolicy(testAttestationURL), - }, - Operations: []*Operation{to.Ptr(OperationEncrypt), to.Ptr(OperationDecrypt)}, - }) - if err == nil { - break - } - if recording.GetRecordMode() != recording.PlaybackMode { - time.Sleep(time.Minute) - } +func TestListDeletedKeys(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) + count := 4 + keyNames := make([]string, count) + createParams := azkeys.CreateKeyParameters{ + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA), + Tags: map[string]*string{"count-this-key": to.Ptr("yes")}, } - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - createResp.Key.Properties.ReleasePolicy = &ReleasePolicy{ - Immutable: to.Ptr(true), - EncodedPolicy: getMarshalledReleasePolicy(fakeAttestationUrl), + for i := 0; i < len(keyNames); i++ { + n := createRandomName(t, fmt.Sprintf("listdeletedkeys%d", i)) + keyNames[i] = n + createResp, err := client.CreateKey(context.Background(), n, createParams, nil) + require.NoError(t, err) + cleanUpKey(t, client, createResp.Key.KID) } - createResp.Key.Properties.Enabled = to.Ptr(false) - if testType == HSMTEST { - // MHSM disallows updating the release policy for a specific version - createResp.Key.Properties.Version = nil + for i := 0; i < len(keyNames); i++ { + pollStatus(t, 404, func() error { + _, err := client.GetDeletedKey(context.Background(), keyNames[i], nil) + return err + }) } - - _, err = client.UpdateKeyProperties(ctx, *createResp.Key.Properties, nil) - require.Contains(t, strings.ToLower(err.Error()), "release policy cannot be modified") + pager := client.NewListDeletedKeysPager(&azkeys.ListDeletedKeysOptions{MaxResults: to.Ptr(int32(1))}) + for pager.More() { + resp, err := pager.NextPage(context.Background()) + require.NoError(t, err) + testSerde(t, &resp.DeletedKeyListResult) + for _, key := range resp.Value { + require.NotEmpty(t, key.Attributes) + require.NotNil(t, key.DeletedDate) + require.NotEmpty(t, key.KID.Name()) + require.NotNil(t, key.RecoveryID) + require.NotNil(t, key.ScheduledPurgeDate) + if strings.HasPrefix(key.KID.Name(), "listdeletedkeys") { + require.NotEmpty(t, key.Tags) + if *key.Tags["count-this-key"] == "yes" { + count-- + } + testSerde(t, key) + } + } + } + require.Equal(t, count, 0) }) } } -func TestListDeletedKeys(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "list-del-key0") - require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - pollerResp, err := client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - _, err = pollerResp.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - key, err = createRandomName(t, "list-del-key1") - require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - pollerResp, err = client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - _, err = pollerResp.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - key, err = createRandomName(t, "list-del-key2") - require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - defer cleanUpKey(t, client, key) - - pollerResp, err = client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - _, err = pollerResp.PollUntilDone(ctx, delay()) - require.NoError(t, err) - - pager := client.NewListDeletedKeysPager(nil) +func TestListKeys(t *testing.T) { + name := "KV" + for _, mhsm := range []bool{false, true} { + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) count := 0 - for pager.More() { - resp, err := pager.NextPage(ctx) + keyNamePrefix := "testlistkeys" + for i := 0; i < 4; i++ { + n := createRandomName(t, fmt.Sprintf("%s-%d", keyNamePrefix, i)) + resp, err := client.CreateKey(context.Background(), n, azkeys.CreateKeyParameters{Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA)}, nil) require.NoError(t, err) - count += len(resp.DeletedKeys) + defer cleanUpKey(t, client, resp.Key.KID) + count++ } - require.GreaterOrEqual(t, count, 3) + pager := client.NewListKeysPager(&azkeys.ListKeysOptions{MaxResults: to.Ptr(int32(1))}) + for pager.More() { + resp, err := pager.NextPage(context.Background()) + require.NoError(t, err) + testSerde(t, &resp.KeyListResult) + for _, key := range resp.Value { + require.NotNil(t, key) + require.NotNil(t, key.Attributes) + require.NotNil(t, key.KID) + if strings.HasPrefix(key.KID.Name(), keyNamePrefix) { + count-- + } + testSerde(t, key) + } + } + require.Equal(t, count, 0) }) } } func TestListKeyVersions(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") - require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - defer cleanUpKey(t, client, key) + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) - for i := 0; i < 5; i++ { - _, err = client.CreateRSAKey(ctx, key, nil) + var createResp azkeys.CreateKeyResponse + var err error + keyName := createRandomName(t, "listkeyversions") + expectedVersions := make(map[string]struct{}, 4) + for i := 0; i < 4; i++ { + createResp, err = client.CreateKey(context.Background(), keyName, azkeys.CreateKeyParameters{Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA)}, nil) + expectedVersions[createResp.Key.KID.Version()] = struct{}{} require.NoError(t, err) } + defer cleanUpKey(t, client, createResp.Key.KID) - pager := client.NewListPropertiesOfKeyVersionsPager(key, nil) - count := 0 + pager := client.NewListKeyVersionsPager(keyName, &azkeys.ListKeyVersionsOptions{MaxResults: to.Ptr(int32(1))}) for pager.More() { - resp, err := pager.NextPage(ctx) + resp, err := pager.NextPage(context.Background()) require.NoError(t, err) - count += len(resp.Keys) + testSerde(t, &resp.KeyListResult) + for _, key := range resp.Value { + testSerde(t, key) + require.NotNil(t, key) + require.NotNil(t, key.Attributes) + require.NotNil(t, key.KID) + require.Equal(t, keyName, key.KID.Name()) + version := key.KID.Version() + require.NotEmpty(t, keyName, version) + require.Contains(t, expectedVersions, version) + delete(expectedVersions, version) + } } - require.GreaterOrEqual(t, count, 6) + require.Empty(t, expectedVersions) }) } } -func TestImportKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - jwk := JSONWebKey{ - KeyType: to.Ptr(KeyTypeRSA), - KeyOps: to.SliceOfPtrs(OperationEncrypt, OperationDecrypt, OperationSign, OperationVerify, OperationWrapKey, OperationUnwrapKey), - N: toBytes("00a0914d00234ac683b21b4c15d5bed887bdc959c2e57af54ae734e8f00720d775d275e455207e3784ceeb60a50a4655dd72a7a94d271e8ee8f7959a669ca6e775bf0e23badae991b4529d978528b4bd90521d32dd2656796ba82b6bbfc7668c8f5eeb5053747fd199319d29a8440d08f4412d527ff9311eda71825920b47b1c46b11ab3e91d7316407e89c7f340f7b85a34042ce51743b27d4718403d34c7b438af6181be05e4d11eb985d38253d7fe9bf53fc2f1b002d22d2d793fa79a504b6ab42d0492804d7071d727a06cf3a8893aa542b1503f832b296371b6707d4dc6e372f8fe67d8ded1c908fde45ce03bc086a71487fa75e43aa0e0679aa0d20efe35", t), - E: toBytes("10001", t), - D: toBytes("627c7d24668148fe2252c7fa649ea8a5a9ed44d75c766cda42b29b660e99404f0e862d4561a6c95af6a83d213e0a2244b03cd28576473215073785fb067f015da19084ade9f475e08b040a9a2c7ba00253bb8125508c9df140b75161d266be347a5e0f6900fe1d8bbf78ccc25eeb37e0c9d188d6e1fc15169ba4fe12276193d77790d2326928bd60d0d01d6ead8d6ac4861abadceec95358fd6689c50a1671a4a936d2376440a41445501da4e74bfb98f823bd19c45b94eb01d98fc0d2f284507f018ebd929b8180dbe6381fdd434bffb7800aaabdd973d55f9eaf9bb88a6ea7b28c2a80231e72de1ad244826d665582c2362761019de2e9f10cb8bcc2625649", t), - P: toBytes("00d1deac8d68ddd2c1fd52d5999655b2cf1565260de5269e43fd2a85f39280e1708ffff0682166cb6106ee5ea5e9ffd9f98d0becc9ff2cda2febc97259215ad84b9051e563e14a051dce438bc6541a24ac4f014cf9732d36ebfc1e61a00d82cbe412090f7793cfbd4b7605be133dfc3991f7e1bed5786f337de5036fc1e2df4cf3", t), - Q: toBytes("00c3dc66b641a9b73cd833bc439cd34fc6574465ab5b7e8a92d32595a224d56d911e74624225b48c15a670282a51c40d1dad4bc2e9a3c8dab0c76f10052dfb053bc6ed42c65288a8e8bace7a8881184323f94d7db17ea6dfba651218f931a93b8f738f3d8fd3f6ba218d35b96861a0f584b0ab88ddcf446b9815f4d287d83a3237", t), - DP: toBytes("00c9a159be7265cbbabc9afcc4967eb74fe58a4c4945431902d1142da599b760e03838f8cbd26b64324fea6bdc9338503f459793636e59b5361d1e6951e08ddb089e1b507be952a81fbeaf7e76890ea4f536e25505c3f648b1e88377dfc19b4c304e738dfca07211b792286a392a704d0f444c0a802539110b7f1f121c00cff0a9", t), - DQ: toBytes("00a0bd4c0a3d9f64436a082374b5caf2488bac1568696153a6a5e4cd85d186db31e2f58f024c617d29f37b4e6b54c97a1e25efec59c4d1fd3061ac33509ce8cae5c11f4cd2e83f41a8264f785e78dc0996076ee23dfdfc43d67c463afaa0180c4a718357f9a6f270d542479a0f213870e661fb950abca4a14ca290570ba7983347", t), - QI: toBytes("009fe7ae42e92bc04fcd5780464bd21d0c8ac0c599f9af020fde6ab0a7e7d1d39902f5d8fb6c614184c4c1b103fb46e94cd10a6c8a40f9991a1f28269f326435b6c50276fda6493353c650a833f724d80c7d522ba16c79f0eb61f672736b68fb8be3243d10943c4ab7028d09e76cfb5892222e38bc4d35585bf35a88cd68c73b07", t), - } +func TestRecoverDeletedKey(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) - resp, err := client.ImportKey(ctx, "importedKey", jwk, nil) + key := createRandomName(t, "key") + createResp, err := client.CreateKey(context.Background(), key, azkeys.CreateKeyParameters{Kty: to.Ptr(azkeys.JSONWebKeyTypeEC)}, nil) require.NoError(t, err) - require.NotNil(t, resp.Key) - - invalid, err := client.ImportKey(ctx, "invalid", JSONWebKey{}, nil) - require.Error(t, err) - require.Nil(t, invalid.Properties) - }) - } -} - -func TestGetRandomBytes(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - if testType == REGULARTEST { - t.Skip("Managed HSM Only") - } - startTest(t, testType) - client, err := createClient(t, testType) + _, err = client.DeleteKey(context.Background(), key, nil) require.NoError(t, err) + pollStatus(t, 404, func() error { + _, err := client.GetDeletedKey(context.Background(), key, nil) + return err + }) - resp, err := client.GetRandomBytes(ctx, to.Ptr(int32(100)), nil) + recoverResp, err := client.RecoverDeletedKey(context.Background(), key, nil) require.NoError(t, err) - require.Equal(t, 100, len(resp.Value)) - - _, err = client.GetRandomBytes(ctx, to.Ptr(int32(-1)), nil) - require.Error(t, err) + pollStatus(t, 404, func() error { + _, err := client.GetKey(context.Background(), key, createResp.Key.KID.Version(), nil) + return err + }) + cleanUpKey(t, client, createResp.Key.KID) + require.Equal(t, createResp.Key.KID, recoverResp.Key.KID) + require.NotNil(t, recoverResp.Attributes) }) } } -func TestGetDeletedKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) +func TestReleaseKey(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) + key := createRandomName(t, "testreleasekey") + + // retry creating the key because Key Vault sometimes can't reach the fake + // attestation service we use in CI for several minutes after deployment + var createResp azkeys.CreateKeyResponse + var err error + for i := 0; i < 5; i++ { + params := azkeys.CreateKeyParameters{ + Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256K), + KeyAttributes: &azkeys.KeyAttributes{ + Exportable: to.Ptr(true), + }, + Kty: to.Ptr(azkeys.JSONWebKeyTypeECHSM), + ReleasePolicy: &azkeys.KeyReleasePolicy{ + EncodedPolicy: getMarshalledReleasePolicy(attestationURL), + Immutable: to.Ptr(true), + }, + } + createResp, err = client.CreateKey(context.Background(), key, params, nil) + if err == nil { + break + } + if i < 4 { + recording.Sleep(30 * time.Second) + } + } require.NoError(t, err) + require.NotNil(t, createResp.Key.KID) + defer cleanUpKey(t, client, createResp.Key.KID) - key, err := createRandomName(t, "keyName") + attestationClient, err := recording.NewRecordingHTTPClient(t, nil) require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) + req, err := http.NewRequest("GET", fmt.Sprintf("%s/generate-test-token", attestationURL), nil) require.NoError(t, err) - defer cleanUpKey(t, client, key) - - poller, err := client.BeginDeleteKey(ctx, key, nil) - require.NoError(t, err) - _, err = poller.PollUntilDone(ctx, delay()) + resp, err := attestationClient.Do(req) require.NoError(t, err) + require.Equal(t, resp.StatusCode, http.StatusOK) + defer resp.Body.Close() - resp, err := client.GetDeletedKey(ctx, key, nil) + var tR struct { + Token *string `json:"token"` + } + err = json.NewDecoder(resp.Body).Decode(&tR) require.NoError(t, err) - require.Contains(t, *resp.Key.ID, key) - _, err = client.PurgeDeletedKey(ctx, key, nil) + params := azkeys.ReleaseParameters{TargetAttestationToken: tR.Token} + testSerde(t, ¶ms) + releaseResp, err := client.Release(context.Background(), key, "", params, nil) + if err != nil && strings.Contains(err.Error(), "Target environment attestation statement cannot be verified.") { + t.Skip("test encountered a transient service fault; see https://github.com/Azure/azure-sdk-for-net/issues/27957") + } require.NoError(t, err) + require.NotEmpty(t, releaseResp.KeyReleaseResult.Value) + testSerde(t, &releaseResp.KeyReleaseResult) }) } } func TestRotateKey(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) + key := createRandomName(t, "testrotatekey") + createResp, err := client.CreateKey(context.Background(), key, azkeys.CreateKeyParameters{Kty: to.Ptr(azkeys.JSONWebKeyTypeECHSM)}, nil) require.NoError(t, err) + defer cleanUpKey(t, client, createResp.Key.KID) - key, err := createRandomName(t, "key") - require.NoError(t, err) - createResp, err := client.CreateRSAKey(ctx, key, nil) + policy := azkeys.KeyRotationPolicy{ + Attributes: &azkeys.KeyRotationPolicyAttributes{ + ExpiryTime: to.Ptr("P90D"), + }, + LifetimeActions: []*azkeys.LifetimeActions{ + { + Action: &azkeys.LifetimeActionsType{ + Type: to.Ptr(azkeys.ActionTypeRotate), + }, + Trigger: &azkeys.LifetimeActionsTrigger{ + TimeAfterCreate: to.Ptr("P30D"), + }, + }, + }} + updateResp, err := client.UpdateKeyRotationPolicy(context.Background(), key, policy, nil) require.NoError(t, err) - defer cleanUpKey(t, client, key) + require.Equal(t, policy.Attributes.ExpiryTime, updateResp.Attributes.ExpiryTime) + require.NotEmpty(t, updateResp.LifetimeActions) - if testType == HSMTEST { - // MHSM keys don't have a default rotation policy - _, err = client.UpdateKeyRotationPolicy(ctx, key, RotationPolicy{Attributes: &RotationPolicyAttributes{ExpiresIn: to.Ptr("P30D")}}, nil) - require.NoError(t, err) - } - resp, err := client.RotateKey(ctx, key, nil) + getResp, err := client.GetKeyRotationPolicy(context.Background(), key, nil) require.NoError(t, err) + require.Equal(t, updateResp.Attributes.ExpiryTime, getResp.Attributes.ExpiryTime) + require.Equal(t, updateResp.LifetimeActions, getResp.LifetimeActions) - require.NotEqual(t, *createResp.Key.JSONWebKey.ID, *resp.JSONWebKey.ID) - require.NotEqual(t, createResp.Key.JSONWebKey.N, resp.JSONWebKey.N) + rotateResp, err := client.RotateKey(context.Background(), key, nil) + require.NoError(t, err) + require.NotNil(t, rotateResp.Key.KID) - invalid, err := client.RotateKey(ctx, "keynonexistent", nil) + invalid, err := client.RotateKey(context.Background(), "keynonexistent", nil) require.Error(t, err) require.Zero(t, invalid.Key) }) } } -func TestGetKeyRotationPolicy(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) +func TestSignVerify(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" + } + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) + + keyName := createRandomName(t, "key") - client, err := createClient(t, testType) + createParams := azkeys.CreateKeyParameters{ + Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256K), + KeyOps: to.SliceOfPtrs(azkeys.JSONWebKeyOperationSign, azkeys.JSONWebKeyOperationVerify), + Kty: to.Ptr(azkeys.JSONWebKeyTypeEC), + } + _, err := client.CreateKey(context.Background(), keyName, createParams, nil) require.NoError(t, err) - key, err := createRandomName(t, "key") + hasher := sha256.New() + _, err = hasher.Write([]byte("plaintext")) require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) + digest := hasher.Sum(nil) + + signParams := azkeys.SignParameters{Algorithm: to.Ptr(azkeys.JSONWebKeySignatureAlgorithmES256K), Value: digest} + testSerde(t, &signParams) + signResponse, err := client.Sign(context.Background(), keyName, "", signParams, nil) require.NoError(t, err) - defer cleanUpKey(t, client, key) + testSerde(t, &signResponse.KeyOperationResult) - _, err = client.GetKeyRotationPolicy(ctx, key, nil) + verifyParams := azkeys.VerifyParameters{Algorithm: signParams.Algorithm, Digest: digest, Signature: signResponse.Result} + testSerde(t, &verifyParams) + verifyResponse, err := client.Verify(context.Background(), keyName, "", verifyParams, nil) require.NoError(t, err) + require.True(t, *verifyResponse.Value) + testSerde(t, &verifyResponse.KeyVerifyResult) }) } } -func TestReleaseKey(t *testing.T) { - for _, testType := range testTypes { - for _, version := range []bool{true, false} { - tn := fmt.Sprintf("%s_%s", t.Name(), testType) - if version { - tn += "_specificVersion" - } else { - tn += "_latest" - } - t.Run(tn, func(t *testing.T) { - startTest(t, testType) - - client, err := createClient(t, testType) - require.NoError(t, err) - - name, err := createRandomName(t, "testreleasekey") - require.NoError(t, err) - - // retry creating the key because Key Vault sometimes can't reach the fake - // attestation service we use in CI for several minutes after deployment - var createResp CreateECKeyResponse - for i := 0; i < 5; i++ { - createResp, err = client.CreateECKey(ctx, name, &CreateECKeyOptions{ - Curve: to.Ptr(CurveNameP256K), - HardwareProtected: to.Ptr(true), - Properties: &Properties{Exportable: to.Ptr(true)}, - ReleasePolicy: &ReleasePolicy{ - EncodedPolicy: getMarshalledReleasePolicy(testAttestationURL), - }, - }) - if err == nil { - break - } - recording.Sleep(time.Minute) - } - require.NoError(t, err) - defer cleanUpKey(t, client, name) - - attestationClient, err := recording.NewRecordingHTTPClient(t, nil) - require.NoError(t, err) - req, err := http.NewRequest("GET", fmt.Sprintf("%s/generate-test-token", testAttestationURL), nil) - require.NoError(t, err) - resp, err := attestationClient.Do(req) - require.NoError(t, err) - require.Equal(t, resp.StatusCode, http.StatusOK) - defer resp.Body.Close() - - var tR struct { - Token string `json:"token"` - } - err = json.NewDecoder(resp.Body).Decode(&tR) - require.NoError(t, err) - - o := &ReleaseKeyOptions{} - if version { - o.Version = createResp.Properties.Version - } - response, err := client.ReleaseKey(ctx, *createResp.Name, tR.Token, o) - if err != nil && strings.Contains(err.Error(), "Target environment attestation statement cannot be verified.") { - t.Skip("test encountered a transient service fault; see https://github.com/Azure/azure-sdk-for-net/issues/27957") - } - require.NoError(t, err) - require.NotNil(t, response.Value) - require.NotEmpty(t, *response.Value) - }) +func TestWrapUnwrap(t *testing.T) { + for _, mhsm := range []bool{false, true} { + name := "KV" + if mhsm { + name = "MHSM" } - } -} + t.Run(name, func(t *testing.T) { + client := startTest(t, mhsm) -func TestUpdateKeyRotationPolicy(t *testing.T) { - for _, testType := range testTypes { - t.Run(fmt.Sprintf("%s_%s", t.Name(), testType), func(t *testing.T) { - startTest(t, testType) + keyName := createRandomName(t, "key") - client, err := createClient(t, testType) - require.NoError(t, err) - - key, err := createRandomName(t, "key") + createParams := azkeys.CreateKeyParameters{ + KeyOps: to.SliceOfPtrs(azkeys.JSONWebKeyOperationWrapKey, azkeys.JSONWebKeyOperationUnwrapKey), + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA), + } + _, err := client.CreateKey(context.Background(), keyName, createParams, nil) require.NoError(t, err) - _, err = client.CreateRSAKey(ctx, key, nil) - require.NoError(t, err) - defer cleanUpKey(t, client, key) + keyBytes := []byte("5063e6aaa845f150200547944fd199679c98ed6f99da0a0b2dafeaf1f4684496fd532c1c229968cb9dee44957fcef7ccef59ceda0b362e56bcd78fd3faee5781c623c0bb22b35beabde0664fd30e0e824aba3dd1b0afffc4a3d955ede20cf6a854d52cfd") - get, err := client.GetKeyRotationPolicy(ctx, key, nil) + wrapParams := azkeys.KeyOperationsParameters{Algorithm: to.Ptr(azkeys.JSONWebKeyEncryptionAlgorithmRSAOAEP), Value: keyBytes} + wrapResp, err := client.WrapKey(context.Background(), keyName, "", wrapParams, nil) require.NoError(t, err) - get.Attributes = &RotationPolicyAttributes{ExpiresIn: to.Ptr("P90D")} - get.LifetimeActions = []*LifetimeActions{ - { - Action: &LifetimeActionsType{ - Type: to.Ptr(RotationActionRotate), - }, - Trigger: &LifetimeActionsTrigger{ - TimeBeforeExpiry: to.Ptr("P30D"), - }, - }, - } - _, err = client.UpdateKeyRotationPolicy(ctx, key, get.RotationPolicy, nil) + unwrapResp, err := client.UnwrapKey(context.Background(), keyName, "", azkeys.KeyOperationsParameters{Algorithm: wrapParams.Algorithm, Value: wrapResp.Result}, nil) require.NoError(t, err) + require.Equal(t, keyBytes, unwrapResp.Result) }) } } - -func TestClient_EncryptDecrypt(t *testing.T) { - startTest(t, REGULARTEST) - - keyName, err := createRandomName(t, "key") - require.NoError(t, err) - - keyClient, err := createClient(t, REGULARTEST) - require.NoError(t, err) - _, err = keyClient.CreateRSAKey(ctx, keyName, nil) - require.NoError(t, err) - - cryptoClient := keyClient.NewCryptoClient(keyName, nil) - - encryptResponse, err := cryptoClient.Encrypt(ctx, crypto.EncryptionAlgRSAOAEP, []byte("plaintext"), nil) - require.NoError(t, err) - require.NotNil(t, encryptResponse) - - decryptResponse, err := cryptoClient.Decrypt(ctx, crypto.EncryptionAlgRSAOAEP, encryptResponse.Ciphertext, nil) - require.NoError(t, err) - require.Equal(t, decryptResponse.Plaintext, []byte("plaintext")) -} - -func TestClient_WrapUnwrap(t *testing.T) { - startTest(t, REGULARTEST) - - keyName, err := createRandomName(t, "key") - require.NoError(t, err) - - keyClient, err := createClient(t, REGULARTEST) - require.NoError(t, err) - _, err = keyClient.CreateRSAKey(ctx, keyName, nil) - require.NoError(t, err) - - cryptoClient := keyClient.NewCryptoClient(keyName, nil) - - keyBytes := []byte("5063e6aaa845f150200547944fd199679c98ed6f99da0a0b2dafeaf1f4684496fd532c1c229968cb9dee44957fcef7ccef59ceda0b362e56bcd78fd3faee5781c623c0bb22b35beabde0664fd30e0e824aba3dd1b0afffc4a3d955ede20cf6a854d52cfd") - - // Wrap - wrapResp, err := cryptoClient.WrapKey(ctx, crypto.WrapAlgRSAOAEP, keyBytes, nil) - require.NoError(t, err) - - // Unwrap - unwrapResp, err := cryptoClient.UnwrapKey(ctx, crypto.WrapAlgRSAOAEP, wrapResp.EncryptedKey, nil) - require.NoError(t, err) - require.Equal(t, keyBytes, unwrapResp.Key) - -} - -func TestClient_SignVerify(t *testing.T) { - startTest(t, REGULARTEST) - - keyName, err := createRandomName(t, "key") - require.NoError(t, err) - - keyClient, err := createClient(t, REGULARTEST) - require.NoError(t, err) - _, err = keyClient.CreateRSAKey(ctx, keyName, nil) - require.NoError(t, err) - - cryptoClient := keyClient.NewCryptoClient(keyName, nil) - - hasher := sha256.New() - _, err = hasher.Write([]byte("plaintext")) - require.NoError(t, err) - digest := hasher.Sum(nil) - - signResponse, err := cryptoClient.Sign(ctx, crypto.SignatureAlgRS256, digest, nil) - require.NoError(t, err) - - verifyResponse, err := cryptoClient.Verify(ctx, crypto.SignatureAlgRS256, digest, signResponse.Signature, nil) - require.NoError(t, err) - require.True(t, *verifyResponse.IsValid) -} diff --git a/sdk/keyvault/azkeys/constants.go b/sdk/keyvault/azkeys/constants.go index e62a1f48f5d3..d46db6ee8034 100644 --- a/sdk/keyvault/azkeys/constants.go +++ b/sdk/keyvault/azkeys/constants.go @@ -3,146 +3,268 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// DO NOT EDIT. package azkeys -import ( - "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/generated" +// ActionType - The type of the action. +type ActionType string + +const ( + // ActionTypeRotate - Rotate the key based on the key policy. + ActionTypeRotate ActionType = "rotate" + // ActionTypeNotify - Trigger event grid events. For preview, the notification time is not configurable and it is default + // to 30 days before expiry. + ActionTypeNotify ActionType = "notify" ) -func toGeneratedDeletionRecoveryLevel(s *string) *generated.DeletionRecoveryLevel { - if s == nil { - return nil +// PossibleActionTypeValues returns the possible values for the ActionType const type. +func PossibleActionTypeValues() []ActionType { + return []ActionType{ + ActionTypeRotate, + ActionTypeNotify, } - return to.Ptr(generated.DeletionRecoveryLevel(*s)) } -// CurveName - Elliptic curve name. For valid values, see PossibleCurveNameValues. -type CurveName string +// DeletionRecoveryLevel - Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains +// 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system +// can purge the key, at the end of the retention interval. +type DeletionRecoveryLevel string const ( - // CurveNameP256 - The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. - CurveNameP256 CurveName = "P-256" + // DeletionRecoveryLevelCustomizedRecoverable - 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. + DeletionRecoveryLevelCustomizedRecoverable DeletionRecoveryLevel = "CustomizedRecoverable" + // DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription - 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. + DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription DeletionRecoveryLevel = "CustomizedRecoverable+ProtectedSubscription" + // DeletionRecoveryLevelCustomizedRecoverablePurgeable - 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. + DeletionRecoveryLevelCustomizedRecoverablePurgeable DeletionRecoveryLevel = "CustomizedRecoverable+Purgeable" + // DeletionRecoveryLevelPurgeable - 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.) + DeletionRecoveryLevelPurgeable DeletionRecoveryLevel = "Purgeable" + // DeletionRecoveryLevelRecoverable - 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 + DeletionRecoveryLevelRecoverable DeletionRecoveryLevel = "Recoverable" + // DeletionRecoveryLevelRecoverableProtectedSubscription - 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 + DeletionRecoveryLevelRecoverableProtectedSubscription DeletionRecoveryLevel = "Recoverable+ProtectedSubscription" + // DeletionRecoveryLevelRecoverablePurgeable - 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 + DeletionRecoveryLevelRecoverablePurgeable DeletionRecoveryLevel = "Recoverable+Purgeable" +) - // CurveNameP256K - The SECG SECP256K1 elliptic curve. - CurveNameP256K CurveName = "P-256K" +// PossibleDeletionRecoveryLevelValues returns the possible values for the DeletionRecoveryLevel const type. +func PossibleDeletionRecoveryLevelValues() []DeletionRecoveryLevel { + return []DeletionRecoveryLevel{ + DeletionRecoveryLevelCustomizedRecoverable, + DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription, + DeletionRecoveryLevelCustomizedRecoverablePurgeable, + DeletionRecoveryLevelPurgeable, + DeletionRecoveryLevelRecoverable, + DeletionRecoveryLevelRecoverableProtectedSubscription, + DeletionRecoveryLevelRecoverablePurgeable, + } +} - // CurveNameP384 - The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. - CurveNameP384 CurveName = "P-384" +// JSONWebKeyCurveName - Elliptic curve name. For valid values, see JsonWebKeyCurveName. +type JSONWebKeyCurveName string - // CurveNameP521 - The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. - CurveNameP521 CurveName = "P-521" +const ( + // JSONWebKeyCurveNameP256 - The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. + JSONWebKeyCurveNameP256 JSONWebKeyCurveName = "P-256" + // JSONWebKeyCurveNameP256K - The SECG SECP256K1 elliptic curve. + JSONWebKeyCurveNameP256K JSONWebKeyCurveName = "P-256K" + // JSONWebKeyCurveNameP384 - The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. + JSONWebKeyCurveNameP384 JSONWebKeyCurveName = "P-384" + // JSONWebKeyCurveNameP521 - The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. + JSONWebKeyCurveNameP521 JSONWebKeyCurveName = "P-521" ) -// PossibleCurveNameValues provides a slice of all possible CurveNames -func PossibleCurveNameValues() []CurveName { - return []CurveName{ - CurveNameP256, - CurveNameP256K, - CurveNameP384, - CurveNameP521, +// PossibleJSONWebKeyCurveNameValues returns the possible values for the JSONWebKeyCurveName const type. +func PossibleJSONWebKeyCurveNameValues() []JSONWebKeyCurveName { + return []JSONWebKeyCurveName{ + JSONWebKeyCurveNameP256, + JSONWebKeyCurveNameP256K, + JSONWebKeyCurveNameP384, + JSONWebKeyCurveNameP521, } } -// Operation - JSON web key operations. For more information, see Operation. -type Operation string +// JSONWebKeyEncryptionAlgorithm - algorithm identifier +type JSONWebKeyEncryptionAlgorithm string const ( - OperationDecrypt Operation = "decrypt" - OperationEncrypt Operation = "encrypt" - OperationImport Operation = "import" - OperationSign Operation = "sign" - OperationUnwrapKey Operation = "unwrapKey" - OperationVerify Operation = "verify" - OperationWrapKey Operation = "wrapKey" + JSONWebKeyEncryptionAlgorithmA128CBC JSONWebKeyEncryptionAlgorithm = "A128CBC" + JSONWebKeyEncryptionAlgorithmA128CBCPAD JSONWebKeyEncryptionAlgorithm = "A128CBCPAD" + JSONWebKeyEncryptionAlgorithmA128GCM JSONWebKeyEncryptionAlgorithm = "A128GCM" + JSONWebKeyEncryptionAlgorithmA128KW JSONWebKeyEncryptionAlgorithm = "A128KW" + JSONWebKeyEncryptionAlgorithmA192CBC JSONWebKeyEncryptionAlgorithm = "A192CBC" + JSONWebKeyEncryptionAlgorithmA192CBCPAD JSONWebKeyEncryptionAlgorithm = "A192CBCPAD" + JSONWebKeyEncryptionAlgorithmA192GCM JSONWebKeyEncryptionAlgorithm = "A192GCM" + JSONWebKeyEncryptionAlgorithmA192KW JSONWebKeyEncryptionAlgorithm = "A192KW" + JSONWebKeyEncryptionAlgorithmA256CBC JSONWebKeyEncryptionAlgorithm = "A256CBC" + JSONWebKeyEncryptionAlgorithmA256CBCPAD JSONWebKeyEncryptionAlgorithm = "A256CBCPAD" + JSONWebKeyEncryptionAlgorithmA256GCM JSONWebKeyEncryptionAlgorithm = "A256GCM" + JSONWebKeyEncryptionAlgorithmA256KW JSONWebKeyEncryptionAlgorithm = "A256KW" + JSONWebKeyEncryptionAlgorithmRSA15 JSONWebKeyEncryptionAlgorithm = "RSA1_5" + JSONWebKeyEncryptionAlgorithmRSAOAEP JSONWebKeyEncryptionAlgorithm = "RSA-OAEP" + JSONWebKeyEncryptionAlgorithmRSAOAEP256 JSONWebKeyEncryptionAlgorithm = "RSA-OAEP-256" ) -// PossibleOperationValues provides a slice of all possible Operations -func PossibleOperationValues() []Operation { - return []Operation{ - OperationDecrypt, - OperationEncrypt, - OperationImport, - OperationSign, - OperationUnwrapKey, - OperationVerify, - OperationWrapKey, +// PossibleJSONWebKeyEncryptionAlgorithmValues returns the possible values for the JSONWebKeyEncryptionAlgorithm const type. +func PossibleJSONWebKeyEncryptionAlgorithmValues() []JSONWebKeyEncryptionAlgorithm { + return []JSONWebKeyEncryptionAlgorithm{ + JSONWebKeyEncryptionAlgorithmA128CBC, + JSONWebKeyEncryptionAlgorithmA128CBCPAD, + JSONWebKeyEncryptionAlgorithmA128GCM, + JSONWebKeyEncryptionAlgorithmA128KW, + JSONWebKeyEncryptionAlgorithmA192CBC, + JSONWebKeyEncryptionAlgorithmA192CBCPAD, + JSONWebKeyEncryptionAlgorithmA192GCM, + JSONWebKeyEncryptionAlgorithmA192KW, + JSONWebKeyEncryptionAlgorithmA256CBC, + JSONWebKeyEncryptionAlgorithmA256CBCPAD, + JSONWebKeyEncryptionAlgorithmA256GCM, + JSONWebKeyEncryptionAlgorithmA256KW, + JSONWebKeyEncryptionAlgorithmRSA15, + JSONWebKeyEncryptionAlgorithmRSAOAEP, + JSONWebKeyEncryptionAlgorithmRSAOAEP256, } } -// RotationAction - The type of the action. -type RotationAction string +// JSONWebKeyOperation - JSON web key operations. For more information, see JsonWebKeyOperation. +type JSONWebKeyOperation string const ( - // RotationActionRotate - Rotate the key based on the key policy. - RotationActionRotate RotationAction = "rotate" - // RotationActionNotify - Trigger event grid events. For preview, the notification time is not configurable and it is default to 30 days before expiry. - RotationActionNotify RotationAction = "notify" + JSONWebKeyOperationDecrypt JSONWebKeyOperation = "decrypt" + JSONWebKeyOperationEncrypt JSONWebKeyOperation = "encrypt" + JSONWebKeyOperationExport JSONWebKeyOperation = "export" + JSONWebKeyOperationImport JSONWebKeyOperation = "import" + JSONWebKeyOperationSign JSONWebKeyOperation = "sign" + JSONWebKeyOperationUnwrapKey JSONWebKeyOperation = "unwrapKey" + JSONWebKeyOperationVerify JSONWebKeyOperation = "verify" + JSONWebKeyOperationWrapKey JSONWebKeyOperation = "wrapKey" ) -// PossibleActionTypeValues provides a slice of all possible ActionTypes -func PossibleActionTypeValues() []RotationAction { - return []RotationAction{ - RotationActionRotate, - RotationActionNotify, +// PossibleJSONWebKeyOperationValues returns the possible values for the JSONWebKeyOperation const type. +func PossibleJSONWebKeyOperationValues() []JSONWebKeyOperation { + return []JSONWebKeyOperation{ + JSONWebKeyOperationDecrypt, + JSONWebKeyOperationEncrypt, + JSONWebKeyOperationExport, + JSONWebKeyOperationImport, + JSONWebKeyOperationSign, + JSONWebKeyOperationUnwrapKey, + JSONWebKeyOperationVerify, + JSONWebKeyOperationWrapKey, } } -// ExportEncryptionAlg - The encryption algorithm to use to protected the exported key material -type ExportEncryptionAlg string +// JSONWebKeySignatureAlgorithm - The signing/verification algorithm identifier. For more information on possible algorithm +// types, see JsonWebKeySignatureAlgorithm. +type JSONWebKeySignatureAlgorithm string const ( - ExportEncryptionAlgCKMRSAAESKEYWRAP ExportEncryptionAlg = "CKM_RSA_AES_KEY_WRAP" - ExportEncryptionAlgRSAAESKEYWRAP256 ExportEncryptionAlg = "RSA_AES_KEY_WRAP_256" - ExportEncryptionAlgRSAAESKEYWRAP384 ExportEncryptionAlg = "RSA_AES_KEY_WRAP_384" + // JSONWebKeySignatureAlgorithmES256 - ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. + JSONWebKeySignatureAlgorithmES256 JSONWebKeySignatureAlgorithm = "ES256" + // JSONWebKeySignatureAlgorithmES256K - ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmES256K JSONWebKeySignatureAlgorithm = "ES256K" + // JSONWebKeySignatureAlgorithmES384 - ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmES384 JSONWebKeySignatureAlgorithm = "ES384" + // JSONWebKeySignatureAlgorithmES512 - ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmES512 JSONWebKeySignatureAlgorithm = "ES512" + // JSONWebKeySignatureAlgorithmPS256 - RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmPS256 JSONWebKeySignatureAlgorithm = "PS256" + // JSONWebKeySignatureAlgorithmPS384 - RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmPS384 JSONWebKeySignatureAlgorithm = "PS384" + // JSONWebKeySignatureAlgorithmPS512 - RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmPS512 JSONWebKeySignatureAlgorithm = "PS512" + // JSONWebKeySignatureAlgorithmRS256 - RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmRS256 JSONWebKeySignatureAlgorithm = "RS256" + // JSONWebKeySignatureAlgorithmRS384 - RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmRS384 JSONWebKeySignatureAlgorithm = "RS384" + // JSONWebKeySignatureAlgorithmRS512 - RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 + JSONWebKeySignatureAlgorithmRS512 JSONWebKeySignatureAlgorithm = "RS512" + // JSONWebKeySignatureAlgorithmRSNULL - Reserved + JSONWebKeySignatureAlgorithmRSNULL JSONWebKeySignatureAlgorithm = "RSNULL" ) -// PossibleExportEncryptionAlgValues provides a slice of all possible ExportEncryptionAlgs -func PossibleExportEncryptionAlgValues() []ExportEncryptionAlg { - return []ExportEncryptionAlg{ - ExportEncryptionAlgCKMRSAAESKEYWRAP, - ExportEncryptionAlgRSAAESKEYWRAP256, - ExportEncryptionAlgRSAAESKEYWRAP384, +// PossibleJSONWebKeySignatureAlgorithmValues returns the possible values for the JSONWebKeySignatureAlgorithm const type. +func PossibleJSONWebKeySignatureAlgorithmValues() []JSONWebKeySignatureAlgorithm { + return []JSONWebKeySignatureAlgorithm{ + JSONWebKeySignatureAlgorithmES256, + JSONWebKeySignatureAlgorithmES256K, + JSONWebKeySignatureAlgorithmES384, + JSONWebKeySignatureAlgorithmES512, + JSONWebKeySignatureAlgorithmPS256, + JSONWebKeySignatureAlgorithmPS384, + JSONWebKeySignatureAlgorithmPS512, + JSONWebKeySignatureAlgorithmRS256, + JSONWebKeySignatureAlgorithmRS384, + JSONWebKeySignatureAlgorithmRS512, + JSONWebKeySignatureAlgorithmRSNULL, } } -// KeyType - JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. -type KeyType string +// JSONWebKeyType - JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. +type JSONWebKeyType string const ( - // EC - Elliptic Curve. - KeyTypeEC KeyType = "EC" - - // ECHSM - Elliptic Curve with a private key which is not exportable from the HSM. - KeyTypeECHSM KeyType = "EC-HSM" - - // Oct - Octet sequence (used to represent symmetric keys) - KeyTypeOct KeyType = "oct" + // JSONWebKeyTypeEC - Elliptic Curve. + JSONWebKeyTypeEC JSONWebKeyType = "EC" + // JSONWebKeyTypeECHSM - Elliptic Curve with a private key which is stored in the HSM. + JSONWebKeyTypeECHSM JSONWebKeyType = "EC-HSM" + // JSONWebKeyTypeOct - Octet sequence (used to represent symmetric keys) + JSONWebKeyTypeOct JSONWebKeyType = "oct" + // JSONWebKeyTypeOctHSM - Octet sequence (used to represent symmetric keys) which is stored the HSM. + JSONWebKeyTypeOctHSM JSONWebKeyType = "oct-HSM" + // JSONWebKeyTypeRSA - RSA (https://tools.ietf.org/html/rfc3447) + JSONWebKeyTypeRSA JSONWebKeyType = "RSA" + // JSONWebKeyTypeRSAHSM - RSA with a private key which is stored in the HSM. + JSONWebKeyTypeRSAHSM JSONWebKeyType = "RSA-HSM" +) - // OctHSM - Octet sequence (used to represent symmetric keys) which is not exportable from the HSM. - KeyTypeOctHSM KeyType = "oct-HSM" +// PossibleJSONWebKeyTypeValues returns the possible values for the JSONWebKeyType const type. +func PossibleJSONWebKeyTypeValues() []JSONWebKeyType { + return []JSONWebKeyType{ + JSONWebKeyTypeEC, + JSONWebKeyTypeECHSM, + JSONWebKeyTypeOct, + JSONWebKeyTypeOctHSM, + JSONWebKeyTypeRSA, + JSONWebKeyTypeRSAHSM, + } +} - // RSA - RSA (https://tools.ietf.org/html/rfc3447) - KeyTypeRSA KeyType = "RSA" +// KeyEncryptionAlgorithm - The encryption algorithm to use to protected the exported key material +type KeyEncryptionAlgorithm string - // RSAHSM - RSA with a private key which is not exportable from the HSM. - KeyTypeRSAHSM KeyType = "RSA-HSM" +const ( + KeyEncryptionAlgorithmCKMRSAAESKEYWRAP KeyEncryptionAlgorithm = "CKM_RSA_AES_KEY_WRAP" + KeyEncryptionAlgorithmRSAAESKEYWRAP256 KeyEncryptionAlgorithm = "RSA_AES_KEY_WRAP_256" + KeyEncryptionAlgorithmRSAAESKEYWRAP384 KeyEncryptionAlgorithm = "RSA_AES_KEY_WRAP_384" ) -// PossibleKeyTypeValues provides a slice of all possible KeyTypes -func PossibleKeyTypeValues() []KeyType { - return []KeyType{ - KeyTypeEC, - KeyTypeECHSM, - KeyTypeOct, - KeyTypeOctHSM, - KeyTypeRSA, - KeyTypeRSAHSM, +// PossibleKeyEncryptionAlgorithmValues returns the possible values for the KeyEncryptionAlgorithm const type. +func PossibleKeyEncryptionAlgorithmValues() []KeyEncryptionAlgorithm { + return []KeyEncryptionAlgorithm{ + KeyEncryptionAlgorithmCKMRSAAESKEYWRAP, + KeyEncryptionAlgorithmRSAAESKEYWRAP256, + KeyEncryptionAlgorithmRSAAESKEYWRAP384, } } - -// convert KeyType to *generated.JSONWebKeyType -func (j KeyType) toGenerated() *generated.JSONWebKeyType { - return to.Ptr(generated.JSONWebKeyType(j)) -} diff --git a/sdk/keyvault/azkeys/crypto/constants.go b/sdk/keyvault/azkeys/crypto/constants.go deleted file mode 100644 index 8ed958719f78..000000000000 --- a/sdk/keyvault/azkeys/crypto/constants.go +++ /dev/null @@ -1,118 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package crypto - -// WrapAlg represents the key wrapping algorithms -type WrapAlg string - -const ( - WrapAlgAES128 WrapAlg = "A128KW" - WrapAlgAES192 WrapAlg = "A192KW" - WrapAlgAES256 WrapAlg = "A256KW" - WrapAlgRSAOAEP WrapAlg = "RSA-OAEP" - WrapAlgRSAOAEP256 WrapAlg = "RSA-OAEP-256" - WrapAlgRSA15 WrapAlg = "RSA1_5" -) - -// PossibleWrapAlgValues returns a slice of all possible WrapAlg values -func PossibleWrapAlgValues() []WrapAlg { - return []WrapAlg{ - WrapAlgAES128, - WrapAlgAES192, - WrapAlgAES256, - WrapAlgRSAOAEP, - WrapAlgRSAOAEP256, - WrapAlgRSA15, - } -} - -// EncryptionAlg - algorithm identifier -type EncryptionAlg string - -const ( - EncryptionAlgA128CBC EncryptionAlg = "A128CBC" - EncryptionAlgA128CBCPAD EncryptionAlg = "A128CBCPAD" - EncryptionAlgA128GCM EncryptionAlg = "A128GCM" - EncryptionAlgA128KW EncryptionAlg = "A128KW" - EncryptionAlgA192CBC EncryptionAlg = "A192CBC" - EncryptionAlgA192CBCPAD EncryptionAlg = "A192CBCPAD" - EncryptionAlgA192GCM EncryptionAlg = "A192GCM" - EncryptionAlgA192KW EncryptionAlg = "A192KW" - EncryptionAlgA256CBC EncryptionAlg = "A256CBC" - EncryptionAlgA256CBCPAD EncryptionAlg = "A256CBCPAD" - EncryptionAlgA256GCM EncryptionAlg = "A256GCM" - EncryptionAlgA256KW EncryptionAlg = "A256KW" - EncryptionAlgRSA15 EncryptionAlg = "RSA1_5" - EncryptionAlgRSAOAEP EncryptionAlg = "RSA-OAEP" - EncryptionAlgRSAOAEP256 EncryptionAlg = "RSA-OAEP-256" -) - -// PossibleEncryptionAlgValues returns a slice of all possible EncryptionAlg values -func PossibleEncryptionAlgValues() []EncryptionAlg { - return []EncryptionAlg{ - EncryptionAlgA128CBC, - EncryptionAlgA128CBCPAD, - EncryptionAlgA128GCM, - EncryptionAlgA128KW, - EncryptionAlgA192CBC, - EncryptionAlgA192CBCPAD, - EncryptionAlgA192GCM, - EncryptionAlgA192KW, - EncryptionAlgA256CBC, - EncryptionAlgA256CBCPAD, - EncryptionAlgA256GCM, - EncryptionAlgA256KW, - EncryptionAlgRSA15, - EncryptionAlgRSAOAEP, - EncryptionAlgRSAOAEP256, - } -} - -// SignatureAlg - The signing/verification algorithm identifier. -type SignatureAlg string - -const ( - // ES256 - ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. - SignatureAlgES256 SignatureAlg = "ES256" - // ES256K - ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgES256K SignatureAlg = "ES256K" - // ES384 - ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgES384 SignatureAlg = "ES384" - // ES512 - ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgES512 SignatureAlg = "ES512" - // PS256 - RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgPS256 SignatureAlg = "PS256" - // PS384 - RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgPS384 SignatureAlg = "PS384" - // PS512 - RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgPS512 SignatureAlg = "PS512" - // RS256 - RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgRS256 SignatureAlg = "RS256" - // RS384 - RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgRS384 SignatureAlg = "RS384" - // RS512 - RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 - SignatureAlgRS512 SignatureAlg = "RS512" - // RSNULL - Reserved - SignatureAlgRSNULL SignatureAlg = "RSNULL" -) - -// PossibleSignatureAlgValues returns a slice of all possible SignatureAlg values -func PossibleSignatureAlgValues() []SignatureAlg { - return []SignatureAlg{ - SignatureAlgES256, - SignatureAlgES256K, - SignatureAlgES384, - SignatureAlgES512, - SignatureAlgPS256, - SignatureAlgPS384, - SignatureAlgPS512, - SignatureAlgRS256, - SignatureAlgRS384, - SignatureAlgRS512, - SignatureAlgRSNULL, - } -} diff --git a/sdk/keyvault/azkeys/crypto/crypto_client.go b/sdk/keyvault/azkeys/crypto/crypto_client.go deleted file mode 100644 index 23b739fd25ee..000000000000 --- a/sdk/keyvault/azkeys/crypto/crypto_client.go +++ /dev/null @@ -1,485 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package crypto - -import ( - "context" - "fmt" - "net/url" - "strings" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/base" - generated "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/generated" - shared "github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal" -) - -// Client performs cryptographic operations using Azure Key Vault Keys. It -// will perform operations locally when it's initialized with the necessary key material or -// is able to get that material from Key Vault. When the required key material is unavailable, -// cryptographic operations are performed by the Key Vault service. -type Client struct { - base.CryptoClient -} - -// ClientOptions are the configurable options on a Client. -type ClientOptions struct { - azcore.ClientOptions -} - -// converts ClientOptions to generated *generated.ConnectionOptions -func (c *ClientOptions) toConnectionOptions() *policy.ClientOptions { - if c == nil { - return nil - } - return &policy.ClientOptions{ - Transport: c.Transport, - Retry: c.Retry, - Telemetry: c.Telemetry, - Logging: c.Logging, - PerCallPolicies: c.PerCallPolicies, - PerRetryPolicies: c.PerRetryPolicies, - } -} - -// parse the KeyID and Version. If no version is present, return a blank string. -func parseKeyIDAndVersion(id string) (string, string, error) { - parsed, err := url.Parse(id) - if err != nil { - return "", "", err - } - - if !strings.HasPrefix(parsed.Path, "/keys/") { - return "", "", fmt.Errorf("URL is not for a specific key, expect path to start with '/keys/', received %s", id) - } - - path := strings.Split(strings.TrimPrefix(parsed.Path, "/keys/"), "/") - - if len(path) < 1 { - return "", "", fmt.Errorf("could not parse Key ID from %s", id) - } - - if len(path) == 1 { - return path[0], "", nil - } - - return path[0], path[1], nil -} - -// Parse vault URL from the key identifier -func parseVaultURL(base string) (string, error) { - parsed, err := url.Parse(base) - if err != nil { - return "", err - } - - return fmt.Sprintf("%s://%s/", parsed.Scheme, parsed.Host), nil -} - -// NewClient constructs a Client that performs cryptographic operations with a Key Vault's keys. The keyURL should -// be an identifier of an Azure Key Vault key. Including a version is recommended but not required. -func NewClient(keyURL string, credential azcore.TokenCredential, options *ClientOptions) (*Client, error) { - if options == nil { - options = &ClientOptions{} - } - genOptions := options.toConnectionOptions() - - genOptions.PerRetryPolicies = append( - genOptions.PerRetryPolicies, - shared.NewKeyVaultChallengePolicy(credential), - ) - pl := runtime.NewPipeline(internal.ModuleName, internal.ModuleVersion, runtime.PipelineOptions{}, genOptions) - - vaultURL, err := parseVaultURL(keyURL) - if err != nil { - return nil, err - } - - keyID, keyVersion, err := parseKeyIDAndVersion(keyURL) - if err != nil { - return nil, err - } - - return &Client{base.NewCryptoClient(vaultURL, keyID, keyVersion, pl)}, nil -} - -// EncryptOptions contains optional parameters for Client.EncryptOptions -type EncryptOptions struct { - // AuthData is additional data that is authenticated but not encrypted. For use in AES-GCM encryption. - AuthData []byte `json:"aad,omitempty"` - - // AuthTag is a tag to authenticate when performing decryption with an authenticated algorithm. - AuthTag []byte `json:"tag,omitempty"` - - // IV is the initialization vector for symmetric algorithms. - IV []byte `json:"iv,omitempty"` -} - -func (e EncryptOptions) toGeneratedKeyOperationsParameters(alg EncryptionAlg, value []byte) generated.KeyOperationsParameters { - return generated.KeyOperationsParameters{ - Algorithm: (*generated.JSONWebKeyEncryptionAlgorithm)(&alg), - Value: value, - AAD: e.AuthData, - Iv: e.IV, - Tag: e.AuthTag, - } -} - -// EncryptResponse is returned by EncryptResponse. -type EncryptResponse struct { - // Algorithm is the algorithm used to encrypt. - Algorithm *EncryptionAlg - - // AuthData is additional data that is authenticated but not encrypted. For use in AES-GCM encryption. - AuthData []byte `json:"aad,omitempty"` - - // AuthTag is a tag to authenticate when performing decryption with an authenticated algorithm. - AuthTag []byte `json:"tag,omitempty"` - - // Ciphertext is the encrypted data. - Ciphertext []byte - - // IV is the initialization vector for symmetric algorithms. - IV []byte `json:"iv,omitempty"` - - // KeyID is the ID of the encrypting key. - KeyID *string -} - -func encryptResponseFromGenerated(i generated.KeyVaultClientEncryptResponse, alg EncryptionAlg) EncryptResponse { - return EncryptResponse{ - AuthData: i.AdditionalAuthenticatedData, - AuthTag: i.AuthenticationTag, - IV: i.Iv, - KeyID: i.Kid, - Ciphertext: i.Result, - Algorithm: to.Ptr(alg), - } -} - -func (c *Client) client() *generated.KeyVaultClient { - return base.Client(c.CryptoClient) -} - -func (c *Client) vaultURL() string { - return base.VaultURL(c.CryptoClient) -} - -func (c *Client) keyID() string { - return base.KeyName(c.CryptoClient) -} - -func (c *Client) keyVersion() string { - return base.KeyVersion(c.CryptoClient) -} - -// Encrypt encrypts plaintext using the client's key. This method encrypts only a single block of data, whose -// size dependens on the key and algorithm. -func (c *Client) Encrypt(ctx context.Context, alg EncryptionAlg, plaintext []byte, options *EncryptOptions) (EncryptResponse, error) { - if options == nil { - options = &EncryptOptions{} - } - - resp, err := c.client().Encrypt( - ctx, - c.vaultURL(), - c.keyID(), - c.keyVersion(), - options.toGeneratedKeyOperationsParameters(alg, plaintext), - &generated.KeyVaultClientEncryptOptions{}, - ) - if err != nil { - return EncryptResponse{}, err - } - - return encryptResponseFromGenerated(resp, alg), nil -} - -// DecryptOptions contains optional parameters for Decrypt. -type DecryptOptions struct { - // AuthData is additional data that is authenticated but not encrypted. For use in AES-GCM encryption. - AuthData []byte `json:"aad,omitempty"` - - // AuthTag is a tag to authenticate when performing decryption with an authenticated algorithm. - AuthTag []byte `json:"tag,omitempty"` - - // IV is the initialization vector for symmetric algorithms. - IV []byte `json:"iv,omitempty"` -} - -func (e DecryptOptions) toGeneratedKeyOperationsParameters(alg EncryptionAlg, value []byte) generated.KeyOperationsParameters { - return generated.KeyOperationsParameters{ - Algorithm: (*generated.JSONWebKeyEncryptionAlgorithm)(&alg), - Value: value, - AAD: e.AuthData, - Iv: e.IV, - Tag: e.AuthTag, - } -} - -// DecryptResponse is returned by Decrypt. -type DecryptResponse struct { - // Algorithm is the decryption algorithm. - Algorithm *EncryptionAlg - - // KeyID is the ID of the decrypting key. - KeyID *string - - // Plaintext is the decrypted bytes. - Plaintext []byte -} - -func decryptResponseFromGenerated(i generated.KeyVaultClientDecryptResponse, alg EncryptionAlg) DecryptResponse { - return DecryptResponse{ - Algorithm: to.Ptr(alg), - KeyID: i.Kid, - Plaintext: i.Result, - } -} - -// Decrypt decrypts the specified ciphertext. This method decrypts only a single block of data, whose -// size dependens on the key and algorithm. -func (c *Client) Decrypt(ctx context.Context, alg EncryptionAlg, ciphertext []byte, options *DecryptOptions) (DecryptResponse, error) { - if options == nil { - options = &DecryptOptions{} - } - - resp, err := c.client().Decrypt( - ctx, - c.vaultURL(), - c.keyID(), - c.keyVersion(), - options.toGeneratedKeyOperationsParameters(alg, ciphertext), - &generated.KeyVaultClientDecryptOptions{}, - ) - - if err != nil { - return DecryptResponse{}, err - } - - return decryptResponseFromGenerated(resp, alg), nil -} - -// WrapKeyOptions contains optional parameters for WrapKey. -type WrapKeyOptions struct { - // placeholder for future optional parameters -} - -func (w WrapKeyOptions) toGeneratedKeyOperationsParameters(alg WrapAlg, value []byte) generated.KeyOperationsParameters { - return generated.KeyOperationsParameters{ - Algorithm: (*generated.JSONWebKeyEncryptionAlgorithm)(&alg), - Value: value, - } -} - -// WrapKeyResponse is returned by WrapKey. -type WrapKeyResponse struct { - // Algorithm is the key wrapping algorithm. - Algorithm *WrapAlg - - // EncryptedKey is the wrapped key. - EncryptedKey []byte - - // KeyID is the ID of the wrapping key. - KeyID *string -} - -func wrapKeyResponseFromGenerated(i generated.KeyVaultClientWrapKeyResponse, alg WrapAlg) WrapKeyResponse { - return WrapKeyResponse{ - Algorithm: to.Ptr(alg), - KeyID: i.Kid, - EncryptedKey: i.Result, - } -} - -// WrapKey encrypts the specified key. -func (c *Client) WrapKey(ctx context.Context, alg WrapAlg, key []byte, options *WrapKeyOptions) (WrapKeyResponse, error) { - if options == nil { - options = &WrapKeyOptions{} - } - - resp, err := c.client().WrapKey( - ctx, - c.vaultURL(), - c.keyID(), - c.keyVersion(), - options.toGeneratedKeyOperationsParameters(alg, key), - &generated.KeyVaultClientWrapKeyOptions{}, - ) - - if err != nil { - return WrapKeyResponse{}, err - } - - return wrapKeyResponseFromGenerated(resp, alg), nil -} - -// UnwrapKeyOptions contains optional parameters for UnwrapKey. -type UnwrapKeyOptions struct { - // placeholder for future optional parameters -} - -func (w UnwrapKeyOptions) toGeneratedKeyOperationsParameters(alg WrapAlg, value []byte) generated.KeyOperationsParameters { - return generated.KeyOperationsParameters{ - Algorithm: (*generated.JSONWebKeyEncryptionAlgorithm)(&alg), - Value: value, - } -} - -// UnwrapKeyResponse is returned by UnwrapKey. -type UnwrapKeyResponse struct { - // Algorithm is the wrapping algorithm. - Algorithm *WrapAlg - - // Key is the unwrapped key. - Key []byte - - // KeyID is the ID of the wrapping key. - KeyID *string -} - -func unwrapKeyResponseFromGenerated(i generated.KeyVaultClientUnwrapKeyResponse, alg WrapAlg) UnwrapKeyResponse { - return UnwrapKeyResponse{ - KeyID: i.Kid, - Key: i.Result, - Algorithm: to.Ptr(alg), - } -} - -// UnwrapKey decrypts an encrypted key. -func (c *Client) UnwrapKey(ctx context.Context, alg WrapAlg, encryptedKey []byte, options *UnwrapKeyOptions) (UnwrapKeyResponse, error) { - if options == nil { - options = &UnwrapKeyOptions{} - } - - resp, err := c.client().UnwrapKey( - ctx, - c.vaultURL(), - c.keyID(), - c.keyVersion(), - options.toGeneratedKeyOperationsParameters(alg, encryptedKey), - &generated.KeyVaultClientUnwrapKeyOptions{}, - ) - if err != nil { - return UnwrapKeyResponse{}, err - } - - return unwrapKeyResponseFromGenerated(resp, alg), nil -} - -// SignOptions contains optional parameters for Sign. -type SignOptions struct { - // placeholder for future optional parameters -} - -func (s SignOptions) toGenerated() *generated.KeyVaultClientSignOptions { - return &generated.KeyVaultClientSignOptions{} -} - -// SignResponse is returned by Sign. -type SignResponse struct { - // Algorithm is the signing algorithm. - Algorithm *SignatureAlg - - // KeyID is the ID of the signing key. - KeyID *string - - // Signature is the signed data. - Signature []byte -} - -func signResponseFromGenerated(i generated.KeyVaultClientSignResponse, alg SignatureAlg) SignResponse { - return SignResponse{ - Algorithm: to.Ptr(alg), - KeyID: i.Kid, - Signature: i.Result, - } -} - -// Sign signs the specified digest. The hash algorithm used to compute the digest must be compatible with the specified algorithm. -func (c *Client) Sign(ctx context.Context, algorithm SignatureAlg, digest []byte, options *SignOptions) (SignResponse, error) { - if options == nil { - options = &SignOptions{} - } - - resp, err := c.client().Sign( - ctx, - c.vaultURL(), - c.keyID(), - c.keyVersion(), - generated.KeySignParameters{ - Algorithm: (*generated.JSONWebKeySignatureAlgorithm)(&algorithm), - Value: digest, - }, - options.toGenerated(), - ) - if err != nil { - return SignResponse{}, err - } - - return signResponseFromGenerated(resp, algorithm), nil -} - -// VerifyOptions contains optional parameters for Verify. -type VerifyOptions struct { - // placeholder for future optional parameters -} - -func (v VerifyOptions) toGenerated() *generated.KeyVaultClientVerifyOptions { - return &generated.KeyVaultClientVerifyOptions{} -} - -// VerifyResponse is returned by Verify. -type VerifyResponse struct { - // Algorithm is the verification algorithm. - Algorithm *SignatureAlg - - // IsValid is true when the signature is verified. - IsValid *bool `json:"value,omitempty" azure:"ro"` - - // KeyID is the ID of the verifying key. - KeyID *string -} - -func verifyResponseFromGenerated(i generated.KeyVaultClientVerifyResponse, id string, alg SignatureAlg) VerifyResponse { - return VerifyResponse{ - IsValid: i.Value, - KeyID: &id, - Algorithm: to.Ptr(alg), - } -} - -// Verify verifies the specified signature. The algorithm must be the same algorithm used to sign the digest, and -// compatible with the hash algorithm used to compute the digest. -func (c *Client) Verify(ctx context.Context, algorithm SignatureAlg, digest []byte, signature []byte, options *VerifyOptions) (VerifyResponse, error) { - if options == nil { - options = &VerifyOptions{} - } - - resp, err := c.client().Verify( - ctx, - c.vaultURL(), - c.keyID(), - c.keyVersion(), - generated.KeyVerifyParameters{ - Algorithm: (*generated.JSONWebKeySignatureAlgorithm)(&algorithm), - Digest: digest, - Signature: signature, - }, - options.toGenerated(), - ) - - if err != nil { - return VerifyResponse{}, err - } - - return verifyResponseFromGenerated(resp, c.keyID(), algorithm), nil -} diff --git a/sdk/keyvault/azkeys/crypto/crypto_client_test.go b/sdk/keyvault/azkeys/crypto/crypto_client_test.go deleted file mode 100644 index a4127c36cb89..000000000000 --- a/sdk/keyvault/azkeys/crypto/crypto_client_test.go +++ /dev/null @@ -1,31 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package crypto - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestConstructor(t *testing.T) { - client, err := NewClient("https://fakekvurl.vault.azure.net/keys/key89075156/0b29f1d3760f4407aeb996868c9a02a7", &FakeCredential{}, nil) - require.NoError(t, err) - require.NotNil(t, client.client()) - require.Equal(t, client.keyID(), "key89075156") - require.Equal(t, client.keyVersion(), "0b29f1d3760f4407aeb996868c9a02a7") - - client, err = NewClient("https://fakekvurl.vault.azure.net/keys/key89075156", &FakeCredential{}, nil) - require.NoError(t, err) - require.NotNil(t, client.client()) - require.Equal(t, client.keyID(), "key89075156") - require.Equal(t, client.keyVersion(), "") - - _, err = NewClient("https://fakekvurl.vault.azure.net/", &FakeCredential{}, nil) - require.Error(t, err) - require.Contains(t, err.Error(), "URL is not for a specific key, expect path to start with '/keys/', received") -} diff --git a/sdk/keyvault/azkeys/crypto/examples_test.go b/sdk/keyvault/azkeys/crypto/examples_test.go deleted file mode 100644 index bca8fc362fa2..000000000000 --- a/sdk/keyvault/azkeys/crypto/examples_test.go +++ /dev/null @@ -1,176 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package crypto_test - -import ( - "context" - "crypto/sha256" - "fmt" - - "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/crypto" -) - -func ExampleNewClient() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - _ = client // do something with client -} - -func ExampleClient_Encrypt() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - - encryptResponse, err := client.Encrypt(context.TODO(), crypto.EncryptionAlgRSAOAEP, []byte("plaintext"), nil) - if err != nil { - panic(err) - } - fmt.Println(encryptResponse.Ciphertext) -} - -func ExampleClient_Decrypt() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - - encryptResponse, err := client.Encrypt(context.TODO(), crypto.EncryptionAlgRSAOAEP, []byte("plaintext"), nil) - if err != nil { - panic(err) - } - fmt.Println(encryptResponse.Ciphertext) - - decryptResponse, err := client.Decrypt(context.TODO(), crypto.EncryptionAlgRSAOAEP, encryptResponse.Ciphertext, nil) - if err != nil { - panic(err) - } - fmt.Println(decryptResponse.Plaintext) -} - -func ExampleClient_WrapKey() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - - keyBytes := []byte("5063e6aaa845f150200547944fd199679c98ed6f99da0a0b2dafeaf1f4684496fd532c1c229968cb9dee44957fcef7ccef59ceda0b362e56bcd78fd3faee5781c623c0bb22b35beabde0664fd30e0e824aba3dd1b0afffc4a3d955ede20cf6a854d52cfd") - - // Wrap - wrapResp, err := client.WrapKey(context.TODO(), crypto.WrapAlgRSAOAEP, keyBytes, nil) - if err != nil { - panic(err) - } - fmt.Println(wrapResp.EncryptedKey) -} - -func ExampleClient_UnwrapKey() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - - keyBytes := []byte("5063e6aaa845f150200547944fd199679c98ed6f99da0a0b2dafeaf1f4684496fd532c1c229968cb9dee44957fcef7ccef59ceda0b362e56bcd78fd3faee5781c623c0bb22b35beabde0664fd30e0e824aba3dd1b0afffc4a3d955ede20cf6a854d52cfd") - - // Wrap - wrapResp, err := client.WrapKey(context.TODO(), crypto.WrapAlgRSAOAEP, keyBytes, nil) - if err != nil { - panic(err) - } - fmt.Println(wrapResp.EncryptedKey) - - // Unwrap - unwrapResp, err := client.UnwrapKey(context.TODO(), crypto.WrapAlgRSAOAEP, wrapResp.EncryptedKey, nil) - if err != nil { - panic(err) - } - fmt.Println(unwrapResp.Key) -} - -func ExampleClient_Sign() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - - hasher := sha256.New() - _, err = hasher.Write([]byte("plaintext")) - if err != nil { - panic(err) - } - digest := hasher.Sum(nil) - - signResponse, err := client.Sign(context.TODO(), crypto.SignatureAlgRS256, digest, nil) - if err != nil { - panic(err) - } - fmt.Println(signResponse.Signature) -} - -func ExampleClient_Verify() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := crypto.NewClient("https://.vault.azure.net/keys/", cred, nil) - if err != nil { - panic(err) - } - - hasher := sha256.New() - _, err = hasher.Write([]byte("plaintext")) - if err != nil { - panic(err) - } - digest := hasher.Sum(nil) - - signResponse, err := client.Sign(context.TODO(), crypto.SignatureAlgRS256, digest, nil) - if err != nil { - panic(err) - } - fmt.Println(signResponse.Signature) - - verifyResponse, err := client.Verify(context.TODO(), crypto.SignatureAlgRS256, digest, signResponse.Signature, nil) - if err != nil { - panic(err) - } - fmt.Println(*verifyResponse.IsValid) -} diff --git a/sdk/keyvault/azkeys/crypto/utils_test.go b/sdk/keyvault/azkeys/crypto/utils_test.go deleted file mode 100644 index 4fce98f34198..000000000000 --- a/sdk/keyvault/azkeys/crypto/utils_test.go +++ /dev/null @@ -1,69 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package crypto - -import ( - "context" - "os" - "testing" - "time" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" -) - -const fakeKvURL = "https://fakekvurl.vault.azure.net/" - -func TestMain(m *testing.M) { - // Initialize - if recording.GetRecordMode() == "record" { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - err := recording.AddURISanitizer(fakeKvURL, vaultUrl, nil) - if err != nil { - panic(err) - } - - err = recording.AddBodyKeySanitizer("$.key.kid", fakeKvURL, vaultUrl, nil) - if err != nil { - panic(err) - } - - err = recording.AddBodyKeySanitizer("$.recoveryId", fakeKvURL, vaultUrl, nil) - if err != nil { - panic(err) - } - - tenantID := os.Getenv("AZKEYS_TENANT_ID") - err = recording.AddHeaderRegexSanitizer("WWW-Authenticate", "00000000-0000-0000-0000-000000000000", tenantID, nil) - if err != nil { - panic(err) - } - - } - - os.Exit(m.Run()) -} - -type FakeCredential struct { - accountName string - accountKey string -} - -func NewFakeCredential(accountName, accountKey string) *FakeCredential { - return &FakeCredential{ - accountName: accountName, - accountKey: accountKey, - } -} - -func (f *FakeCredential) GetToken(ctx context.Context, options policy.TokenRequestOptions) (azcore.AccessToken, error) { - return azcore.AccessToken{ - Token: "faketoken", - ExpiresOn: time.Date(2040, time.January, 1, 1, 1, 1, 1, time.UTC), - }, nil -} diff --git a/sdk/keyvault/azkeys/custom_client.go b/sdk/keyvault/azkeys/custom_client.go new file mode 100644 index 000000000000..8dfc1175efda --- /dev/null +++ b/sdk/keyvault/azkeys/custom_client.go @@ -0,0 +1,41 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package azkeys + +// this file contains handwritten additions to the generated code + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal" +) + +// NewClient creates a client that accesses a Key Vault's keys. +func NewClient(vaultURL string, credential azcore.TokenCredential, options *azcore.ClientOptions) *Client { + authPolicy := internal.NewKeyVaultChallengePolicy(credential) + pl := runtime.NewPipeline(moduleName, version, runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}}, options) + return &Client{endpoint: vaultURL, pl: pl} +} + +// ID is a key's unique ID, containing its version, if any, and name. +type ID string + +// Name of the key. +func (i *ID) Name() string { + _, name, _ := internal.ParseID((*string)(i)) + return *name +} + +// Version of the key. This returns an empty string when the ID contains no version. +func (i *ID) Version() string { + _, _, version := internal.ParseID((*string)(i)) + if version == nil { + return "" + } + return *version +} diff --git a/sdk/keyvault/azkeys/doc.go b/sdk/keyvault/azkeys/doc.go deleted file mode 100644 index 5d8f1c4ad5b9..000000000000 --- a/sdk/keyvault/azkeys/doc.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -/* - -Package azkeys can be used to access an Azure Key Vault Keys instance. - -Azure KeyVault helps securely store and control access to tokens, passwords, certificates, API -keys, and other secrets. Azure Key Vault provides two types of resources to store and manage -cryptographic keys. Vaults support software-protected and HSM-protected (Hardware Security Module) -keys. Managed HSMs only support HSM-protected keys. - -* Vaults - Vaults provide a low-cost, easy to deploy, multi-tenant, zone-resilient -(where available), highly available key management solution suitable for most common -cloud application scenarios. -* Managed HSMs - Managed HSM provides single-tenant, zone-resilient (where available), -highly available HSMs to store and manage your cryptographic keys. Most suitable for -applications and usage scenarios that handle high value keys. Also helps to meet most -stringent security, compliance, and regulatory requirements. - -*/ - -package azkeys diff --git a/sdk/keyvault/azkeys/example_test.go b/sdk/keyvault/azkeys/example_test.go index 631fc95596f8..2b85fe6bf9d6 100644 --- a/sdk/keyvault/azkeys/example_test.go +++ b/sdk/keyvault/azkeys/example_test.go @@ -9,199 +9,114 @@ package azkeys_test import ( "context" "fmt" - "os" "time" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" ) +var client azkeys.Client + func ExampleNewClient() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") + vaultURL := "https://.vault.azure.net" cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { - panic(err) + // TODO: handle error } - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) - } - _ = client // do something with client + client := azkeys.NewClient(vaultURL, cred, nil) + _ = client } -func ExampleClient_CreateRSAKey() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) +func ExampleClient_CreateKey_rsa() { + params := azkeys.CreateKeyParameters{ + KeySize: to.Ptr(int32(2048)), + Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA), } - - resp, err := client.CreateRSAKey(context.TODO(), "new-rsa-key", &azkeys.CreateRSAKeyOptions{Size: to.Ptr(int32(2048))}) + resp, err := client.CreateKey(context.TODO(), "key-name", params, nil) if err != nil { - panic(err) + // TODO: handle error } - fmt.Println(*resp.Key.JSONWebKey.ID) - fmt.Println(*resp.Key.JSONWebKey.KeyType) + fmt.Println(*resp.Key.KID) } -func ExampleClient_CreateECKey() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) +func ExampleClient_CreateKey_ec() { + params := azkeys.CreateKeyParameters{ + Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256K), + Kty: to.Ptr(azkeys.JSONWebKeyTypeEC), } - - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) - } - - resp, err := client.CreateECKey(context.TODO(), "new-ec-key", &azkeys.CreateECKeyOptions{Curve: to.Ptr(azkeys.CurveNameP256)}) + resp, err := client.CreateKey(context.TODO(), "key-name", params, nil) if err != nil { - panic(err) + // TODO: handle error } - fmt.Println(*resp.Key.JSONWebKey.ID) - fmt.Println(*resp.Key.JSONWebKey.KeyType) + fmt.Println(*resp.Key.KID) } -func ExampleClient_GetKey() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) +func ExampleClient_DeleteKey() { + // DeleteKey returns when Key Vault has begun deleting the key. That can take several + // seconds to complete, so it may be necessary to wait before performing other operations + // on the deleted key. + resp, err := client.DeleteKey(context.TODO(), "key-name", nil) if err != nil { - panic(err) + // TODO: handle error } - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) - } - - resp, err := client.GetKey(context.TODO(), "key-to-retrieve", nil) - if err != nil { - panic(err) - } - fmt.Println(*resp.Key.JSONWebKey.ID) + // In a soft-delete enabled vault, deleted keys can be recovered until they're purged (permanently deleted). + fmt.Printf("Key will be purged at %v", resp.ScheduledPurgeDate) } -func ExampleClient_UpdateKeyProperties() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) - } - - resp, err := client.GetKey(context.TODO(), "key-to-update", nil) - if err != nil { - panic(err) - } - - resp.Key.Properties.Tags = map[string]*string{"Tag1": to.Ptr("val1")} - resp.Key.Properties.Enabled = to.Ptr(true) - - updateResp, err := client.UpdateKeyProperties(context.TODO(), *resp.Key.Properties, nil) - if err != nil { - panic(err) +func ExampleClient_PurgeDeletedKey() { + // this loop purges all the deleted keys in the vault + pager := client.NewListDeletedKeysPager(nil) + for pager.More() { + page, err := pager.NextPage(context.TODO()) + if err != nil { + // TODO: handle error + } + for _, key := range page.Value { + _, err := client.PurgeDeletedKey(context.TODO(), key.KID.Name(), nil) + if err != nil { + // TODO: handle error + } + } } - fmt.Printf("Enabled: %v\tTag1: %s\n", *updateResp.Key.Properties.Enabled, *updateResp.Key.Properties.Tags["Tag1"]) } -func ExampleClient_BeginDeleteKey() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) - } - - resp, err := client.BeginDeleteKey(context.TODO(), "key-to-delete", nil) - if err != nil { - panic(err) - } - pollResp, err := resp.PollUntilDone(context.TODO(), &runtime.PollUntilDoneOptions{Frequency: time.Second}) +func ExampleClient_GetKey() { + // passing an empty string for the version parameter gets the latest version of the key + resp, err := client.GetKey(context.TODO(), "key-name", "", nil) if err != nil { - panic(err) + // TODO: handle error } - fmt.Printf("Successfully deleted key %s", *pollResp.Key.ID) + fmt.Println(*resp.Key.KID) } -func ExampleClient_NewListPropertiesOfKeysPager() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) +func ExampleClient_UpdateKey() { + params := azkeys.UpdateKeyParameters{ + KeyAttributes: &azkeys.KeyAttributes{ + Expires: to.Ptr(time.Now().Add(48 * time.Hour)), + }, + // Key Vault doesn't interpret tags. The keys and values are up to your application. + Tags: map[string]*string{"expiraton-extended": to.Ptr("true")}, } - - client, err := azkeys.NewClient(vaultUrl, cred, nil) + // passing an empty string for the version parameter updates the latest version of the key + updateResp, err := client.UpdateKey(context.TODO(), "key-name", "", params, nil) if err != nil { - panic(err) + // TODO: handle error } + fmt.Printf("Enabled key %s", *updateResp.Key.KID) +} - pager := client.NewListPropertiesOfKeysPager(nil) +func ExampleClient_NewListKeysPager() { + pager := client.NewListKeysPager(nil) for pager.More() { resp, err := pager.NextPage(context.TODO()) if err != nil { - panic(err) + // TODO: handle error } - for _, key := range resp.Keys { - fmt.Println(*key.ID) + for _, key := range resp.Value { + fmt.Println(*key.KID) } } } - -func ExampleClient_UpdateKeyRotationPolicy() { - vaultUrl := os.Getenv("AZURE_KEYVAULT_URL") - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - panic(err) - } - - client, err := azkeys.NewClient(vaultUrl, cred, nil) - if err != nil { - panic(err) - } - - getResp, err := client.GetKeyRotationPolicy(context.TODO(), "key-to-update", nil) - if err != nil { - panic(err) - } - - getResp.Attributes.ExpiresIn = to.Ptr("P90D") - getResp.LifetimeActions = []*azkeys.LifetimeActions{ - { - Action: &azkeys.LifetimeActionsType{ - Type: to.Ptr(azkeys.RotationActionNotify), - }, - Trigger: &azkeys.LifetimeActionsTrigger{ - TimeBeforeExpiry: to.Ptr("P30D"), - }, - }, - } - - resp, err := client.UpdateKeyRotationPolicy(context.TODO(), "key-to-update", getResp.RotationPolicy, nil) - if err != nil { - panic(err) - } - fmt.Println("Updated key rotation policy for: ", *resp.ID) - - _, err = client.RotateKey(context.TODO(), "key-to-rotate", nil) - if err != nil { - panic(err) - } -} diff --git a/sdk/keyvault/azkeys/internal/base/clients.go b/sdk/keyvault/azkeys/internal/base/clients.go deleted file mode 100644 index 4c3132c9ebde..000000000000 --- a/sdk/keyvault/azkeys/internal/base/clients.go +++ /dev/null @@ -1,52 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package base - -import ( - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/generated" -) - -// CryptoClient is a wrapper around generated.KeyVaultClient with additional data -// needed by crypto.Client. This allows construction of a crypto.Client from the -// azkeys and crypto packages without having to use a bunch of type aliases. -type CryptoClient struct { - kvClient *generated.KeyVaultClient - vaultURL string - keyName string - keyVersion string -} - -// NewCryptoClient creates a new CryptoClient with the specified values. -func NewCryptoClient(vaultURL, keyName, keyVersion string, pl runtime.Pipeline) CryptoClient { - return CryptoClient{ - kvClient: generated.NewKeyVaultClient(pl), - vaultURL: vaultURL, - keyName: keyName, - keyVersion: keyVersion, - } -} - -// Client returns the underlying generated client. -func Client(client CryptoClient) *generated.KeyVaultClient { - return client.kvClient -} - -// VaultURL returns the vault URL for this client. -func VaultURL(client CryptoClient) string { - return client.vaultURL -} - -// KeyName returns the key name for this client. -func KeyName(client CryptoClient) string { - return client.keyName -} - -// KeyVersion returns the key version for this client (can be empty). -func KeyVersion(client CryptoClient) string { - return client.keyVersion -} diff --git a/sdk/keyvault/azkeys/internal/base/clients_test.go b/sdk/keyvault/azkeys/internal/base/clients_test.go deleted file mode 100644 index 3b67b3b4de13..000000000000 --- a/sdk/keyvault/azkeys/internal/base/clients_test.go +++ /dev/null @@ -1,28 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package base - -import ( - "testing" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "github.com/stretchr/testify/require" -) - -func TestCryptoClient(t *testing.T) { - const ( - vaultURL = "vault" - keyName = "name" - keyVersion = "version" - ) - pl := runtime.NewPipeline("test", "v0.0.1", runtime.PipelineOptions{}, nil) - client := NewCryptoClient(vaultURL, keyName, keyVersion, pl) - require.Equal(t, vaultURL, VaultURL(client)) - require.Equal(t, keyName, KeyName(client)) - require.Equal(t, keyVersion, KeyVersion(client)) - require.NotZero(t, Client(client)) -} diff --git a/sdk/keyvault/azkeys/internal/generated/constants.go b/sdk/keyvault/azkeys/internal/generated/constants.go deleted file mode 100644 index c8d0e51a1003..000000000000 --- a/sdk/keyvault/azkeys/internal/generated/constants.go +++ /dev/null @@ -1,269 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. -// Changes may cause incorrect behavior and will be lost if the code is regenerated. - -package generated - -// ActionType - The type of the action. -type ActionType string - -const ( - // ActionTypeRotate - Rotate the key based on the key policy. - ActionTypeRotate ActionType = "rotate" - // ActionTypeNotify - Trigger event grid events. For preview, the notification time is not configurable and it is default - // to 30 days before expiry. - ActionTypeNotify ActionType = "notify" -) - -// PossibleActionTypeValues returns the possible values for the ActionType const type. -func PossibleActionTypeValues() []ActionType { - return []ActionType{ - ActionTypeRotate, - ActionTypeNotify, - } -} - -// DeletionRecoveryLevel - Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains -// 'Purgeable' the key can be permanently deleted by a privileged user; otherwise, only the system -// can purge the key, at the end of the retention interval. -type DeletionRecoveryLevel string - -const ( - // DeletionRecoveryLevelCustomizedRecoverable - 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. - DeletionRecoveryLevelCustomizedRecoverable DeletionRecoveryLevel = "CustomizedRecoverable" - // DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription - 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. - DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription DeletionRecoveryLevel = "CustomizedRecoverable+ProtectedSubscription" - // DeletionRecoveryLevelCustomizedRecoverablePurgeable - 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. - DeletionRecoveryLevelCustomizedRecoverablePurgeable DeletionRecoveryLevel = "CustomizedRecoverable+Purgeable" - // DeletionRecoveryLevelPurgeable - 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.) - DeletionRecoveryLevelPurgeable DeletionRecoveryLevel = "Purgeable" - // DeletionRecoveryLevelRecoverable - 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 - DeletionRecoveryLevelRecoverable DeletionRecoveryLevel = "Recoverable" - // DeletionRecoveryLevelRecoverableProtectedSubscription - 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 - DeletionRecoveryLevelRecoverableProtectedSubscription DeletionRecoveryLevel = "Recoverable+ProtectedSubscription" - // DeletionRecoveryLevelRecoverablePurgeable - 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 - DeletionRecoveryLevelRecoverablePurgeable DeletionRecoveryLevel = "Recoverable+Purgeable" -) - -// PossibleDeletionRecoveryLevelValues returns the possible values for the DeletionRecoveryLevel const type. -func PossibleDeletionRecoveryLevelValues() []DeletionRecoveryLevel { - return []DeletionRecoveryLevel{ - DeletionRecoveryLevelCustomizedRecoverable, - DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription, - DeletionRecoveryLevelCustomizedRecoverablePurgeable, - DeletionRecoveryLevelPurgeable, - DeletionRecoveryLevelRecoverable, - DeletionRecoveryLevelRecoverableProtectedSubscription, - DeletionRecoveryLevelRecoverablePurgeable, - } -} - -// JSONWebKeyCurveName - Elliptic curve name. For valid values, see JsonWebKeyCurveName. -type JSONWebKeyCurveName string - -const ( - // JSONWebKeyCurveNameP256 - The NIST P-256 elliptic curve, AKA SECG curve SECP256R1. - JSONWebKeyCurveNameP256 JSONWebKeyCurveName = "P-256" - // JSONWebKeyCurveNameP256K - The SECG SECP256K1 elliptic curve. - JSONWebKeyCurveNameP256K JSONWebKeyCurveName = "P-256K" - // JSONWebKeyCurveNameP384 - The NIST P-384 elliptic curve, AKA SECG curve SECP384R1. - JSONWebKeyCurveNameP384 JSONWebKeyCurveName = "P-384" - // JSONWebKeyCurveNameP521 - The NIST P-521 elliptic curve, AKA SECG curve SECP521R1. - JSONWebKeyCurveNameP521 JSONWebKeyCurveName = "P-521" -) - -// PossibleJSONWebKeyCurveNameValues returns the possible values for the JSONWebKeyCurveName const type. -func PossibleJSONWebKeyCurveNameValues() []JSONWebKeyCurveName { - return []JSONWebKeyCurveName{ - JSONWebKeyCurveNameP256, - JSONWebKeyCurveNameP256K, - JSONWebKeyCurveNameP384, - JSONWebKeyCurveNameP521, - } -} - -// JSONWebKeyEncryptionAlgorithm - algorithm identifier -type JSONWebKeyEncryptionAlgorithm string - -const ( - JSONWebKeyEncryptionAlgorithmA128CBC JSONWebKeyEncryptionAlgorithm = "A128CBC" - JSONWebKeyEncryptionAlgorithmA128CBCPAD JSONWebKeyEncryptionAlgorithm = "A128CBCPAD" - JSONWebKeyEncryptionAlgorithmA128GCM JSONWebKeyEncryptionAlgorithm = "A128GCM" - JSONWebKeyEncryptionAlgorithmA128KW JSONWebKeyEncryptionAlgorithm = "A128KW" - JSONWebKeyEncryptionAlgorithmA192CBC JSONWebKeyEncryptionAlgorithm = "A192CBC" - JSONWebKeyEncryptionAlgorithmA192CBCPAD JSONWebKeyEncryptionAlgorithm = "A192CBCPAD" - JSONWebKeyEncryptionAlgorithmA192GCM JSONWebKeyEncryptionAlgorithm = "A192GCM" - JSONWebKeyEncryptionAlgorithmA192KW JSONWebKeyEncryptionAlgorithm = "A192KW" - JSONWebKeyEncryptionAlgorithmA256CBC JSONWebKeyEncryptionAlgorithm = "A256CBC" - JSONWebKeyEncryptionAlgorithmA256CBCPAD JSONWebKeyEncryptionAlgorithm = "A256CBCPAD" - JSONWebKeyEncryptionAlgorithmA256GCM JSONWebKeyEncryptionAlgorithm = "A256GCM" - JSONWebKeyEncryptionAlgorithmA256KW JSONWebKeyEncryptionAlgorithm = "A256KW" - JSONWebKeyEncryptionAlgorithmRSA15 JSONWebKeyEncryptionAlgorithm = "RSA1_5" - JSONWebKeyEncryptionAlgorithmRSAOAEP JSONWebKeyEncryptionAlgorithm = "RSA-OAEP" - JSONWebKeyEncryptionAlgorithmRSAOAEP256 JSONWebKeyEncryptionAlgorithm = "RSA-OAEP-256" -) - -// PossibleJSONWebKeyEncryptionAlgorithmValues returns the possible values for the JSONWebKeyEncryptionAlgorithm const type. -func PossibleJSONWebKeyEncryptionAlgorithmValues() []JSONWebKeyEncryptionAlgorithm { - return []JSONWebKeyEncryptionAlgorithm{ - JSONWebKeyEncryptionAlgorithmA128CBC, - JSONWebKeyEncryptionAlgorithmA128CBCPAD, - JSONWebKeyEncryptionAlgorithmA128GCM, - JSONWebKeyEncryptionAlgorithmA128KW, - JSONWebKeyEncryptionAlgorithmA192CBC, - JSONWebKeyEncryptionAlgorithmA192CBCPAD, - JSONWebKeyEncryptionAlgorithmA192GCM, - JSONWebKeyEncryptionAlgorithmA192KW, - JSONWebKeyEncryptionAlgorithmA256CBC, - JSONWebKeyEncryptionAlgorithmA256CBCPAD, - JSONWebKeyEncryptionAlgorithmA256GCM, - JSONWebKeyEncryptionAlgorithmA256KW, - JSONWebKeyEncryptionAlgorithmRSA15, - JSONWebKeyEncryptionAlgorithmRSAOAEP, - JSONWebKeyEncryptionAlgorithmRSAOAEP256, - } -} - -// JSONWebKeyOperation - JSON web key operations. For more information, see JsonWebKeyOperation. -type JSONWebKeyOperation string - -const ( - JSONWebKeyOperationDecrypt JSONWebKeyOperation = "decrypt" - JSONWebKeyOperationEncrypt JSONWebKeyOperation = "encrypt" - JSONWebKeyOperationExport JSONWebKeyOperation = "export" - JSONWebKeyOperationImport JSONWebKeyOperation = "import" - JSONWebKeyOperationSign JSONWebKeyOperation = "sign" - JSONWebKeyOperationUnwrapKey JSONWebKeyOperation = "unwrapKey" - JSONWebKeyOperationVerify JSONWebKeyOperation = "verify" - JSONWebKeyOperationWrapKey JSONWebKeyOperation = "wrapKey" -) - -// PossibleJSONWebKeyOperationValues returns the possible values for the JSONWebKeyOperation const type. -func PossibleJSONWebKeyOperationValues() []JSONWebKeyOperation { - return []JSONWebKeyOperation{ - JSONWebKeyOperationDecrypt, - JSONWebKeyOperationEncrypt, - JSONWebKeyOperationExport, - JSONWebKeyOperationImport, - JSONWebKeyOperationSign, - JSONWebKeyOperationUnwrapKey, - JSONWebKeyOperationVerify, - JSONWebKeyOperationWrapKey, - } -} - -// JSONWebKeySignatureAlgorithm - The signing/verification algorithm identifier. For more information on possible algorithm -// types, see JsonWebKeySignatureAlgorithm. -type JSONWebKeySignatureAlgorithm string - -const ( - // JSONWebKeySignatureAlgorithmES256 - ECDSA using P-256 and SHA-256, as described in https://tools.ietf.org/html/rfc7518. - JSONWebKeySignatureAlgorithmES256 JSONWebKeySignatureAlgorithm = "ES256" - // JSONWebKeySignatureAlgorithmES256K - ECDSA using P-256K and SHA-256, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmES256K JSONWebKeySignatureAlgorithm = "ES256K" - // JSONWebKeySignatureAlgorithmES384 - ECDSA using P-384 and SHA-384, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmES384 JSONWebKeySignatureAlgorithm = "ES384" - // JSONWebKeySignatureAlgorithmES512 - ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmES512 JSONWebKeySignatureAlgorithm = "ES512" - // JSONWebKeySignatureAlgorithmPS256 - RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmPS256 JSONWebKeySignatureAlgorithm = "PS256" - // JSONWebKeySignatureAlgorithmPS384 - RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmPS384 JSONWebKeySignatureAlgorithm = "PS384" - // JSONWebKeySignatureAlgorithmPS512 - RSASSA-PSS using SHA-512 and MGF1 with SHA-512, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmPS512 JSONWebKeySignatureAlgorithm = "PS512" - // JSONWebKeySignatureAlgorithmRS256 - RSASSA-PKCS1-v1_5 using SHA-256, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmRS256 JSONWebKeySignatureAlgorithm = "RS256" - // JSONWebKeySignatureAlgorithmRS384 - RSASSA-PKCS1-v1_5 using SHA-384, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmRS384 JSONWebKeySignatureAlgorithm = "RS384" - // JSONWebKeySignatureAlgorithmRS512 - RSASSA-PKCS1-v1_5 using SHA-512, as described in https://tools.ietf.org/html/rfc7518 - JSONWebKeySignatureAlgorithmRS512 JSONWebKeySignatureAlgorithm = "RS512" - // JSONWebKeySignatureAlgorithmRSNULL - Reserved - JSONWebKeySignatureAlgorithmRSNULL JSONWebKeySignatureAlgorithm = "RSNULL" -) - -// PossibleJSONWebKeySignatureAlgorithmValues returns the possible values for the JSONWebKeySignatureAlgorithm const type. -func PossibleJSONWebKeySignatureAlgorithmValues() []JSONWebKeySignatureAlgorithm { - return []JSONWebKeySignatureAlgorithm{ - JSONWebKeySignatureAlgorithmES256, - JSONWebKeySignatureAlgorithmES256K, - JSONWebKeySignatureAlgorithmES384, - JSONWebKeySignatureAlgorithmES512, - JSONWebKeySignatureAlgorithmPS256, - JSONWebKeySignatureAlgorithmPS384, - JSONWebKeySignatureAlgorithmPS512, - JSONWebKeySignatureAlgorithmRS256, - JSONWebKeySignatureAlgorithmRS384, - JSONWebKeySignatureAlgorithmRS512, - JSONWebKeySignatureAlgorithmRSNULL, - } -} - -// JSONWebKeyType - JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. -type JSONWebKeyType string - -const ( - // JSONWebKeyTypeEC - Elliptic Curve. - JSONWebKeyTypeEC JSONWebKeyType = "EC" - // JSONWebKeyTypeECHSM - Elliptic Curve with a private key which is stored in the HSM. - JSONWebKeyTypeECHSM JSONWebKeyType = "EC-HSM" - // JSONWebKeyTypeOct - Octet sequence (used to represent symmetric keys) - JSONWebKeyTypeOct JSONWebKeyType = "oct" - // JSONWebKeyTypeOctHSM - Octet sequence (used to represent symmetric keys) which is stored the HSM. - JSONWebKeyTypeOctHSM JSONWebKeyType = "oct-HSM" - // JSONWebKeyTypeRSA - RSA (https://tools.ietf.org/html/rfc3447) - JSONWebKeyTypeRSA JSONWebKeyType = "RSA" - // JSONWebKeyTypeRSAHSM - RSA with a private key which is stored in the HSM. - JSONWebKeyTypeRSAHSM JSONWebKeyType = "RSA-HSM" -) - -// PossibleJSONWebKeyTypeValues returns the possible values for the JSONWebKeyType const type. -func PossibleJSONWebKeyTypeValues() []JSONWebKeyType { - return []JSONWebKeyType{ - JSONWebKeyTypeEC, - JSONWebKeyTypeECHSM, - JSONWebKeyTypeOct, - JSONWebKeyTypeOctHSM, - JSONWebKeyTypeRSA, - JSONWebKeyTypeRSAHSM, - } -} - -// KeyEncryptionAlgorithm - The encryption algorithm to use to protected the exported key material -type KeyEncryptionAlgorithm string - -const ( - KeyEncryptionAlgorithmCKMRSAAESKEYWRAP KeyEncryptionAlgorithm = "CKM_RSA_AES_KEY_WRAP" - KeyEncryptionAlgorithmRSAAESKEYWRAP256 KeyEncryptionAlgorithm = "RSA_AES_KEY_WRAP_256" - KeyEncryptionAlgorithmRSAAESKEYWRAP384 KeyEncryptionAlgorithm = "RSA_AES_KEY_WRAP_384" -) - -// PossibleKeyEncryptionAlgorithmValues returns the possible values for the KeyEncryptionAlgorithm const type. -func PossibleKeyEncryptionAlgorithmValues() []KeyEncryptionAlgorithm { - return []KeyEncryptionAlgorithm{ - KeyEncryptionAlgorithmCKMRSAAESKEYWRAP, - KeyEncryptionAlgorithmRSAAESKEYWRAP256, - KeyEncryptionAlgorithmRSAAESKEYWRAP384, - } -} diff --git a/sdk/keyvault/azkeys/internal/generated/keyvault_client.go b/sdk/keyvault/azkeys/internal/generated/keyvault_client.go deleted file mode 100644 index 7f9b08d078e9..000000000000 --- a/sdk/keyvault/azkeys/internal/generated/keyvault_client.go +++ /dev/null @@ -1,1365 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. -// Changes may cause incorrect behavior and will be lost if the code is regenerated. - -package generated - -import ( - "context" - "errors" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "net/http" - "net/url" - "strconv" - "strings" -) - -// KeyVaultClient contains the methods for the KeyVaultClient group. -// Don't use this type directly, use NewKeyVaultClient() instead. -type KeyVaultClient struct { - pl runtime.Pipeline -} - -// NewKeyVaultClient creates a new instance of KeyVaultClient with the specified values. -// pl - the pipeline used for sending requests and handling responses. -func NewKeyVaultClient(pl runtime.Pipeline) *KeyVaultClient { - client := &KeyVaultClient{ - pl: pl, - } - return client -} - -// BackupKey - The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does -// NOT return key material in a form that can be used outside the Azure Key Vault system, -// the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this -// operation is to allow a client to GENERATE a key in one Azure Key Vault -// instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to -// export, in protected form, any key type from Azure Key Vault. Individual -// versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that -// a BACKUP from one geographical area cannot be restored to another -// geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This -// operation requires the key/backup permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// options - KeyVaultClientBackupKeyOptions contains the optional parameters for the KeyVaultClient.BackupKey method. -func (client *KeyVaultClient) BackupKey(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientBackupKeyOptions) (KeyVaultClientBackupKeyResponse, error) { - req, err := client.backupKeyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientBackupKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientBackupKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientBackupKeyResponse{}, runtime.NewResponseError(resp) - } - return client.backupKeyHandleResponse(resp) -} - -// backupKeyCreateRequest creates the BackupKey request. -func (client *KeyVaultClient) backupKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientBackupKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/backup" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// backupKeyHandleResponse handles the BackupKey response. -func (client *KeyVaultClient) backupKeyHandleResponse(resp *http.Response) (KeyVaultClientBackupKeyResponse, error) { - result := KeyVaultClientBackupKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.BackupKeyResult); err != nil { - return KeyVaultClientBackupKeyResponse{}, err - } - return result, nil -} - -// CreateKey - The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, -// Azure Key Vault creates a new version of the key. It requires the keys/create -// permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name for the new key. The system will generate the version name for the new key. -// parameters - The parameters to create a key. -// options - KeyVaultClientCreateKeyOptions contains the optional parameters for the KeyVaultClient.CreateKey method. -func (client *KeyVaultClient) CreateKey(ctx context.Context, vaultBaseURL string, keyName string, parameters KeyCreateParameters, options *KeyVaultClientCreateKeyOptions) (KeyVaultClientCreateKeyResponse, error) { - req, err := client.createKeyCreateRequest(ctx, vaultBaseURL, keyName, parameters, options) - if err != nil { - return KeyVaultClientCreateKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientCreateKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientCreateKeyResponse{}, runtime.NewResponseError(resp) - } - return client.createKeyHandleResponse(resp) -} - -// createKeyCreateRequest creates the CreateKey request. -func (client *KeyVaultClient) createKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, parameters KeyCreateParameters, options *KeyVaultClientCreateKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/create" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// createKeyHandleResponse handles the CreateKey response. -func (client *KeyVaultClient) createKeyHandleResponse(resp *http.Response) (KeyVaultClientCreateKeyResponse, error) { - result := KeyVaultClientCreateKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientCreateKeyResponse{}, err - } - return result, nil -} - -// Decrypt - The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified -// algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of -// data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT -// operation applies to asymmetric and symmetric keys stored in Azure Key Vault -// since it uses the private portion of the key. This operation requires the keys/decrypt permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// keyVersion - The version of the key. -// parameters - The parameters for the decryption operation. -// options - KeyVaultClientDecryptOptions contains the optional parameters for the KeyVaultClient.Decrypt method. -func (client *KeyVaultClient) Decrypt(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientDecryptOptions) (KeyVaultClientDecryptResponse, error) { - req, err := client.decryptCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientDecryptResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientDecryptResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientDecryptResponse{}, runtime.NewResponseError(resp) - } - return client.decryptHandleResponse(resp) -} - -// decryptCreateRequest creates the Decrypt request. -func (client *KeyVaultClient) decryptCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientDecryptOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/decrypt" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// decryptHandleResponse handles the Decrypt response. -func (client *KeyVaultClient) decryptHandleResponse(resp *http.Response) (KeyVaultClientDecryptResponse, error) { - result := KeyVaultClientDecryptResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { - return KeyVaultClientDecryptResponse{}, err - } - return result, nil -} - -// DeleteKey - The delete key operation cannot be used to remove individual versions of a key. This operation removes the -// cryptographic material associated with the key, which means the key is not usable for -// Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key to delete. -// options - KeyVaultClientDeleteKeyOptions contains the optional parameters for the KeyVaultClient.DeleteKey method. -func (client *KeyVaultClient) DeleteKey(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientDeleteKeyOptions) (KeyVaultClientDeleteKeyResponse, error) { - req, err := client.deleteKeyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientDeleteKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientDeleteKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientDeleteKeyResponse{}, runtime.NewResponseError(resp) - } - return client.deleteKeyHandleResponse(resp) -} - -// deleteKeyCreateRequest creates the DeleteKey request. -func (client *KeyVaultClient) deleteKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientDeleteKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// deleteKeyHandleResponse handles the DeleteKey response. -func (client *KeyVaultClient) deleteKeyHandleResponse(resp *http.Response) (KeyVaultClientDeleteKeyResponse, error) { - result := KeyVaultClientDeleteKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.DeletedKeyBundle); err != nil { - return KeyVaultClientDeleteKeyResponse{}, err - } - return result, nil -} - -// Encrypt - The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure -// Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size -// of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly -// necessary for symmetric keys stored in Azure Key Vault since protection with an -// asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience -// for callers that have a key-reference but do not have access to the -// public key material. This operation requires the keys/encrypt permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// keyVersion - The version of the key. -// parameters - The parameters for the encryption operation. -// options - KeyVaultClientEncryptOptions contains the optional parameters for the KeyVaultClient.Encrypt method. -func (client *KeyVaultClient) Encrypt(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientEncryptOptions) (KeyVaultClientEncryptResponse, error) { - req, err := client.encryptCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientEncryptResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientEncryptResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientEncryptResponse{}, runtime.NewResponseError(resp) - } - return client.encryptHandleResponse(resp) -} - -// encryptCreateRequest creates the Encrypt request. -func (client *KeyVaultClient) encryptCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientEncryptOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/encrypt" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// encryptHandleResponse handles the Encrypt response. -func (client *KeyVaultClient) encryptHandleResponse(resp *http.Response) (KeyVaultClientEncryptResponse, error) { - result := KeyVaultClientEncryptResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { - return KeyVaultClientEncryptResponse{}, err - } - return result, nil -} - -// GetDeletedKey - The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be -// invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This -// operation requires the keys/get permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// options - KeyVaultClientGetDeletedKeyOptions contains the optional parameters for the KeyVaultClient.GetDeletedKey method. -func (client *KeyVaultClient) GetDeletedKey(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientGetDeletedKeyOptions) (KeyVaultClientGetDeletedKeyResponse, error) { - req, err := client.GetDeletedKeyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientGetDeletedKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetDeletedKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetDeletedKeyResponse{}, runtime.NewResponseError(resp) - } - return client.GetDeletedKeyHandleResponse(resp) -} - -// GetDeletedKeyCreateRequest creates the GetDeletedKey request. -func (client *KeyVaultClient) GetDeletedKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientGetDeletedKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/deletedkeys/{key-name}" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// GetDeletedKeyHandleResponse handles the GetDeletedKey response. -func (client *KeyVaultClient) GetDeletedKeyHandleResponse(resp *http.Response) (KeyVaultClientGetDeletedKeyResponse, error) { - result := KeyVaultClientGetDeletedKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.DeletedKeyBundle); err != nil { - return KeyVaultClientGetDeletedKeyResponse{}, err - } - return result, nil -} - -// NewGetDeletedKeysPager - Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public -// part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys -// operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return -// an error if invoked on a non soft-delete enabled vault. This operation -// requires the keys/list permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// options - KeyVaultClientGetDeletedKeysOptions contains the optional parameters for the KeyVaultClient.GetDeletedKeys method. -func (client *KeyVaultClient) NewGetDeletedKeysPager(vaultBaseURL string, options *KeyVaultClientGetDeletedKeysOptions) *runtime.Pager[KeyVaultClientGetDeletedKeysResponse] { - return runtime.NewPager(runtime.PagingHandler[KeyVaultClientGetDeletedKeysResponse]{ - More: func(page KeyVaultClientGetDeletedKeysResponse) bool { - return page.NextLink != nil && len(*page.NextLink) > 0 - }, - Fetcher: func(ctx context.Context, page *KeyVaultClientGetDeletedKeysResponse) (KeyVaultClientGetDeletedKeysResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.GetDeletedKeysCreateRequest(ctx, vaultBaseURL, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return KeyVaultClientGetDeletedKeysResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetDeletedKeysResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetDeletedKeysResponse{}, runtime.NewResponseError(resp) - } - return client.GetDeletedKeysHandleResponse(resp) - }, - }) -} - -// GetDeletedKeysCreateRequest creates the GetDeletedKeys request. -func (client *KeyVaultClient) GetDeletedKeysCreateRequest(ctx context.Context, vaultBaseURL string, options *KeyVaultClientGetDeletedKeysOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/deletedkeys" - req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - if options != nil && options.Maxresults != nil { - reqQP.Set("maxresults", strconv.FormatInt(int64(*options.Maxresults), 10)) - } - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// GetDeletedKeysHandleResponse handles the GetDeletedKeys response. -func (client *KeyVaultClient) GetDeletedKeysHandleResponse(resp *http.Response) (KeyVaultClientGetDeletedKeysResponse, error) { - result := KeyVaultClientGetDeletedKeysResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.DeletedKeyListResult); err != nil { - return KeyVaultClientGetDeletedKeysResponse{}, err - } - return result, nil -} - -// GetKey - The get key operation is applicable to all key types. If the requested key is symmetric, then no key material -// is released in the response. This operation requires the keys/get permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key to get. -// keyVersion - Adding the version parameter retrieves a specific version of a key. This URI fragment is optional. If not -// specified, the latest version of the key is returned. -// options - KeyVaultClientGetKeyOptions contains the optional parameters for the KeyVaultClient.GetKey method. -func (client *KeyVaultClient) GetKey(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, options *KeyVaultClientGetKeyOptions) (KeyVaultClientGetKeyResponse, error) { - req, err := client.GetKeyCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, options) - if err != nil { - return KeyVaultClientGetKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetKeyResponse{}, runtime.NewResponseError(resp) - } - return client.GetKeyHandleResponse(resp) -} - -// GetKeyCreateRequest creates the GetKey request. -func (client *KeyVaultClient) GetKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, options *KeyVaultClientGetKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// GetKeyHandleResponse handles the GetKey response. -func (client *KeyVaultClient) GetKeyHandleResponse(resp *http.Response) (KeyVaultClientGetKeyResponse, error) { - result := KeyVaultClientGetKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientGetKeyResponse{}, err - } - return result, nil -} - -// GetKeyRotationPolicy - The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key -// vault. This operation requires the keys/get permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key in a given key vault. -// options - KeyVaultClientGetKeyRotationPolicyOptions contains the optional parameters for the KeyVaultClient.GetKeyRotationPolicy -// method. -func (client *KeyVaultClient) GetKeyRotationPolicy(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientGetKeyRotationPolicyOptions) (KeyVaultClientGetKeyRotationPolicyResponse, error) { - req, err := client.GetKeyRotationPolicyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientGetKeyRotationPolicyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetKeyRotationPolicyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetKeyRotationPolicyResponse{}, runtime.NewResponseError(resp) - } - return client.GetKeyRotationPolicyHandleResponse(resp) -} - -// GetKeyRotationPolicyCreateRequest creates the GetKeyRotationPolicy request. -func (client *KeyVaultClient) GetKeyRotationPolicyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientGetKeyRotationPolicyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/rotationpolicy" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// GetKeyRotationPolicyHandleResponse handles the GetKeyRotationPolicy response. -func (client *KeyVaultClient) GetKeyRotationPolicyHandleResponse(resp *http.Response) (KeyVaultClientGetKeyRotationPolicyResponse, error) { - result := KeyVaultClientGetKeyRotationPolicyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyRotationPolicy); err != nil { - return KeyVaultClientGetKeyRotationPolicyResponse{}, err - } - return result, nil -} - -// NewGetKeyVersionsPager - The full key identifier, attributes, and tags are provided in the response. This operation requires -// the keys/list permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// options - KeyVaultClientGetKeyVersionsOptions contains the optional parameters for the KeyVaultClient.GetKeyVersions method. -func (client *KeyVaultClient) NewGetKeyVersionsPager(vaultBaseURL string, keyName string, options *KeyVaultClientGetKeyVersionsOptions) *runtime.Pager[KeyVaultClientGetKeyVersionsResponse] { - return runtime.NewPager(runtime.PagingHandler[KeyVaultClientGetKeyVersionsResponse]{ - More: func(page KeyVaultClientGetKeyVersionsResponse) bool { - return page.NextLink != nil && len(*page.NextLink) > 0 - }, - Fetcher: func(ctx context.Context, page *KeyVaultClientGetKeyVersionsResponse) (KeyVaultClientGetKeyVersionsResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.GetKeyVersionsCreateRequest(ctx, vaultBaseURL, keyName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return KeyVaultClientGetKeyVersionsResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetKeyVersionsResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetKeyVersionsResponse{}, runtime.NewResponseError(resp) - } - return client.GetKeyVersionsHandleResponse(resp) - }, - }) -} - -// GetKeyVersionsCreateRequest creates the GetKeyVersions request. -func (client *KeyVaultClient) GetKeyVersionsCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientGetKeyVersionsOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/versions" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - if options != nil && options.Maxresults != nil { - reqQP.Set("maxresults", strconv.FormatInt(int64(*options.Maxresults), 10)) - } - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// GetKeyVersionsHandleResponse handles the GetKeyVersions response. -func (client *KeyVaultClient) GetKeyVersionsHandleResponse(resp *http.Response) (KeyVaultClientGetKeyVersionsResponse, error) { - result := KeyVaultClientGetKeyVersionsResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyListResult); err != nil { - return KeyVaultClientGetKeyVersionsResponse{}, err - } - return result, nil -} - -// NewGetKeysPager - Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part -// of a stored key. The LIST operation is applicable to all key types, however only the base key -// identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. -// This operation requires the keys/list permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// options - KeyVaultClientGetKeysOptions contains the optional parameters for the KeyVaultClient.GetKeys method. -func (client *KeyVaultClient) NewGetKeysPager(vaultBaseURL string, options *KeyVaultClientGetKeysOptions) *runtime.Pager[KeyVaultClientGetKeysResponse] { - return runtime.NewPager(runtime.PagingHandler[KeyVaultClientGetKeysResponse]{ - More: func(page KeyVaultClientGetKeysResponse) bool { - return page.NextLink != nil && len(*page.NextLink) > 0 - }, - Fetcher: func(ctx context.Context, page *KeyVaultClientGetKeysResponse) (KeyVaultClientGetKeysResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.GetKeysCreateRequest(ctx, vaultBaseURL, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return KeyVaultClientGetKeysResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetKeysResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetKeysResponse{}, runtime.NewResponseError(resp) - } - return client.GetKeysHandleResponse(resp) - }, - }) -} - -// GetKeysCreateRequest creates the GetKeys request. -func (client *KeyVaultClient) GetKeysCreateRequest(ctx context.Context, vaultBaseURL string, options *KeyVaultClientGetKeysOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys" - req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - if options != nil && options.Maxresults != nil { - reqQP.Set("maxresults", strconv.FormatInt(int64(*options.Maxresults), 10)) - } - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// GetKeysHandleResponse handles the GetKeys response. -func (client *KeyVaultClient) GetKeysHandleResponse(resp *http.Response) (KeyVaultClientGetKeysResponse, error) { - result := KeyVaultClientGetKeysResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyListResult); err != nil { - return KeyVaultClientGetKeysResponse{}, err - } - return result, nil -} - -// GetRandomBytes - Get the requested number of bytes containing random values from a managed HSM. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// parameters - The request object to get random bytes. -// options - KeyVaultClientGetRandomBytesOptions contains the optional parameters for the KeyVaultClient.GetRandomBytes method. -func (client *KeyVaultClient) GetRandomBytes(ctx context.Context, vaultBaseURL string, parameters GetRandomBytesRequest, options *KeyVaultClientGetRandomBytesOptions) (KeyVaultClientGetRandomBytesResponse, error) { - req, err := client.GetRandomBytesCreateRequest(ctx, vaultBaseURL, parameters, options) - if err != nil { - return KeyVaultClientGetRandomBytesResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientGetRandomBytesResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientGetRandomBytesResponse{}, runtime.NewResponseError(resp) - } - return client.GetRandomBytesHandleResponse(resp) -} - -// GetRandomBytesCreateRequest creates the GetRandomBytes request. -func (client *KeyVaultClient) GetRandomBytesCreateRequest(ctx context.Context, vaultBaseURL string, parameters GetRandomBytesRequest, options *KeyVaultClientGetRandomBytesOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/rng" - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// GetRandomBytesHandleResponse handles the GetRandomBytes response. -func (client *KeyVaultClient) GetRandomBytesHandleResponse(resp *http.Response) (KeyVaultClientGetRandomBytesResponse, error) { - result := KeyVaultClientGetRandomBytesResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.RandomBytes); err != nil { - return KeyVaultClientGetRandomBytesResponse{}, err - } - return result, nil -} - -// ImportKey - The import key operation may be used to import any key type into an Azure Key Vault. If the named key already -// exists, Azure Key Vault creates a new version of the key. This operation requires the -// keys/import permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - Name for the imported key. -// parameters - The parameters to import a key. -// options - KeyVaultClientImportKeyOptions contains the optional parameters for the KeyVaultClient.ImportKey method. -func (client *KeyVaultClient) ImportKey(ctx context.Context, vaultBaseURL string, keyName string, parameters KeyImportParameters, options *KeyVaultClientImportKeyOptions) (KeyVaultClientImportKeyResponse, error) { - req, err := client.importKeyCreateRequest(ctx, vaultBaseURL, keyName, parameters, options) - if err != nil { - return KeyVaultClientImportKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientImportKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientImportKeyResponse{}, runtime.NewResponseError(resp) - } - return client.importKeyHandleResponse(resp) -} - -// importKeyCreateRequest creates the ImportKey request. -func (client *KeyVaultClient) importKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, parameters KeyImportParameters, options *KeyVaultClientImportKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// importKeyHandleResponse handles the ImportKey response. -func (client *KeyVaultClient) importKeyHandleResponse(resp *http.Response) (KeyVaultClientImportKeyResponse, error) { - result := KeyVaultClientImportKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientImportKeyResponse{}, err - } - return result, nil -} - -// PurgeDeletedKey - The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can -// be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. -// This operation requires the keys/purge permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key -// options - KeyVaultClientPurgeDeletedKeyOptions contains the optional parameters for the KeyVaultClient.PurgeDeletedKey -// method. -func (client *KeyVaultClient) PurgeDeletedKey(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientPurgeDeletedKeyOptions) (KeyVaultClientPurgeDeletedKeyResponse, error) { - req, err := client.purgeDeletedKeyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientPurgeDeletedKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientPurgeDeletedKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusNoContent) { - return KeyVaultClientPurgeDeletedKeyResponse{}, runtime.NewResponseError(resp) - } - return KeyVaultClientPurgeDeletedKeyResponse{}, nil -} - -// purgeDeletedKeyCreateRequest creates the PurgeDeletedKey request. -func (client *KeyVaultClient) purgeDeletedKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientPurgeDeletedKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/deletedkeys/{key-name}" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// RecoverDeletedKey - The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It -// recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted -// key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation -// requires the keys/recover permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the deleted key. -// options - KeyVaultClientRecoverDeletedKeyOptions contains the optional parameters for the KeyVaultClient.RecoverDeletedKey -// method. -func (client *KeyVaultClient) RecoverDeletedKey(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientRecoverDeletedKeyOptions) (KeyVaultClientRecoverDeletedKeyResponse, error) { - req, err := client.recoverDeletedKeyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientRecoverDeletedKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientRecoverDeletedKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientRecoverDeletedKeyResponse{}, runtime.NewResponseError(resp) - } - return client.recoverDeletedKeyHandleResponse(resp) -} - -// recoverDeletedKeyCreateRequest creates the RecoverDeletedKey request. -func (client *KeyVaultClient) recoverDeletedKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientRecoverDeletedKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/deletedkeys/{key-name}/recover" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// recoverDeletedKeyHandleResponse handles the RecoverDeletedKey response. -func (client *KeyVaultClient) recoverDeletedKeyHandleResponse(resp *http.Response) (KeyVaultClientRecoverDeletedKeyResponse, error) { - result := KeyVaultClientRecoverDeletedKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientRecoverDeletedKeyResponse{}, err - } - return result, nil -} - -// Release - The release key operation is applicable to all key types. The target key must be marked exportable. This operation -// requires the keys/release permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key to get. -// keyVersion - Adding the version parameter retrieves a specific version of a key. -// parameters - The parameters for the key release operation. -// options - KeyVaultClientReleaseOptions contains the optional parameters for the KeyVaultClient.Release method. -func (client *KeyVaultClient) Release(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyReleaseParameters, options *KeyVaultClientReleaseOptions) (KeyVaultClientReleaseResponse, error) { - req, err := client.releaseCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientReleaseResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientReleaseResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientReleaseResponse{}, runtime.NewResponseError(resp) - } - return client.releaseHandleResponse(resp) -} - -// releaseCreateRequest creates the Release request. -func (client *KeyVaultClient) releaseCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyReleaseParameters, options *KeyVaultClientReleaseOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/release" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// releaseHandleResponse handles the Release response. -func (client *KeyVaultClient) releaseHandleResponse(resp *http.Response) (KeyVaultClientReleaseResponse, error) { - result := KeyVaultClientReleaseResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyReleaseResult); err != nil { - return KeyVaultClientReleaseResponse{}, err - } - return result, nil -} - -// RestoreKey - Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes -// and access control policies. The RESTORE operation may be used to import a previously backed -// up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as -// it had when it was backed up. If the key name is not available in the target Key -// Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier -// will change if the key is restored to a different vault. Restore will restore all -// versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault -// must be owned by the same Microsoft Azure Subscription as the source Key Vault -// The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// parameters - The parameters to restore the key. -// options - KeyVaultClientRestoreKeyOptions contains the optional parameters for the KeyVaultClient.RestoreKey method. -func (client *KeyVaultClient) RestoreKey(ctx context.Context, vaultBaseURL string, parameters KeyRestoreParameters, options *KeyVaultClientRestoreKeyOptions) (KeyVaultClientRestoreKeyResponse, error) { - req, err := client.restoreKeyCreateRequest(ctx, vaultBaseURL, parameters, options) - if err != nil { - return KeyVaultClientRestoreKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientRestoreKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientRestoreKeyResponse{}, runtime.NewResponseError(resp) - } - return client.restoreKeyHandleResponse(resp) -} - -// restoreKeyCreateRequest creates the RestoreKey request. -func (client *KeyVaultClient) restoreKeyCreateRequest(ctx context.Context, vaultBaseURL string, parameters KeyRestoreParameters, options *KeyVaultClientRestoreKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/restore" - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// restoreKeyHandleResponse handles the RestoreKey response. -func (client *KeyVaultClient) restoreKeyHandleResponse(resp *http.Response) (KeyVaultClientRestoreKeyResponse, error) { - result := KeyVaultClientRestoreKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientRestoreKeyResponse{}, err - } - return result, nil -} - -// RotateKey - The operation will rotate the key based on the key policy. It requires the keys/rotate permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of key to be rotated. The system will generate a new version in the specified key. -// options - KeyVaultClientRotateKeyOptions contains the optional parameters for the KeyVaultClient.RotateKey method. -func (client *KeyVaultClient) RotateKey(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientRotateKeyOptions) (KeyVaultClientRotateKeyResponse, error) { - req, err := client.rotateKeyCreateRequest(ctx, vaultBaseURL, keyName, options) - if err != nil { - return KeyVaultClientRotateKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientRotateKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientRotateKeyResponse{}, runtime.NewResponseError(resp) - } - return client.rotateKeyHandleResponse(resp) -} - -// rotateKeyCreateRequest creates the RotateKey request. -func (client *KeyVaultClient) rotateKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, options *KeyVaultClientRotateKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/rotate" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, nil -} - -// rotateKeyHandleResponse handles the RotateKey response. -func (client *KeyVaultClient) rotateKeyHandleResponse(resp *http.Response) (KeyVaultClientRotateKeyResponse, error) { - result := KeyVaultClientRotateKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientRotateKeyResponse{}, err - } - return result, nil -} - -// Sign - The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation -// uses the private portion of the key. This operation requires the keys/sign permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// keyVersion - The version of the key. -// parameters - The parameters for the signing operation. -// options - KeyVaultClientSignOptions contains the optional parameters for the KeyVaultClient.Sign method. -func (client *KeyVaultClient) Sign(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeySignParameters, options *KeyVaultClientSignOptions) (KeyVaultClientSignResponse, error) { - req, err := client.signCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientSignResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientSignResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientSignResponse{}, runtime.NewResponseError(resp) - } - return client.signHandleResponse(resp) -} - -// signCreateRequest creates the Sign request. -func (client *KeyVaultClient) signCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeySignParameters, options *KeyVaultClientSignOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/sign" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// signHandleResponse handles the Sign response. -func (client *KeyVaultClient) signHandleResponse(resp *http.Response) (KeyVaultClientSignResponse, error) { - result := KeyVaultClientSignResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { - return KeyVaultClientSignResponse{}, err - } - return result, nil -} - -// UnwrapKey - The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation -// is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and -// symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey -// permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// keyVersion - The version of the key. -// parameters - The parameters for the key operation. -// options - KeyVaultClientUnwrapKeyOptions contains the optional parameters for the KeyVaultClient.UnwrapKey method. -func (client *KeyVaultClient) UnwrapKey(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientUnwrapKeyOptions) (KeyVaultClientUnwrapKeyResponse, error) { - req, err := client.unwrapKeyCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientUnwrapKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientUnwrapKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientUnwrapKeyResponse{}, runtime.NewResponseError(resp) - } - return client.unwrapKeyHandleResponse(resp) -} - -// unwrapKeyCreateRequest creates the UnwrapKey request. -func (client *KeyVaultClient) unwrapKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientUnwrapKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/unwrapkey" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// unwrapKeyHandleResponse handles the UnwrapKey response. -func (client *KeyVaultClient) unwrapKeyHandleResponse(resp *http.Response) (KeyVaultClientUnwrapKeyResponse, error) { - result := KeyVaultClientUnwrapKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { - return KeyVaultClientUnwrapKeyResponse{}, err - } - return result, nil -} - -// UpdateKey - In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material -// of a key itself cannot be changed. This operation requires the keys/update permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of key to update. -// keyVersion - The version of the key to update. -// parameters - The parameters of the key to update. -// options - KeyVaultClientUpdateKeyOptions contains the optional parameters for the KeyVaultClient.UpdateKey method. -func (client *KeyVaultClient) UpdateKey(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyUpdateParameters, options *KeyVaultClientUpdateKeyOptions) (KeyVaultClientUpdateKeyResponse, error) { - req, err := client.updateKeyCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientUpdateKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientUpdateKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientUpdateKeyResponse{}, runtime.NewResponseError(resp) - } - return client.updateKeyHandleResponse(resp) -} - -// updateKeyCreateRequest creates the UpdateKey request. -func (client *KeyVaultClient) updateKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyUpdateParameters, options *KeyVaultClientUpdateKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// updateKeyHandleResponse handles the UpdateKey response. -func (client *KeyVaultClient) updateKeyHandleResponse(resp *http.Response) (KeyVaultClientUpdateKeyResponse, error) { - result := KeyVaultClientUpdateKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { - return KeyVaultClientUpdateKeyResponse{}, err - } - return result, nil -} - -// UpdateKeyRotationPolicy - Set specified members in the key policy. Leave others as undefined. This operation requires the -// keys/update permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key in the given vault. -// keyRotationPolicy - The policy for the key. -// options - KeyVaultClientUpdateKeyRotationPolicyOptions contains the optional parameters for the KeyVaultClient.UpdateKeyRotationPolicy -// method. -func (client *KeyVaultClient) UpdateKeyRotationPolicy(ctx context.Context, vaultBaseURL string, keyName string, keyRotationPolicy KeyRotationPolicy, options *KeyVaultClientUpdateKeyRotationPolicyOptions) (KeyVaultClientUpdateKeyRotationPolicyResponse, error) { - req, err := client.updateKeyRotationPolicyCreateRequest(ctx, vaultBaseURL, keyName, keyRotationPolicy, options) - if err != nil { - return KeyVaultClientUpdateKeyRotationPolicyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientUpdateKeyRotationPolicyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientUpdateKeyRotationPolicyResponse{}, runtime.NewResponseError(resp) - } - return client.updateKeyRotationPolicyHandleResponse(resp) -} - -// updateKeyRotationPolicyCreateRequest creates the UpdateKeyRotationPolicy request. -func (client *KeyVaultClient) updateKeyRotationPolicyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyRotationPolicy KeyRotationPolicy, options *KeyVaultClientUpdateKeyRotationPolicyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/rotationpolicy" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, keyRotationPolicy) -} - -// updateKeyRotationPolicyHandleResponse handles the UpdateKeyRotationPolicy response. -func (client *KeyVaultClient) updateKeyRotationPolicyHandleResponse(resp *http.Response) (KeyVaultClientUpdateKeyRotationPolicyResponse, error) { - result := KeyVaultClientUpdateKeyRotationPolicyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyRotationPolicy); err != nil { - return KeyVaultClientUpdateKeyRotationPolicyResponse{}, err - } - return result, nil -} - -// Verify - The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary -// for asymmetric keys stored in Azure Key Vault since signature verification can be -// performed using the public portion of the key but this operation is supported as a convenience for callers that only have -// a key-reference and not the public portion of the key. This operation requires -// the keys/verify permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// keyVersion - The version of the key. -// parameters - The parameters for verify operations. -// options - KeyVaultClientVerifyOptions contains the optional parameters for the KeyVaultClient.Verify method. -func (client *KeyVaultClient) Verify(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyVerifyParameters, options *KeyVaultClientVerifyOptions) (KeyVaultClientVerifyResponse, error) { - req, err := client.verifyCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientVerifyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientVerifyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientVerifyResponse{}, runtime.NewResponseError(resp) - } - return client.verifyHandleResponse(resp) -} - -// verifyCreateRequest creates the Verify request. -func (client *KeyVaultClient) verifyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyVerifyParameters, options *KeyVaultClientVerifyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/verify" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// verifyHandleResponse handles the Verify response. -func (client *KeyVaultClient) verifyHandleResponse(resp *http.Response) (KeyVaultClientVerifyResponse, error) { - result := KeyVaultClientVerifyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyVerifyResult); err != nil { - return KeyVaultClientVerifyResponse{}, err - } - return result, nil -} - -// WrapKey - The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been -// stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric -// keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the -// key. This operation is supported for asymmetric keys as a convenience for -// callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey -// permission. -// If the operation fails it returns an *azcore.ResponseError type. -// Generated from API version 7.3 -// vaultBaseURL - The vault name, for example https://myvault.vault.azure.net. -// keyName - The name of the key. -// keyVersion - The version of the key. -// parameters - The parameters for wrap operation. -// options - KeyVaultClientWrapKeyOptions contains the optional parameters for the KeyVaultClient.WrapKey method. -func (client *KeyVaultClient) WrapKey(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientWrapKeyOptions) (KeyVaultClientWrapKeyResponse, error) { - req, err := client.wrapKeyCreateRequest(ctx, vaultBaseURL, keyName, keyVersion, parameters, options) - if err != nil { - return KeyVaultClientWrapKeyResponse{}, err - } - resp, err := client.pl.Do(req) - if err != nil { - return KeyVaultClientWrapKeyResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return KeyVaultClientWrapKeyResponse{}, runtime.NewResponseError(resp) - } - return client.wrapKeyHandleResponse(resp) -} - -// wrapKeyCreateRequest creates the WrapKey request. -func (client *KeyVaultClient) wrapKeyCreateRequest(ctx context.Context, vaultBaseURL string, keyName string, keyVersion string, parameters KeyOperationsParameters, options *KeyVaultClientWrapKeyOptions) (*policy.Request, error) { - host := "{vaultBaseUrl}" - host = strings.ReplaceAll(host, "{vaultBaseUrl}", vaultBaseURL) - urlPath := "/keys/{key-name}/{key-version}/wrapkey" - if keyName == "" { - return nil, errors.New("parameter keyName cannot be empty") - } - urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(keyName)) - urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(keyVersion)) - urlPath = strings.ReplaceAll(urlPath, "//", "/") - req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(host, urlPath)) - if err != nil { - return nil, err - } - reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.3") - req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) -} - -// wrapKeyHandleResponse handles the WrapKey response. -func (client *KeyVaultClient) wrapKeyHandleResponse(resp *http.Response) (KeyVaultClientWrapKeyResponse, error) { - result := KeyVaultClientWrapKeyResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.KeyOperationResult); err != nil { - return KeyVaultClientWrapKeyResponse{}, err - } - return result, nil -} diff --git a/sdk/keyvault/azkeys/internal/generated/models.go b/sdk/keyvault/azkeys/internal/generated/models.go deleted file mode 100644 index da3303cec3c8..000000000000 --- a/sdk/keyvault/azkeys/internal/generated/models.go +++ /dev/null @@ -1,614 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. -// Changes may cause incorrect behavior and will be lost if the code is regenerated. - -package generated - -import "time" - -// Attributes - The object attributes managed by the KeyVault service. -type Attributes struct { - // Determines whether the object is enabled. - Enabled *bool `json:"enabled,omitempty"` - - // Expiry date in UTC. - Expires *time.Time `json:"exp,omitempty"` - - // Not before date in UTC. - NotBefore *time.Time `json:"nbf,omitempty"` - - // READ-ONLY; Creation time in UTC. - Created *time.Time `json:"created,omitempty" azure:"ro"` - - // READ-ONLY; Last updated time in UTC. - Updated *time.Time `json:"updated,omitempty" azure:"ro"` -} - -// BackupKeyResult - The backup key result, containing the backup blob. -type BackupKeyResult struct { - // READ-ONLY; The backup blob containing the backed up key. - Value []byte `json:"value,omitempty" azure:"ro"` -} - -// DeletedKeyBundle - A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info -type DeletedKeyBundle struct { - // The key management attributes. - Attributes *KeyAttributes `json:"attributes,omitempty"` - - // The Json web key. - Key *JSONWebKey `json:"key,omitempty"` - - // The url of the recovery object, used to identify and recover the deleted key. - RecoveryID *string `json:"recoveryId,omitempty"` - - // The policy rules under which the key can be exported. - ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` - - // READ-ONLY; The time when the key was deleted, in UTC - DeletedDate *time.Time `json:"deletedDate,omitempty" azure:"ro"` - - // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will - // be true. - Managed *bool `json:"managed,omitempty" azure:"ro"` - - // READ-ONLY; The time when the key is scheduled to be purged, in UTC - ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty" azure:"ro"` -} - -// DeletedKeyItem - The deleted key item containing the deleted key metadata and information about deletion. -type DeletedKeyItem struct { - // The key management attributes. - Attributes *KeyAttributes `json:"attributes,omitempty"` - - // Key identifier. - Kid *string `json:"kid,omitempty"` - - // The url of the recovery object, used to identify and recover the deleted key. - RecoveryID *string `json:"recoveryId,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` - - // READ-ONLY; The time when the key was deleted, in UTC - DeletedDate *time.Time `json:"deletedDate,omitempty" azure:"ro"` - - // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will - // be true. - Managed *bool `json:"managed,omitempty" azure:"ro"` - - // READ-ONLY; The time when the key is scheduled to be purged, in UTC - ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty" azure:"ro"` -} - -// DeletedKeyListResult - A list of keys that have been deleted in this vault. -type DeletedKeyListResult struct { - // READ-ONLY; The URL to get the next set of deleted keys. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` - - // READ-ONLY; A response message containing a list of deleted keys in the vault along with a link to the next page of deleted - // keys - Value []*DeletedKeyItem `json:"value,omitempty" azure:"ro"` -} - -// Error - The key vault server error. -type Error struct { - // READ-ONLY; The error code. - Code *string `json:"code,omitempty" azure:"ro"` - - // READ-ONLY; The key vault server error. - InnerError *Error `json:"innererror,omitempty" azure:"ro"` - - // READ-ONLY; The error message. - Message *string `json:"message,omitempty" azure:"ro"` -} - -// GetRandomBytesRequest - The get random bytes request object. -type GetRandomBytesRequest struct { - // REQUIRED; The requested number of random bytes. - Count *int32 `json:"count,omitempty"` -} - -// JSONWebKey - As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 -type JSONWebKey struct { - // Elliptic curve name. For valid values, see JsonWebKeyCurveName. - Crv *JSONWebKeyCurveName `json:"crv,omitempty"` - - // RSA private exponent, or the D component of an EC private key. - D []byte `json:"d,omitempty"` - - // RSA private key parameter. - DP []byte `json:"dp,omitempty"` - - // RSA private key parameter. - DQ []byte `json:"dq,omitempty"` - - // RSA public exponent. - E []byte `json:"e,omitempty"` - - // Symmetric key. - K []byte `json:"k,omitempty"` - KeyOps []*string `json:"key_ops,omitempty"` - - // Key identifier. - Kid *string `json:"kid,omitempty"` - - // JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. - Kty *JSONWebKeyType `json:"kty,omitempty"` - - // RSA modulus. - N []byte `json:"n,omitempty"` - - // RSA secret prime. - P []byte `json:"p,omitempty"` - - // RSA secret prime, with p < q. - Q []byte `json:"q,omitempty"` - - // RSA private key parameter. - QI []byte `json:"qi,omitempty"` - - // Protected Key, used with 'Bring Your Own Key'. - T []byte `json:"key_hsm,omitempty"` - - // X component of an EC public key. - X []byte `json:"x,omitempty"` - - // Y component of an EC public key. - Y []byte `json:"y,omitempty"` -} - -// KeyAttributes - The attributes of a key managed by the key vault service. -type KeyAttributes struct { - // Determines whether the object is enabled. - Enabled *bool `json:"enabled,omitempty"` - - // Expiry date in UTC. - Expires *time.Time `json:"exp,omitempty"` - - // Indicates if the private key can be exported. - Exportable *bool `json:"exportable,omitempty"` - - // Not before date in UTC. - NotBefore *time.Time `json:"nbf,omitempty"` - - // READ-ONLY; Creation time in UTC. - Created *time.Time `json:"created,omitempty" azure:"ro"` - - // READ-ONLY; softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0. - RecoverableDays *int32 `json:"recoverableDays,omitempty" azure:"ro"` - - // READ-ONLY; Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' - // the key can be permanently deleted by a privileged user; otherwise, only the system - // can purge the key, at the end of the retention interval. - RecoveryLevel *DeletionRecoveryLevel `json:"recoveryLevel,omitempty" azure:"ro"` - - // READ-ONLY; Last updated time in UTC. - Updated *time.Time `json:"updated,omitempty" azure:"ro"` -} - -// KeyBundle - A KeyBundle consisting of a WebKey plus its attributes. -type KeyBundle struct { - // The key management attributes. - Attributes *KeyAttributes `json:"attributes,omitempty"` - - // The Json web key. - Key *JSONWebKey `json:"key,omitempty"` - - // The policy rules under which the key can be exported. - ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` - - // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will - // be true. - Managed *bool `json:"managed,omitempty" azure:"ro"` -} - -// KeyCreateParameters - The key create parameters. -type KeyCreateParameters struct { - // REQUIRED; The type of key to create. For valid values, see JsonWebKeyType. - Kty *JSONWebKeyType `json:"kty,omitempty"` - - // Elliptic curve name. For valid values, see JsonWebKeyCurveName. - Curve *JSONWebKeyCurveName `json:"crv,omitempty"` - - // The attributes of a key managed by the key vault service. - KeyAttributes *KeyAttributes `json:"attributes,omitempty"` - KeyOps []*JSONWebKeyOperation `json:"key_ops,omitempty"` - - // The key size in bits. For example: 2048, 3072, or 4096 for RSA. - KeySize *int32 `json:"key_size,omitempty"` - - // The public exponent for a RSA key. - PublicExponent *int32 `json:"public_exponent,omitempty"` - - // The policy rules under which the key can be exported. - ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` -} - -// KeyExportParameters - The export key parameters. -type KeyExportParameters struct { - // The encryption algorithm to use to protected the exported key material - Enc *KeyEncryptionAlgorithm `json:"enc,omitempty"` - - // The export key encryption Json web key. This key MUST be a RSA key that supports encryption. - WrappingKey *JSONWebKey `json:"wrappingKey,omitempty"` - - // The export key encryption key identifier. This key MUST be a RSA key that supports encryption. - WrappingKid *string `json:"wrappingKid,omitempty"` -} - -// KeyImportParameters - The key import parameters. -type KeyImportParameters struct { - // REQUIRED; The Json web key - Key *JSONWebKey `json:"key,omitempty"` - - // Whether to import as a hardware key (HSM) or software key. - Hsm *bool `json:"Hsm,omitempty"` - - // The key management attributes. - KeyAttributes *KeyAttributes `json:"attributes,omitempty"` - - // The policy rules under which the key can be exported. - ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` -} - -// KeyItem - The key item containing key metadata. -type KeyItem struct { - // The key management attributes. - Attributes *KeyAttributes `json:"attributes,omitempty"` - - // Key identifier. - Kid *string `json:"kid,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` - - // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will - // be true. - Managed *bool `json:"managed,omitempty" azure:"ro"` -} - -// KeyListResult - The key list result. -type KeyListResult struct { - // READ-ONLY; The URL to get the next set of keys. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` - - // READ-ONLY; A response message containing a list of keys in the key vault along with a link to the next page of keys. - Value []*KeyItem `json:"value,omitempty" azure:"ro"` -} - -// KeyOperationResult - The key operation result. -type KeyOperationResult struct { - // READ-ONLY - AdditionalAuthenticatedData []byte `json:"aad,omitempty" azure:"ro"` - - // READ-ONLY - AuthenticationTag []byte `json:"tag,omitempty" azure:"ro"` - - // READ-ONLY - Iv []byte `json:"iv,omitempty" azure:"ro"` - - // READ-ONLY; Key identifier - Kid *string `json:"kid,omitempty" azure:"ro"` - - // READ-ONLY - Result []byte `json:"value,omitempty" azure:"ro"` -} - -// KeyOperationsParameters - The key operations parameters. -type KeyOperationsParameters struct { - // REQUIRED; algorithm identifier - Algorithm *JSONWebKeyEncryptionAlgorithm `json:"alg,omitempty"` - - // REQUIRED - Value []byte `json:"value,omitempty"` - - // Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. - AAD []byte `json:"aad,omitempty"` - - // Initialization vector for symmetric algorithms. - Iv []byte `json:"iv,omitempty"` - - // The tag to authenticate when performing decryption with an authenticated algorithm. - Tag []byte `json:"tag,omitempty"` -} - -// KeyProperties - Properties of the key pair backing a certificate. -type KeyProperties struct { - // Elliptic curve name. For valid values, see JsonWebKeyCurveName. - Curve *JSONWebKeyCurveName `json:"crv,omitempty"` - - // Indicates if the private key can be exported. - Exportable *bool `json:"exportable,omitempty"` - - // The key size in bits. For example: 2048, 3072, or 4096 for RSA. - KeySize *int32 `json:"key_size,omitempty"` - - // The type of key pair to be used for the certificate. - KeyType *JSONWebKeyType `json:"kty,omitempty"` - - // Indicates if the same key pair will be used on certificate renewal. - ReuseKey *bool `json:"reuse_key,omitempty"` -} - -// KeyReleaseParameters - The release key parameters. -type KeyReleaseParameters struct { - // REQUIRED; The attestation assertion for the target of the key release. - TargetAttestationToken *string `json:"target,omitempty"` - - // The encryption algorithm to use to protected the exported key material - Enc *KeyEncryptionAlgorithm `json:"enc,omitempty"` - - // A client provided nonce for freshness. - Nonce *string `json:"nonce,omitempty"` -} - -type KeyReleasePolicy struct { - // Content type and version of key release policy - ContentType *string `json:"contentType,omitempty"` - - // Blob encoding the policy rules under which the key can be released. - EncodedPolicy []byte `json:"data,omitempty"` - - // Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed - // under any circumstances. - Immutable *bool `json:"immutable,omitempty"` -} - -// KeyReleaseResult - The release result, containing the released key. -type KeyReleaseResult struct { - // READ-ONLY; A signed object containing the released key. - Value *string `json:"value,omitempty" azure:"ro"` -} - -// KeyRestoreParameters - The key restore parameters. -type KeyRestoreParameters struct { - // REQUIRED; The backup blob associated with a key bundle. - KeyBundleBackup []byte `json:"value,omitempty"` -} - -// KeyRotationPolicy - Management policy for a key. -type KeyRotationPolicy struct { - // The key rotation policy attributes. - Attributes *KeyRotationPolicyAttributes `json:"attributes,omitempty"` - - // Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two - // items at maximum: one for rotate, one for notify. Notification time would be - // default to 30 days before expiry and it is not configurable. - LifetimeActions []*LifetimeActions `json:"lifetimeActions,omitempty"` - - // READ-ONLY; The key policy id. - ID *string `json:"id,omitempty" azure:"ro"` -} - -// KeyRotationPolicyAttributes - The key rotation policy attributes. -type KeyRotationPolicyAttributes struct { - // The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: - // 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D - ExpiryTime *string `json:"expiryTime,omitempty"` - - // READ-ONLY; The key rotation policy created time in UTC. - Created *time.Time `json:"created,omitempty" azure:"ro"` - - // READ-ONLY; The key rotation policy's last updated time in UTC. - Updated *time.Time `json:"updated,omitempty" azure:"ro"` -} - -// KeySignParameters - The key operations parameters. -type KeySignParameters struct { - // REQUIRED; The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - Algorithm *JSONWebKeySignatureAlgorithm `json:"alg,omitempty"` - - // REQUIRED - Value []byte `json:"value,omitempty"` -} - -// KeyUpdateParameters - The key update parameters. -type KeyUpdateParameters struct { - // The attributes of a key managed by the key vault service. - KeyAttributes *KeyAttributes `json:"attributes,omitempty"` - - // Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - KeyOps []*JSONWebKeyOperation `json:"key_ops,omitempty"` - - // The policy rules under which the key can be exported. - ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - - // Application specific metadata in the form of key-value pairs. - Tags map[string]*string `json:"tags,omitempty"` -} - -// KeyVaultClientBackupKeyOptions contains the optional parameters for the KeyVaultClient.BackupKey method. -type KeyVaultClientBackupKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientCreateKeyOptions contains the optional parameters for the KeyVaultClient.CreateKey method. -type KeyVaultClientCreateKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientDecryptOptions contains the optional parameters for the KeyVaultClient.Decrypt method. -type KeyVaultClientDecryptOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientDeleteKeyOptions contains the optional parameters for the KeyVaultClient.DeleteKey method. -type KeyVaultClientDeleteKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientEncryptOptions contains the optional parameters for the KeyVaultClient.Encrypt method. -type KeyVaultClientEncryptOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientGetDeletedKeyOptions contains the optional parameters for the KeyVaultClient.GetDeletedKey method. -type KeyVaultClientGetDeletedKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientGetDeletedKeysOptions contains the optional parameters for the KeyVaultClient.GetDeletedKeys method. -type KeyVaultClientGetDeletedKeysOptions struct { - // Maximum number of results to return in a page. If not specified the service will return up to 25 results. - Maxresults *int32 -} - -// KeyVaultClientGetKeyOptions contains the optional parameters for the KeyVaultClient.GetKey method. -type KeyVaultClientGetKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientGetKeyRotationPolicyOptions contains the optional parameters for the KeyVaultClient.GetKeyRotationPolicy -// method. -type KeyVaultClientGetKeyRotationPolicyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientGetKeyVersionsOptions contains the optional parameters for the KeyVaultClient.GetKeyVersions method. -type KeyVaultClientGetKeyVersionsOptions struct { - // Maximum number of results to return in a page. If not specified the service will return up to 25 results. - Maxresults *int32 -} - -// KeyVaultClientGetKeysOptions contains the optional parameters for the KeyVaultClient.GetKeys method. -type KeyVaultClientGetKeysOptions struct { - // Maximum number of results to return in a page. If not specified the service will return up to 25 results. - Maxresults *int32 -} - -// KeyVaultClientGetRandomBytesOptions contains the optional parameters for the KeyVaultClient.GetRandomBytes method. -type KeyVaultClientGetRandomBytesOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientImportKeyOptions contains the optional parameters for the KeyVaultClient.ImportKey method. -type KeyVaultClientImportKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientPurgeDeletedKeyOptions contains the optional parameters for the KeyVaultClient.PurgeDeletedKey method. -type KeyVaultClientPurgeDeletedKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientRecoverDeletedKeyOptions contains the optional parameters for the KeyVaultClient.RecoverDeletedKey method. -type KeyVaultClientRecoverDeletedKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientReleaseOptions contains the optional parameters for the KeyVaultClient.Release method. -type KeyVaultClientReleaseOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientRestoreKeyOptions contains the optional parameters for the KeyVaultClient.RestoreKey method. -type KeyVaultClientRestoreKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientRotateKeyOptions contains the optional parameters for the KeyVaultClient.RotateKey method. -type KeyVaultClientRotateKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientSignOptions contains the optional parameters for the KeyVaultClient.Sign method. -type KeyVaultClientSignOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientUnwrapKeyOptions contains the optional parameters for the KeyVaultClient.UnwrapKey method. -type KeyVaultClientUnwrapKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientUpdateKeyOptions contains the optional parameters for the KeyVaultClient.UpdateKey method. -type KeyVaultClientUpdateKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientUpdateKeyRotationPolicyOptions contains the optional parameters for the KeyVaultClient.UpdateKeyRotationPolicy -// method. -type KeyVaultClientUpdateKeyRotationPolicyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientVerifyOptions contains the optional parameters for the KeyVaultClient.Verify method. -type KeyVaultClientVerifyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultClientWrapKeyOptions contains the optional parameters for the KeyVaultClient.WrapKey method. -type KeyVaultClientWrapKeyOptions struct { - // placeholder for future optional parameters -} - -// KeyVaultError - The key vault error exception. -type KeyVaultError struct { - // READ-ONLY; The key vault server error. - Error *Error `json:"error,omitempty" azure:"ro"` -} - -// KeyVerifyParameters - The key verify parameters. -type KeyVerifyParameters struct { - // REQUIRED; The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - Algorithm *JSONWebKeySignatureAlgorithm `json:"alg,omitempty"` - - // REQUIRED; The digest used for signing. - Digest []byte `json:"digest,omitempty"` - - // REQUIRED; The signature to be verified. - Signature []byte `json:"value,omitempty"` -} - -// KeyVerifyResult - The key verify result. -type KeyVerifyResult struct { - // READ-ONLY; True if the signature is verified, otherwise false. - Value *bool `json:"value,omitempty" azure:"ro"` -} - -// LifetimeActions - Action and its trigger that will be performed by Key Vault over the lifetime of a key. -type LifetimeActions struct { - // The action that will be executed. - Action *LifetimeActionsType `json:"action,omitempty"` - - // The condition that will execute the action. - Trigger *LifetimeActionsTrigger `json:"trigger,omitempty"` -} - -// LifetimeActionsTrigger - A condition to be satisfied for an action to be executed. -type LifetimeActionsTrigger struct { - // Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 - // days : "P90D" - TimeAfterCreate *string `json:"timeAfterCreate,omitempty"` - - // Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : "P90D" - TimeBeforeExpiry *string `json:"timeBeforeExpiry,omitempty"` -} - -// LifetimeActionsType - The action that will be executed. -type LifetimeActionsType struct { - // The type of the action. - Type *ActionType `json:"type,omitempty"` -} - -// RandomBytes - The get random bytes response object containing the bytes. -type RandomBytes struct { - // REQUIRED; The bytes encoded as a base64url string. - Value []byte `json:"value,omitempty"` -} diff --git a/sdk/keyvault/azkeys/internal/generated/models_serde.go b/sdk/keyvault/azkeys/internal/generated/models_serde.go deleted file mode 100644 index 87580e94ce33..000000000000 --- a/sdk/keyvault/azkeys/internal/generated/models_serde.go +++ /dev/null @@ -1,633 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. -// Changes may cause incorrect behavior and will be lost if the code is regenerated. - -package generated - -import ( - "encoding/json" - "fmt" - "github.com/Azure/azure-sdk-for-go/sdk/azcore" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "reflect" -) - -// MarshalJSON implements the json.Marshaller interface for type Attributes. -func (a Attributes) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populateTimeUnix(objectMap, "created", a.Created) - populate(objectMap, "enabled", a.Enabled) - populateTimeUnix(objectMap, "exp", a.Expires) - populateTimeUnix(objectMap, "nbf", a.NotBefore) - populateTimeUnix(objectMap, "updated", a.Updated) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type Attributes. -func (a *Attributes) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", a, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "created": - err = unpopulateTimeUnix(val, "Created", &a.Created) - delete(rawMsg, key) - case "enabled": - err = unpopulate(val, "Enabled", &a.Enabled) - delete(rawMsg, key) - case "exp": - err = unpopulateTimeUnix(val, "Expires", &a.Expires) - delete(rawMsg, key) - case "nbf": - err = unpopulateTimeUnix(val, "NotBefore", &a.NotBefore) - delete(rawMsg, key) - case "updated": - err = unpopulateTimeUnix(val, "Updated", &a.Updated) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", a, err) - } - } - return nil -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type BackupKeyResult. -func (b *BackupKeyResult) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", b, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "value": - err = runtime.DecodeByteArray(string(val), &b.Value, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", b, err) - } - } - return nil -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedKeyBundle. -func (d *DeletedKeyBundle) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", d, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "attributes": - err = unpopulate(val, "Attributes", &d.Attributes) - delete(rawMsg, key) - case "deletedDate": - err = unpopulateTimeUnix(val, "DeletedDate", &d.DeletedDate) - delete(rawMsg, key) - case "key": - err = unpopulate(val, "Key", &d.Key) - delete(rawMsg, key) - case "managed": - err = unpopulate(val, "Managed", &d.Managed) - delete(rawMsg, key) - case "recoveryId": - err = unpopulate(val, "RecoveryID", &d.RecoveryID) - delete(rawMsg, key) - case "release_policy": - err = unpopulate(val, "ReleasePolicy", &d.ReleasePolicy) - delete(rawMsg, key) - case "scheduledPurgeDate": - err = unpopulateTimeUnix(val, "ScheduledPurgeDate", &d.ScheduledPurgeDate) - delete(rawMsg, key) - case "tags": - err = unpopulate(val, "Tags", &d.Tags) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", d, err) - } - } - return nil -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedKeyItem. -func (d *DeletedKeyItem) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", d, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "attributes": - err = unpopulate(val, "Attributes", &d.Attributes) - delete(rawMsg, key) - case "deletedDate": - err = unpopulateTimeUnix(val, "DeletedDate", &d.DeletedDate) - delete(rawMsg, key) - case "kid": - err = unpopulate(val, "Kid", &d.Kid) - delete(rawMsg, key) - case "managed": - err = unpopulate(val, "Managed", &d.Managed) - delete(rawMsg, key) - case "recoveryId": - err = unpopulate(val, "RecoveryID", &d.RecoveryID) - delete(rawMsg, key) - case "scheduledPurgeDate": - err = unpopulateTimeUnix(val, "ScheduledPurgeDate", &d.ScheduledPurgeDate) - delete(rawMsg, key) - case "tags": - err = unpopulate(val, "Tags", &d.Tags) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", d, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type JSONWebKey. -func (j JSONWebKey) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "crv", j.Crv) - populateByteArray(objectMap, "d", j.D, runtime.Base64URLFormat) - populateByteArray(objectMap, "dp", j.DP, runtime.Base64URLFormat) - populateByteArray(objectMap, "dq", j.DQ, runtime.Base64URLFormat) - populateByteArray(objectMap, "e", j.E, runtime.Base64URLFormat) - populateByteArray(objectMap, "k", j.K, runtime.Base64URLFormat) - populate(objectMap, "key_ops", j.KeyOps) - populate(objectMap, "kid", j.Kid) - populate(objectMap, "kty", j.Kty) - populateByteArray(objectMap, "n", j.N, runtime.Base64URLFormat) - populateByteArray(objectMap, "p", j.P, runtime.Base64URLFormat) - populateByteArray(objectMap, "q", j.Q, runtime.Base64URLFormat) - populateByteArray(objectMap, "qi", j.QI, runtime.Base64URLFormat) - populateByteArray(objectMap, "key_hsm", j.T, runtime.Base64URLFormat) - populateByteArray(objectMap, "x", j.X, runtime.Base64URLFormat) - populateByteArray(objectMap, "y", j.Y, runtime.Base64URLFormat) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type JSONWebKey. -func (j *JSONWebKey) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", j, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "crv": - err = unpopulate(val, "Crv", &j.Crv) - delete(rawMsg, key) - case "d": - err = runtime.DecodeByteArray(string(val), &j.D, runtime.Base64URLFormat) - delete(rawMsg, key) - case "dp": - err = runtime.DecodeByteArray(string(val), &j.DP, runtime.Base64URLFormat) - delete(rawMsg, key) - case "dq": - err = runtime.DecodeByteArray(string(val), &j.DQ, runtime.Base64URLFormat) - delete(rawMsg, key) - case "e": - err = runtime.DecodeByteArray(string(val), &j.E, runtime.Base64URLFormat) - delete(rawMsg, key) - case "k": - err = runtime.DecodeByteArray(string(val), &j.K, runtime.Base64URLFormat) - delete(rawMsg, key) - case "key_ops": - err = unpopulate(val, "KeyOps", &j.KeyOps) - delete(rawMsg, key) - case "kid": - err = unpopulate(val, "Kid", &j.Kid) - delete(rawMsg, key) - case "kty": - err = unpopulate(val, "Kty", &j.Kty) - delete(rawMsg, key) - case "n": - err = runtime.DecodeByteArray(string(val), &j.N, runtime.Base64URLFormat) - delete(rawMsg, key) - case "p": - err = runtime.DecodeByteArray(string(val), &j.P, runtime.Base64URLFormat) - delete(rawMsg, key) - case "q": - err = runtime.DecodeByteArray(string(val), &j.Q, runtime.Base64URLFormat) - delete(rawMsg, key) - case "qi": - err = runtime.DecodeByteArray(string(val), &j.QI, runtime.Base64URLFormat) - delete(rawMsg, key) - case "key_hsm": - err = runtime.DecodeByteArray(string(val), &j.T, runtime.Base64URLFormat) - delete(rawMsg, key) - case "x": - err = runtime.DecodeByteArray(string(val), &j.X, runtime.Base64URLFormat) - delete(rawMsg, key) - case "y": - err = runtime.DecodeByteArray(string(val), &j.Y, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", j, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyAttributes. -func (k KeyAttributes) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populateTimeUnix(objectMap, "created", k.Created) - populate(objectMap, "enabled", k.Enabled) - populateTimeUnix(objectMap, "exp", k.Expires) - populate(objectMap, "exportable", k.Exportable) - populateTimeUnix(objectMap, "nbf", k.NotBefore) - populate(objectMap, "recoverableDays", k.RecoverableDays) - populate(objectMap, "recoveryLevel", k.RecoveryLevel) - populateTimeUnix(objectMap, "updated", k.Updated) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyAttributes. -func (k *KeyAttributes) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "created": - err = unpopulateTimeUnix(val, "Created", &k.Created) - delete(rawMsg, key) - case "enabled": - err = unpopulate(val, "Enabled", &k.Enabled) - delete(rawMsg, key) - case "exp": - err = unpopulateTimeUnix(val, "Expires", &k.Expires) - delete(rawMsg, key) - case "exportable": - err = unpopulate(val, "Exportable", &k.Exportable) - delete(rawMsg, key) - case "nbf": - err = unpopulateTimeUnix(val, "NotBefore", &k.NotBefore) - delete(rawMsg, key) - case "recoverableDays": - err = unpopulate(val, "RecoverableDays", &k.RecoverableDays) - delete(rawMsg, key) - case "recoveryLevel": - err = unpopulate(val, "RecoveryLevel", &k.RecoveryLevel) - delete(rawMsg, key) - case "updated": - err = unpopulateTimeUnix(val, "Updated", &k.Updated) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyCreateParameters. -func (k KeyCreateParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "crv", k.Curve) - populate(objectMap, "attributes", k.KeyAttributes) - populate(objectMap, "key_ops", k.KeyOps) - populate(objectMap, "key_size", k.KeySize) - populate(objectMap, "kty", k.Kty) - populate(objectMap, "public_exponent", k.PublicExponent) - populate(objectMap, "release_policy", k.ReleasePolicy) - populate(objectMap, "tags", k.Tags) - return json.Marshal(objectMap) -} - -// MarshalJSON implements the json.Marshaller interface for type KeyImportParameters. -func (k KeyImportParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "Hsm", k.Hsm) - populate(objectMap, "key", k.Key) - populate(objectMap, "attributes", k.KeyAttributes) - populate(objectMap, "release_policy", k.ReleasePolicy) - populate(objectMap, "tags", k.Tags) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyOperationResult. -func (k *KeyOperationResult) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "aad": - err = runtime.DecodeByteArray(string(val), &k.AdditionalAuthenticatedData, runtime.Base64URLFormat) - delete(rawMsg, key) - case "tag": - err = runtime.DecodeByteArray(string(val), &k.AuthenticationTag, runtime.Base64URLFormat) - delete(rawMsg, key) - case "iv": - err = runtime.DecodeByteArray(string(val), &k.Iv, runtime.Base64URLFormat) - delete(rawMsg, key) - case "kid": - err = unpopulate(val, "Kid", &k.Kid) - delete(rawMsg, key) - case "value": - err = runtime.DecodeByteArray(string(val), &k.Result, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyOperationsParameters. -func (k KeyOperationsParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populateByteArray(objectMap, "aad", k.AAD, runtime.Base64URLFormat) - populate(objectMap, "alg", k.Algorithm) - populateByteArray(objectMap, "iv", k.Iv, runtime.Base64URLFormat) - populateByteArray(objectMap, "tag", k.Tag, runtime.Base64URLFormat) - populateByteArray(objectMap, "value", k.Value, runtime.Base64URLFormat) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyOperationsParameters. -func (k *KeyOperationsParameters) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "aad": - err = runtime.DecodeByteArray(string(val), &k.AAD, runtime.Base64URLFormat) - delete(rawMsg, key) - case "alg": - err = unpopulate(val, "Algorithm", &k.Algorithm) - delete(rawMsg, key) - case "iv": - err = runtime.DecodeByteArray(string(val), &k.Iv, runtime.Base64URLFormat) - delete(rawMsg, key) - case "tag": - err = runtime.DecodeByteArray(string(val), &k.Tag, runtime.Base64URLFormat) - delete(rawMsg, key) - case "value": - err = runtime.DecodeByteArray(string(val), &k.Value, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyReleasePolicy. -func (k KeyReleasePolicy) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "contentType", k.ContentType) - populateByteArray(objectMap, "data", k.EncodedPolicy, runtime.Base64URLFormat) - populate(objectMap, "immutable", k.Immutable) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyReleasePolicy. -func (k *KeyReleasePolicy) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "contentType": - err = unpopulate(val, "ContentType", &k.ContentType) - delete(rawMsg, key) - case "data": - err = runtime.DecodeByteArray(string(val), &k.EncodedPolicy, runtime.Base64URLFormat) - delete(rawMsg, key) - case "immutable": - err = unpopulate(val, "Immutable", &k.Immutable) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyRestoreParameters. -func (k KeyRestoreParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populateByteArray(objectMap, "value", k.KeyBundleBackup, runtime.Base64URLFormat) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyRestoreParameters. -func (k *KeyRestoreParameters) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "value": - err = runtime.DecodeByteArray(string(val), &k.KeyBundleBackup, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyRotationPolicy. -func (k KeyRotationPolicy) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "attributes", k.Attributes) - populate(objectMap, "id", k.ID) - populate(objectMap, "lifetimeActions", k.LifetimeActions) - return json.Marshal(objectMap) -} - -// MarshalJSON implements the json.Marshaller interface for type KeyRotationPolicyAttributes. -func (k KeyRotationPolicyAttributes) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populateTimeUnix(objectMap, "created", k.Created) - populate(objectMap, "expiryTime", k.ExpiryTime) - populateTimeUnix(objectMap, "updated", k.Updated) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyRotationPolicyAttributes. -func (k *KeyRotationPolicyAttributes) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "created": - err = unpopulateTimeUnix(val, "Created", &k.Created) - delete(rawMsg, key) - case "expiryTime": - err = unpopulate(val, "ExpiryTime", &k.ExpiryTime) - delete(rawMsg, key) - case "updated": - err = unpopulateTimeUnix(val, "Updated", &k.Updated) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeySignParameters. -func (k KeySignParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "alg", k.Algorithm) - populateByteArray(objectMap, "value", k.Value, runtime.Base64URLFormat) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeySignParameters. -func (k *KeySignParameters) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "alg": - err = unpopulate(val, "Algorithm", &k.Algorithm) - delete(rawMsg, key) - case "value": - err = runtime.DecodeByteArray(string(val), &k.Value, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// MarshalJSON implements the json.Marshaller interface for type KeyUpdateParameters. -func (k KeyUpdateParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "attributes", k.KeyAttributes) - populate(objectMap, "key_ops", k.KeyOps) - populate(objectMap, "release_policy", k.ReleasePolicy) - populate(objectMap, "tags", k.Tags) - return json.Marshal(objectMap) -} - -// MarshalJSON implements the json.Marshaller interface for type KeyVerifyParameters. -func (k KeyVerifyParameters) MarshalJSON() ([]byte, error) { - objectMap := make(map[string]interface{}) - populate(objectMap, "alg", k.Algorithm) - populateByteArray(objectMap, "digest", k.Digest, runtime.Base64URLFormat) - populateByteArray(objectMap, "value", k.Signature, runtime.Base64URLFormat) - return json.Marshal(objectMap) -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type KeyVerifyParameters. -func (k *KeyVerifyParameters) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "alg": - err = unpopulate(val, "Algorithm", &k.Algorithm) - delete(rawMsg, key) - case "digest": - err = runtime.DecodeByteArray(string(val), &k.Digest, runtime.Base64URLFormat) - delete(rawMsg, key) - case "value": - err = runtime.DecodeByteArray(string(val), &k.Signature, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", k, err) - } - } - return nil -} - -// UnmarshalJSON implements the json.Unmarshaller interface for type RandomBytes. -func (r *RandomBytes) UnmarshalJSON(data []byte) error { - var rawMsg map[string]json.RawMessage - if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", r, err) - } - for key, val := range rawMsg { - var err error - switch key { - case "value": - err = runtime.DecodeByteArray(string(val), &r.Value, runtime.Base64URLFormat) - delete(rawMsg, key) - } - if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", r, err) - } - } - return nil -} - -func populate(m map[string]interface{}, k string, v interface{}) { - if v == nil { - return - } else if azcore.IsNullValue(v) { - m[k] = nil - } else if !reflect.ValueOf(v).IsNil() { - m[k] = v - } -} - -func populateByteArray(m map[string]interface{}, k string, b []byte, f runtime.Base64Encoding) { - if azcore.IsNullValue(b) { - m[k] = nil - } else if len(b) == 0 { - return - } else { - m[k] = runtime.EncodeByteArray(b, f) - } -} - -func unpopulate(data json.RawMessage, fn string, v interface{}) error { - if data == nil { - return nil - } - if err := json.Unmarshal(data, v); err != nil { - return fmt.Errorf("struct field %s: %v", fn, err) - } - return nil -} diff --git a/sdk/keyvault/azkeys/internal/generated/response_types.go b/sdk/keyvault/azkeys/internal/generated/response_types.go deleted file mode 100644 index 07fa969a8eb3..000000000000 --- a/sdk/keyvault/azkeys/internal/generated/response_types.go +++ /dev/null @@ -1,129 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. -// Changes may cause incorrect behavior and will be lost if the code is regenerated. - -package generated - -// KeyVaultClientBackupKeyResponse contains the response from method KeyVaultClient.BackupKey. -type KeyVaultClientBackupKeyResponse struct { - BackupKeyResult -} - -// KeyVaultClientCreateKeyResponse contains the response from method KeyVaultClient.CreateKey. -type KeyVaultClientCreateKeyResponse struct { - KeyBundle -} - -// KeyVaultClientDecryptResponse contains the response from method KeyVaultClient.Decrypt. -type KeyVaultClientDecryptResponse struct { - KeyOperationResult -} - -// KeyVaultClientDeleteKeyResponse contains the response from method KeyVaultClient.DeleteKey. -type KeyVaultClientDeleteKeyResponse struct { - DeletedKeyBundle -} - -// KeyVaultClientEncryptResponse contains the response from method KeyVaultClient.Encrypt. -type KeyVaultClientEncryptResponse struct { - KeyOperationResult -} - -// KeyVaultClientGetDeletedKeyResponse contains the response from method KeyVaultClient.GetDeletedKey. -type KeyVaultClientGetDeletedKeyResponse struct { - DeletedKeyBundle -} - -// KeyVaultClientGetDeletedKeysResponse contains the response from method KeyVaultClient.GetDeletedKeys. -type KeyVaultClientGetDeletedKeysResponse struct { - DeletedKeyListResult -} - -// KeyVaultClientGetKeyResponse contains the response from method KeyVaultClient.GetKey. -type KeyVaultClientGetKeyResponse struct { - KeyBundle -} - -// KeyVaultClientGetKeyRotationPolicyResponse contains the response from method KeyVaultClient.GetKeyRotationPolicy. -type KeyVaultClientGetKeyRotationPolicyResponse struct { - KeyRotationPolicy -} - -// KeyVaultClientGetKeyVersionsResponse contains the response from method KeyVaultClient.GetKeyVersions. -type KeyVaultClientGetKeyVersionsResponse struct { - KeyListResult -} - -// KeyVaultClientGetKeysResponse contains the response from method KeyVaultClient.GetKeys. -type KeyVaultClientGetKeysResponse struct { - KeyListResult -} - -// KeyVaultClientGetRandomBytesResponse contains the response from method KeyVaultClient.GetRandomBytes. -type KeyVaultClientGetRandomBytesResponse struct { - RandomBytes -} - -// KeyVaultClientImportKeyResponse contains the response from method KeyVaultClient.ImportKey. -type KeyVaultClientImportKeyResponse struct { - KeyBundle -} - -// KeyVaultClientPurgeDeletedKeyResponse contains the response from method KeyVaultClient.PurgeDeletedKey. -type KeyVaultClientPurgeDeletedKeyResponse struct { - // placeholder for future response values -} - -// KeyVaultClientRecoverDeletedKeyResponse contains the response from method KeyVaultClient.RecoverDeletedKey. -type KeyVaultClientRecoverDeletedKeyResponse struct { - KeyBundle -} - -// KeyVaultClientReleaseResponse contains the response from method KeyVaultClient.Release. -type KeyVaultClientReleaseResponse struct { - KeyReleaseResult -} - -// KeyVaultClientRestoreKeyResponse contains the response from method KeyVaultClient.RestoreKey. -type KeyVaultClientRestoreKeyResponse struct { - KeyBundle -} - -// KeyVaultClientRotateKeyResponse contains the response from method KeyVaultClient.RotateKey. -type KeyVaultClientRotateKeyResponse struct { - KeyBundle -} - -// KeyVaultClientSignResponse contains the response from method KeyVaultClient.Sign. -type KeyVaultClientSignResponse struct { - KeyOperationResult -} - -// KeyVaultClientUnwrapKeyResponse contains the response from method KeyVaultClient.UnwrapKey. -type KeyVaultClientUnwrapKeyResponse struct { - KeyOperationResult -} - -// KeyVaultClientUpdateKeyResponse contains the response from method KeyVaultClient.UpdateKey. -type KeyVaultClientUpdateKeyResponse struct { - KeyBundle -} - -// KeyVaultClientUpdateKeyRotationPolicyResponse contains the response from method KeyVaultClient.UpdateKeyRotationPolicy. -type KeyVaultClientUpdateKeyRotationPolicyResponse struct { - KeyRotationPolicy -} - -// KeyVaultClientVerifyResponse contains the response from method KeyVaultClient.Verify. -type KeyVaultClientVerifyResponse struct { - KeyVerifyResult -} - -// KeyVaultClientWrapKeyResponse contains the response from method KeyVaultClient.WrapKey. -type KeyVaultClientWrapKeyResponse struct { - KeyOperationResult -} diff --git a/sdk/keyvault/azkeys/internal/version.go b/sdk/keyvault/azkeys/internal/version.go deleted file mode 100644 index b3d911c2a26c..000000000000 --- a/sdk/keyvault/azkeys/internal/version.go +++ /dev/null @@ -1,12 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package internal - -const ( - ModuleName = "azkeys" - ModuleVersion = "v0.6.0" -) diff --git a/sdk/keyvault/azkeys/models.go b/sdk/keyvault/azkeys/models.go index 202fae660d30..5794347f8f53 100644 --- a/sdk/keyvault/azkeys/models.go +++ b/sdk/keyvault/azkeys/models.go @@ -3,457 +3,546 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// DO NOT EDIT. package azkeys -import ( - "time" +import "time" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/generated" - shared "github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal" -) +// BackupKeyResult - The backup key result, containing the backup blob. +type BackupKeyResult struct { + // READ-ONLY; The backup blob containing the backed up key. + Value []byte `json:"value,omitempty" azure:"ro"` +} -// Properties - The properties of a key managed by the key vault service. -type Properties struct { - // READ-ONLY; Creation time in UTC. - CreatedOn *time.Time +// BackupKeyOptions contains the optional parameters for the Client.BackupKey method. +type BackupKeyOptions struct { + // placeholder for future optional parameters +} - // Determines whether the object is enabled. - Enabled *bool +// CreateKeyOptions contains the optional parameters for the Client.CreateKey method. +type CreateKeyOptions struct { + // placeholder for future optional parameters +} - // Expiry date in UTC. - ExpiresOn *time.Time +// DecryptOptions contains the optional parameters for the Client.Decrypt method. +type DecryptOptions struct { + // placeholder for future optional parameters +} - // Indicates if the private key can be exported. - Exportable *bool +// DeleteKeyOptions contains the optional parameters for the Client.DeleteKey method. +type DeleteKeyOptions struct { + // placeholder for future optional parameters +} - // ID identifies the key - ID *string +// EncryptOptions contains the optional parameters for the Client.Encrypt method. +type EncryptOptions struct { + // placeholder for future optional parameters +} - // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will be true. - Managed *bool +// GetDeletedKeyOptions contains the optional parameters for the Client.GetDeletedKey method. +type GetDeletedKeyOptions struct { + // placeholder for future optional parameters +} - // Name of the key - Name *string +// GetKeyOptions contains the optional parameters for the Client.GetKey method. +type GetKeyOptions struct { + // placeholder for future optional parameters +} - // Not before date in UTC. - NotBefore *time.Time +// GetKeyRotationPolicyOptions contains the optional parameters for the Client.GetKeyRotationPolicy method. +type GetKeyRotationPolicyOptions struct { + // placeholder for future optional parameters +} - // READ-ONLY; softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0. - RecoverableDays *int32 +// GetRandomBytesOptions contains the optional parameters for the Client.GetRandomBytes method. +type GetRandomBytesOptions struct { + // placeholder for future optional parameters +} - // READ-ONLY; Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' - // the key can be permanently deleted by a privileged user; otherwise, only the system - // can purge the key, at the end of the retention interval. - RecoveryLevel *string +// ImportKeyOptions contains the optional parameters for the Client.ImportKey method. +type ImportKeyOptions struct { + // placeholder for future optional parameters +} + +// ListDeletedKeysOptions contains the optional parameters for the Client.ListDeletedKeys method. +type ListDeletedKeysOptions struct { + // Maximum number of results to return in a page. If not specified the service will return up to 25 results. + MaxResults *int32 +} + +// ListKeyVersionsOptions contains the optional parameters for the Client.ListKeyVersions method. +type ListKeyVersionsOptions struct { + // Maximum number of results to return in a page. If not specified the service will return up to 25 results. + MaxResults *int32 +} + +// ListKeysOptions contains the optional parameters for the Client.ListKeys method. +type ListKeysOptions struct { + // Maximum number of results to return in a page. If not specified the service will return up to 25 results. + MaxResults *int32 +} + +// PurgeDeletedKeyOptions contains the optional parameters for the Client.PurgeDeletedKey method. +type PurgeDeletedKeyOptions struct { + // placeholder for future optional parameters +} + +// RecoverDeletedKeyOptions contains the optional parameters for the Client.RecoverDeletedKey method. +type RecoverDeletedKeyOptions struct { + // placeholder for future optional parameters +} + +// ReleaseOptions contains the optional parameters for the Client.Release method. +type ReleaseOptions struct { + // placeholder for future optional parameters +} + +// RestoreKeyOptions contains the optional parameters for the Client.RestoreKey method. +type RestoreKeyOptions struct { + // placeholder for future optional parameters +} + +// RotateKeyOptions contains the optional parameters for the Client.RotateKey method. +type RotateKeyOptions struct { + // placeholder for future optional parameters +} + +// SignOptions contains the optional parameters for the Client.Sign method. +type SignOptions struct { + // placeholder for future optional parameters +} + +// UnwrapKeyOptions contains the optional parameters for the Client.UnwrapKey method. +type UnwrapKeyOptions struct { + // placeholder for future optional parameters +} + +// UpdateKeyOptions contains the optional parameters for the Client.UpdateKey method. +type UpdateKeyOptions struct { + // placeholder for future optional parameters +} + +// UpdateKeyRotationPolicyOptions contains the optional parameters for the Client.UpdateKeyRotationPolicy method. +type UpdateKeyRotationPolicyOptions struct { + // placeholder for future optional parameters +} + +// VerifyOptions contains the optional parameters for the Client.Verify method. +type VerifyOptions struct { + // placeholder for future optional parameters +} + +// WrapKeyOptions contains the optional parameters for the Client.WrapKey method. +type WrapKeyOptions struct { + // placeholder for future optional parameters +} + +// CreateKeyParameters - The key create parameters. +type CreateKeyParameters struct { + // REQUIRED; The type of key to create. For valid values, see JsonWebKeyType. + Kty *JSONWebKeyType `json:"kty,omitempty"` + + // Elliptic curve name. For valid values, see JsonWebKeyCurveName. + Curve *JSONWebKeyCurveName `json:"crv,omitempty"` + + // The attributes of a key managed by the key vault service. + KeyAttributes *KeyAttributes `json:"attributes,omitempty"` + KeyOps []*JSONWebKeyOperation `json:"key_ops,omitempty"` + + // The key size in bits. For example: 2048, 3072, or 4096 for RSA. + KeySize *int32 `json:"key_size,omitempty"` + + // The public exponent for a RSA key. + PublicExponent *int32 `json:"public_exponent,omitempty"` // The policy rules under which the key can be exported. - ReleasePolicy *ReleasePolicy `json:"release_policy,omitempty"` + ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - // Tags contain application specific metadata in the form of key-value pairs. - Tags map[string]*string + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` +} - // READ-ONLY; Last updated time in UTC. - UpdatedOn *time.Time - - // VaultURL for the key - VaultURL *string - - // Version of the key - Version *string -} - -// converts a KeyAttributes to *generated.KeyAttributes -func (k *Properties) toGenerated() *generated.KeyAttributes { - if k == nil { - return nil - } - return &generated.KeyAttributes{ - RecoverableDays: k.RecoverableDays, - RecoveryLevel: toGeneratedDeletionRecoveryLevel(k.RecoveryLevel), - Enabled: k.Enabled, - Expires: k.ExpiresOn, - NotBefore: k.NotBefore, - Created: k.CreatedOn, - Updated: k.UpdatedOn, - Exportable: k.Exportable, - } -} - -// converts *generated.KeyAttributes to *KeyAttributes -func keyPropertiesFromGenerated(i *generated.KeyAttributes, id, name, version *string, managed *bool, vaultURL *string, tags map[string]*string, releasePolicy *generated.KeyReleasePolicy) *Properties { - if i == nil { - return &Properties{} - } - - return &Properties{ - CreatedOn: i.Created, - Enabled: i.Enabled, - ExpiresOn: i.Expires, - Exportable: i.Exportable, - ID: id, - Managed: managed, - Name: name, - NotBefore: i.NotBefore, - RecoverableDays: i.RecoverableDays, - RecoveryLevel: to.Ptr(string(*i.RecoveryLevel)), - ReleasePolicy: keyReleasePolicyFromGenerated(releasePolicy), - Tags: tags, - UpdatedOn: i.Updated, - VaultURL: vaultURL, - Version: version, - } -} - -// Key - A Key consists of a WebKey plus its attributes. -type Key struct { - // The key management properties. - Properties *Properties +// DeletedKeyBundle - A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion info +type DeletedKeyBundle struct { + // The key management attributes. + Attributes *KeyAttributes `json:"attributes,omitempty"` // The Json web key. - JSONWebKey *JSONWebKey + Key *JSONWebKey `json:"key,omitempty"` + + // The url of the recovery object, used to identify and recover the deleted key. + RecoveryID *string `json:"recoveryId,omitempty"` + + // The policy rules under which the key can be exported. + ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` + + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` + + // READ-ONLY; The time when the key was deleted, in UTC + DeletedDate *time.Time `json:"deletedDate,omitempty" azure:"ro"` - // ID identifies the key - ID *string + // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will + // be true. + Managed *bool `json:"managed,omitempty" azure:"ro"` - // READ-ONLY; The name of the key - Name *string + // READ-ONLY; The time when the key is scheduled to be purged, in UTC + ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty" azure:"ro"` +} + +// DeletedKeyItem - The deleted key item containing the deleted key metadata and information about deletion. +type DeletedKeyItem struct { + // The key management attributes. + Attributes *KeyAttributes `json:"attributes,omitempty"` + + // Key identifier. + KID *ID `json:"kid,omitempty"` + + // The url of the recovery object, used to identify and recover the deleted key. + RecoveryID *string `json:"recoveryId,omitempty"` + + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` + + // READ-ONLY; The time when the key was deleted, in UTC + DeletedDate *time.Time `json:"deletedDate,omitempty" azure:"ro"` + + // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will + // be true. + Managed *bool `json:"managed,omitempty" azure:"ro"` + + // READ-ONLY; The time when the key is scheduled to be purged, in UTC + ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty" azure:"ro"` +} + +// DeletedKeyListResult - A list of keys that have been deleted in this vault. +type DeletedKeyListResult struct { + // READ-ONLY; The URL to get the next set of deleted keys. + NextLink *string `json:"nextLink,omitempty" azure:"ro"` + + // READ-ONLY; A response message containing a list of deleted keys in the vault along with a link to the next page of deleted + // keys + Value []*DeletedKeyItem `json:"value,omitempty" azure:"ro"` +} + +// GetRandomBytesRequest - The get random bytes request object. +type GetRandomBytesRequest struct { + // REQUIRED; The requested number of random bytes. + Count *int32 `json:"count,omitempty"` +} + +// ImportKeyParameters - The key import parameters. +type ImportKeyParameters struct { + // REQUIRED; The Json web key + Key *JSONWebKey `json:"key,omitempty"` + + // Whether to import as a hardware key (HSM) or software key. + HSM *bool `json:"Hsm,omitempty"` + + // The key management attributes. + KeyAttributes *KeyAttributes `json:"attributes,omitempty"` + + // The policy rules under which the key can be exported. + ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` + + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` } // JSONWebKey - As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 type JSONWebKey struct { - // Elliptic curve name. For valid values, see PossibleCurveNameValues. - Crv *CurveName + // Elliptic curve name. For valid values, see JsonWebKeyCurveName. + Crv *JSONWebKeyCurveName `json:"crv,omitempty"` // RSA private exponent, or the D component of an EC private key. - D []byte + D []byte `json:"d,omitempty"` // RSA private key parameter. - DP []byte + DP []byte `json:"dp,omitempty"` // RSA private key parameter. - DQ []byte + DQ []byte `json:"dq,omitempty"` // RSA public exponent. - E []byte + E []byte `json:"e,omitempty"` // Symmetric key. - K []byte - KeyOps []*Operation + K []byte `json:"k,omitempty"` - // ID identifies the key - ID *string + // Key identifier. + KID *ID `json:"kid,omitempty"` + KeyOps []*string `json:"key_ops,omitempty"` // JsonWebKey Key Type (kty), as defined in https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40. - KeyType *KeyType + Kty *JSONWebKeyType `json:"kty,omitempty"` // RSA modulus. - N []byte + N []byte `json:"n,omitempty"` // RSA secret prime. - P []byte + P []byte `json:"p,omitempty"` // RSA secret prime, with p < q. - Q []byte + Q []byte `json:"q,omitempty"` // RSA private key parameter. - QI []byte + QI []byte `json:"qi,omitempty"` // Protected Key, used with 'Bring Your Own Key'. - T []byte + T []byte `json:"key_hsm,omitempty"` // X component of an EC public key. - X []byte + X []byte `json:"x,omitempty"` // Y component of an EC public key. - Y []byte -} - -// converts generated.JSONWebKey to publicly exposed version -func jsonWebKeyFromGenerated(i *generated.JSONWebKey) *JSONWebKey { - if i == nil { - return &JSONWebKey{} - } - - ops := make([]*Operation, len(i.KeyOps)) - for j, op := range i.KeyOps { - ops[j] = (*Operation)(op) - } - - return &JSONWebKey{ - Crv: (*CurveName)(i.Crv), - D: i.D, - DP: i.DP, - DQ: i.DQ, - E: i.E, - K: i.K, - KeyOps: ops, - ID: i.Kid, - KeyType: (*KeyType)(i.Kty), - N: i.N, - P: i.P, - Q: i.Q, - QI: i.QI, - T: i.T, - X: i.X, - Y: i.Y, - } -} - -// converts JSONWebKey to *generated.JSONWebKey -func (j JSONWebKey) toGenerated() *generated.JSONWebKey { - ops := make([]*string, len(j.KeyOps)) - for i, op := range j.KeyOps { - ops[i] = (*string)(op) - } - return &generated.JSONWebKey{ - Crv: (*generated.JSONWebKeyCurveName)(j.Crv), - D: j.D, - DP: j.DP, - DQ: j.DQ, - E: j.E, - K: j.K, - KeyOps: ops, - Kid: j.ID, - Kty: (*generated.JSONWebKeyType)(j.KeyType), - N: j.N, - P: j.P, - Q: j.Q, - QI: j.QI, - T: j.T, - X: j.X, - Y: j.Y, - } + Y []byte `json:"y,omitempty"` } -// KeyItem - The key item containing key metadata. -type KeyItem struct { - // The key management properties. - Properties *Properties +// KeyAttributes - The attributes of a key managed by the key vault service. +type KeyAttributes struct { + // Determines whether the object is enabled. + Enabled *bool `json:"enabled,omitempty"` - // ID identifies the key - ID *string + // Expiry date in UTC. + Expires *time.Time `json:"exp,omitempty"` - // Name of the key - Name *string -} + // Indicates if the private key can be exported. + Exportable *bool `json:"exportable,omitempty"` + + // Not before date in UTC. + NotBefore *time.Time `json:"nbf,omitempty"` + + // READ-ONLY; Creation time in UTC. + Created *time.Time `json:"created,omitempty" azure:"ro"` + + // READ-ONLY; softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0. + RecoverableDays *int32 `json:"recoverableDays,omitempty" azure:"ro"` -// convert *generated.KeyItem to *KeyItem -func keyItemFromGenerated(i *generated.KeyItem) *KeyItem { - if i == nil { - return nil - } + // READ-ONLY; Reflects the deletion recovery level currently in effect for keys in the current vault. If it contains 'Purgeable' + // the key can be permanently deleted by a privileged user; otherwise, only the system + // can purge the key, at the end of the retention interval. + RecoveryLevel *DeletionRecoveryLevel `json:"recoveryLevel,omitempty" azure:"ro"` - _, name, _ := shared.ParseID(i.Kid) - return &KeyItem{ - Properties: keyPropertiesFromGenerated(i.Attributes, nil, nil, nil, i.Managed, nil, i.Tags, nil), - ID: i.Kid, - Name: name, - } + // READ-ONLY; Last updated time in UTC. + Updated *time.Time `json:"updated,omitempty" azure:"ro"` } -// DeletedKey - A DeletedKey consisting of a WebKey plus its Attributes and deletion info -type DeletedKey struct { - // The key management properties. - Properties *Properties +// KeyBundle - A KeyBundle consisting of a WebKey plus its attributes. +type KeyBundle struct { + // The key management attributes. + Attributes *KeyAttributes `json:"attributes,omitempty"` // The Json web key. - Key *JSONWebKey - - // The url of the recovery object, used to identify and recover the deleted key. - RecoveryID *string + Key *JSONWebKey `json:"key,omitempty"` // The policy rules under which the key can be exported. - ReleasePolicy *ReleasePolicy + ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` - // READ-ONLY; The time when the key was deleted, in UTC - DeletedOn *time.Time + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` - // READ-ONLY; The time when the key is scheduled to be purged, in UTC - ScheduledPurgeDate *time.Time + // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will + // be true. + Managed *bool `json:"managed,omitempty" azure:"ro"` } -// DeletedKeyItem - The deleted key item containing the deleted key metadata and information about deletion. -type DeletedKeyItem struct { +// KeyItem - The key item containing key metadata. +type KeyItem struct { // The key management attributes. - Properties *Properties + Attributes *KeyAttributes `json:"attributes,omitempty"` - // ID identifies the key - ID *string + // Key identifier. + KID *ID `json:"kid,omitempty"` - // Name of the key - Name *string + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` - // The url of the recovery object, used to identify and recover the deleted key. - RecoveryID *string + // READ-ONLY; True if the key's lifetime is managed by key vault. If this is a key backing a certificate, then managed will + // be true. + Managed *bool `json:"managed,omitempty" azure:"ro"` +} - // READ-ONLY; The time when the key was deleted, in UTC - DeletedOn *time.Time +// KeyListResult - The key list result. +type KeyListResult struct { + // READ-ONLY; The URL to get the next set of keys. + NextLink *string `json:"nextLink,omitempty" azure:"ro"` - // READ-ONLY; The time when the key is scheduled to be purged, in UTC - ScheduledPurgeDate *time.Time -} - -// convert *generated.DeletedKeyItem to *DeletedKeyItem -func deletedKeyItemFromGenerated(i *generated.DeletedKeyItem) *DeletedKeyItem { - if i == nil { - return nil - } - - vaultURL, name, version := shared.ParseID(i.Kid) - return &DeletedKeyItem{ - RecoveryID: i.RecoveryID, - DeletedOn: i.DeletedDate, - ScheduledPurgeDate: i.ScheduledPurgeDate, - Properties: keyPropertiesFromGenerated(i.Attributes, i.Kid, name, version, i.Managed, vaultURL, i.Tags, nil), - ID: i.Kid, - Name: name, - } -} - -// ReleasePolicy represents the release policy for a Key Vault Key. For more information regarding -// the release policy grammar for Azure Key Vault, please refer to: -// - https://aka.ms/policygrammarkeys for Azure Key Vault release policy grammar. -// - https://aka.ms/policygrammarhsm for Azure Managed HSM release policy grammar. -type ReleasePolicy struct { + // READ-ONLY; A response message containing a list of keys in the key vault along with a link to the next page of keys. + Value []*KeyItem `json:"value,omitempty" azure:"ro"` +} + +// KeyOperationResult - The key operation result. +type KeyOperationResult struct { + // READ-ONLY + AdditionalAuthenticatedData []byte `json:"aad,omitempty" azure:"ro"` + + // READ-ONLY + AuthenticationTag []byte `json:"tag,omitempty" azure:"ro"` + + // READ-ONLY + IV []byte `json:"iv,omitempty" azure:"ro"` + + // READ-ONLY; Key identifier + KID *ID `json:"kid,omitempty" azure:"ro"` + + // READ-ONLY + Result []byte `json:"value,omitempty" azure:"ro"` +} + +// KeyOperationsParameters - The key operations parameters. +type KeyOperationsParameters struct { + // REQUIRED; algorithm identifier + Algorithm *JSONWebKeyEncryptionAlgorithm `json:"alg,omitempty"` + + // REQUIRED + Value []byte `json:"value,omitempty"` + + // Additional data to authenticate but not encrypt/decrypt when using authenticated crypto algorithms. + AAD []byte `json:"aad,omitempty"` + + // Initialization vector for symmetric algorithms. + IV []byte `json:"iv,omitempty"` + + // The tag to authenticate when performing decryption with an authenticated algorithm. + Tag []byte `json:"tag,omitempty"` +} + +// KeyReleasePolicy - The policy rules under which the key can be exported. +type KeyReleasePolicy struct { // Content type and version of key release policy - ContentType *string + ContentType *string `json:"contentType,omitempty"` // Blob encoding the policy rules under which the key can be released. - EncodedPolicy []byte + EncodedPolicy []byte `json:"data,omitempty"` // Defines the mutability state of the policy. Once marked immutable, this flag cannot be reset and the policy cannot be changed // under any circumstances. - Immutable *bool -} - -func (k *ReleasePolicy) toGenerated() *generated.KeyReleasePolicy { - if k == nil { - return nil - } - - return &generated.KeyReleasePolicy{ - ContentType: k.ContentType, - EncodedPolicy: k.EncodedPolicy, - Immutable: k.Immutable, - } + Immutable *bool `json:"immutable,omitempty"` } -func keyReleasePolicyFromGenerated(i *generated.KeyReleasePolicy) *ReleasePolicy { - if i == nil { - return nil - } - return &ReleasePolicy{ - ContentType: i.ContentType, - EncodedPolicy: i.EncodedPolicy, - Immutable: i.Immutable, - } +// KeyReleaseResult - The release result, containing the released key. +type KeyReleaseResult struct { + // READ-ONLY; A signed object containing the released key. + Value *string `json:"value,omitempty" azure:"ro"` } -// RotationPolicy - Management policy for a key. -type RotationPolicy struct { +// KeyRotationPolicy - Management policy for a key. +type KeyRotationPolicy struct { // The key rotation policy attributes. - Attributes *RotationPolicyAttributes + Attributes *KeyRotationPolicyAttributes `json:"attributes,omitempty"` - // Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two items at maximum: one for rotate, - // one for notify. Notification time would be + // Actions that will be performed by Key Vault over the lifetime of a key. For preview, lifetimeActions can only have two + // items at maximum: one for rotate, one for notify. Notification time would be // default to 30 days before expiry and it is not configurable. - LifetimeActions []*LifetimeActions + LifetimeActions []*LifetimeActions `json:"lifetimeActions,omitempty"` // READ-ONLY; The key policy id. - ID *string + ID *string `json:"id,omitempty" azure:"ro"` } -func (u RotationPolicy) toGenerated() generated.KeyRotationPolicy { - var attribs *generated.KeyRotationPolicyAttributes - if u.Attributes != nil { - attribs = u.Attributes.toGenerated() - } - la := make([]*generated.LifetimeActions, len(u.LifetimeActions)) - for i, l := range u.LifetimeActions { - la[i] = l.toGenerated() - } - - return generated.KeyRotationPolicy{ - ID: u.ID, - LifetimeActions: la, - Attributes: attribs, - } -} - -// RotationPolicyAttributes - The key rotation policy attributes. -type RotationPolicyAttributes struct { - // ExpiresIn will be applied on the new key version. It should be at least 28 days. - // It will be in ISO 8601 Format. Examples: 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D - // It should be at least 28 days. - ExpiresIn *string +// KeyRotationPolicyAttributes - The key rotation policy attributes. +type KeyRotationPolicyAttributes struct { + // The expiryTime will be applied on the new key version. It should be at least 28 days. It will be in ISO 8601 Format. Examples: + // 90 days: P90D, 3 months: P3M, 48 hours: PT48H, 1 year and 10 days: P1Y10D + ExpiryTime *string `json:"expiryTime,omitempty"` // READ-ONLY; The key rotation policy created time in UTC. - CreatedOn *time.Time + Created *time.Time `json:"created,omitempty" azure:"ro"` // READ-ONLY; The key rotation policy's last updated time in UTC. - UpdatedOn *time.Time + Updated *time.Time `json:"updated,omitempty" azure:"ro"` } -func (k RotationPolicyAttributes) toGenerated() *generated.KeyRotationPolicyAttributes { - return &generated.KeyRotationPolicyAttributes{ - ExpiryTime: k.ExpiresIn, - Created: k.CreatedOn, - Updated: k.UpdatedOn, - } +// KeyVerifyResult - The key verify result. +type KeyVerifyResult struct { + // READ-ONLY; True if the signature is verified, otherwise false. + Value *bool `json:"value,omitempty" azure:"ro"` } // LifetimeActions - Action and its trigger that will be performed by Key Vault over the lifetime of a key. type LifetimeActions struct { // The action that will be executed. - Action *LifetimeActionsType + Action *LifetimeActionsType `json:"action,omitempty"` // The condition that will execute the action. - Trigger *LifetimeActionsTrigger -} - -func (l *LifetimeActions) toGenerated() *generated.LifetimeActions { - if l == nil { - return nil - } - return &generated.LifetimeActions{ - Action: &generated.LifetimeActionsType{ - Type: (*generated.ActionType)(l.Action.Type), - }, - Trigger: &generated.LifetimeActionsTrigger{ - TimeAfterCreate: l.Trigger.TimeAfterCreate, - TimeBeforeExpiry: l.Trigger.TimeBeforeExpiry, - }, - } -} - -func lifetimeActionsFromGenerated(i *generated.LifetimeActions) *LifetimeActions { - if i == nil { - return nil - } - return &LifetimeActions{ - Trigger: &LifetimeActionsTrigger{ - TimeAfterCreate: i.Trigger.TimeAfterCreate, - TimeBeforeExpiry: i.Trigger.TimeBeforeExpiry, - }, - Action: &LifetimeActionsType{ - Type: (*RotationAction)(i.Action.Type), - }, - } + Trigger *LifetimeActionsTrigger `json:"trigger,omitempty"` +} + +// LifetimeActionsTrigger - A condition to be satisfied for an action to be executed. +type LifetimeActionsTrigger struct { + // Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 + // days : "P90D" + TimeAfterCreate *string `json:"timeAfterCreate,omitempty"` + + // Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : "P90D" + TimeBeforeExpiry *string `json:"timeBeforeExpiry,omitempty"` } // LifetimeActionsType - The action that will be executed. type LifetimeActionsType struct { // The type of the action. - Type *RotationAction + Type *ActionType `json:"type,omitempty"` } -// LifetimeActionsTrigger - A condition to be satisfied for an action to be executed. -type LifetimeActionsTrigger struct { - // Time after creation to attempt to rotate. It only applies to rotate. It will be in ISO 8601 duration format. Example: 90 days : "P90D" - TimeAfterCreate *string +// RandomBytes - The get random bytes response object containing the bytes. +type RandomBytes struct { + // REQUIRED; The bytes encoded as a base64url string. + Value []byte `json:"value,omitempty"` +} - // Time before expiry to attempt to rotate or notify. It will be in ISO 8601 duration format. Example: 90 days : "P90D" - TimeBeforeExpiry *string +// ReleaseParameters - The release key parameters. +type ReleaseParameters struct { + // REQUIRED; The attestation assertion for the target of the key release. + TargetAttestationToken *string `json:"target,omitempty"` + + // The encryption algorithm to use to protected the exported key material + Enc *KeyEncryptionAlgorithm `json:"enc,omitempty"` + + // A client provided nonce for freshness. + Nonce *string `json:"nonce,omitempty"` +} + +// RestoreKeyParameters - The key restore parameters. +type RestoreKeyParameters struct { + // REQUIRED; The backup blob associated with a key bundle. + KeyBundleBackup []byte `json:"value,omitempty"` +} + +// SignParameters - The key operations parameters. +type SignParameters struct { + // REQUIRED; The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + Algorithm *JSONWebKeySignatureAlgorithm `json:"alg,omitempty"` + + // REQUIRED + Value []byte `json:"value,omitempty"` +} + +// UpdateKeyParameters - The key update parameters. +type UpdateKeyParameters struct { + // The attributes of a key managed by the key vault service. + KeyAttributes *KeyAttributes `json:"attributes,omitempty"` + + // Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + KeyOps []*JSONWebKeyOperation `json:"key_ops,omitempty"` + + // The policy rules under which the key can be exported. + ReleasePolicy *KeyReleasePolicy `json:"release_policy,omitempty"` + + // Application specific metadata in the form of key-value pairs. + Tags map[string]*string `json:"tags,omitempty"` +} + +// VerifyParameters - The key verify parameters. +type VerifyParameters struct { + // REQUIRED; The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + Algorithm *JSONWebKeySignatureAlgorithm `json:"alg,omitempty"` + + // REQUIRED; The digest used for signing. + Digest []byte `json:"digest,omitempty"` + + // REQUIRED; The signature to be verified. + Signature []byte `json:"value,omitempty"` } diff --git a/sdk/keyvault/azkeys/models_serde.go b/sdk/keyvault/azkeys/models_serde.go new file mode 100644 index 000000000000..f8e1393444a0 --- /dev/null +++ b/sdk/keyvault/azkeys/models_serde.go @@ -0,0 +1,1120 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// DO NOT EDIT. + +package azkeys + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "reflect" +) + +// MarshalJSON implements the json.Marshaller interface for type BackupKeyResult. +func (b BackupKeyResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateByteArray(objectMap, "value", b.Value, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type BackupKeyResult. +func (b *BackupKeyResult) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", b, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "value": + err = runtime.DecodeByteArray(string(val), &b.Value, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", b, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type CreateKeyParameters. +func (c CreateKeyParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "crv", c.Curve) + populate(objectMap, "attributes", c.KeyAttributes) + populate(objectMap, "key_ops", c.KeyOps) + populate(objectMap, "key_size", c.KeySize) + populate(objectMap, "kty", c.Kty) + populate(objectMap, "public_exponent", c.PublicExponent) + populate(objectMap, "release_policy", c.ReleasePolicy) + populate(objectMap, "tags", c.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type CreateKeyParameters. +func (c *CreateKeyParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", c, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "crv": + err = unpopulate(val, "Curve", &c.Curve) + delete(rawMsg, key) + case "attributes": + err = unpopulate(val, "KeyAttributes", &c.KeyAttributes) + delete(rawMsg, key) + case "key_ops": + err = unpopulate(val, "KeyOps", &c.KeyOps) + delete(rawMsg, key) + case "key_size": + err = unpopulate(val, "KeySize", &c.KeySize) + delete(rawMsg, key) + case "kty": + err = unpopulate(val, "Kty", &c.Kty) + delete(rawMsg, key) + case "public_exponent": + err = unpopulate(val, "PublicExponent", &c.PublicExponent) + delete(rawMsg, key) + case "release_policy": + err = unpopulate(val, "ReleasePolicy", &c.ReleasePolicy) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &c.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", c, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type DeletedKeyBundle. +func (d DeletedKeyBundle) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "attributes", d.Attributes) + populateTimeUnix(objectMap, "deletedDate", d.DeletedDate) + populate(objectMap, "key", d.Key) + populate(objectMap, "managed", d.Managed) + populate(objectMap, "recoveryId", d.RecoveryID) + populate(objectMap, "release_policy", d.ReleasePolicy) + populateTimeUnix(objectMap, "scheduledPurgeDate", d.ScheduledPurgeDate) + populate(objectMap, "tags", d.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedKeyBundle. +func (d *DeletedKeyBundle) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", d, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "attributes": + err = unpopulate(val, "Attributes", &d.Attributes) + delete(rawMsg, key) + case "deletedDate": + err = unpopulateTimeUnix(val, "DeletedDate", &d.DeletedDate) + delete(rawMsg, key) + case "key": + err = unpopulate(val, "Key", &d.Key) + delete(rawMsg, key) + case "managed": + err = unpopulate(val, "Managed", &d.Managed) + delete(rawMsg, key) + case "recoveryId": + err = unpopulate(val, "RecoveryID", &d.RecoveryID) + delete(rawMsg, key) + case "release_policy": + err = unpopulate(val, "ReleasePolicy", &d.ReleasePolicy) + delete(rawMsg, key) + case "scheduledPurgeDate": + err = unpopulateTimeUnix(val, "ScheduledPurgeDate", &d.ScheduledPurgeDate) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &d.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", d, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type DeletedKeyItem. +func (d DeletedKeyItem) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "attributes", d.Attributes) + populateTimeUnix(objectMap, "deletedDate", d.DeletedDate) + populate(objectMap, "kid", d.KID) + populate(objectMap, "managed", d.Managed) + populate(objectMap, "recoveryId", d.RecoveryID) + populateTimeUnix(objectMap, "scheduledPurgeDate", d.ScheduledPurgeDate) + populate(objectMap, "tags", d.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedKeyItem. +func (d *DeletedKeyItem) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", d, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "attributes": + err = unpopulate(val, "Attributes", &d.Attributes) + delete(rawMsg, key) + case "deletedDate": + err = unpopulateTimeUnix(val, "DeletedDate", &d.DeletedDate) + delete(rawMsg, key) + case "kid": + err = unpopulate(val, "KID", &d.KID) + delete(rawMsg, key) + case "managed": + err = unpopulate(val, "Managed", &d.Managed) + delete(rawMsg, key) + case "recoveryId": + err = unpopulate(val, "RecoveryID", &d.RecoveryID) + delete(rawMsg, key) + case "scheduledPurgeDate": + err = unpopulateTimeUnix(val, "ScheduledPurgeDate", &d.ScheduledPurgeDate) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &d.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", d, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type DeletedKeyListResult. +func (d DeletedKeyListResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "nextLink", d.NextLink) + populate(objectMap, "value", d.Value) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedKeyListResult. +func (d *DeletedKeyListResult) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", d, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "nextLink": + err = unpopulate(val, "NextLink", &d.NextLink) + delete(rawMsg, key) + case "value": + err = unpopulate(val, "Value", &d.Value) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", d, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type GetRandomBytesRequest. +func (g GetRandomBytesRequest) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "count", g.Count) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type GetRandomBytesRequest. +func (g *GetRandomBytesRequest) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", g, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "count": + err = unpopulate(val, "Count", &g.Count) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", g, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type ImportKeyParameters. +func (i ImportKeyParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "Hsm", i.HSM) + populate(objectMap, "key", i.Key) + populate(objectMap, "attributes", i.KeyAttributes) + populate(objectMap, "release_policy", i.ReleasePolicy) + populate(objectMap, "tags", i.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type ImportKeyParameters. +func (i *ImportKeyParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", i, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "Hsm": + err = unpopulate(val, "HSM", &i.HSM) + delete(rawMsg, key) + case "key": + err = unpopulate(val, "Key", &i.Key) + delete(rawMsg, key) + case "attributes": + err = unpopulate(val, "KeyAttributes", &i.KeyAttributes) + delete(rawMsg, key) + case "release_policy": + err = unpopulate(val, "ReleasePolicy", &i.ReleasePolicy) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &i.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", i, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type JSONWebKey. +func (j JSONWebKey) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "crv", j.Crv) + populateByteArray(objectMap, "d", j.D, runtime.Base64URLFormat) + populateByteArray(objectMap, "dp", j.DP, runtime.Base64URLFormat) + populateByteArray(objectMap, "dq", j.DQ, runtime.Base64URLFormat) + populateByteArray(objectMap, "e", j.E, runtime.Base64URLFormat) + populateByteArray(objectMap, "k", j.K, runtime.Base64URLFormat) + populate(objectMap, "kid", j.KID) + populate(objectMap, "key_ops", j.KeyOps) + populate(objectMap, "kty", j.Kty) + populateByteArray(objectMap, "n", j.N, runtime.Base64URLFormat) + populateByteArray(objectMap, "p", j.P, runtime.Base64URLFormat) + populateByteArray(objectMap, "q", j.Q, runtime.Base64URLFormat) + populateByteArray(objectMap, "qi", j.QI, runtime.Base64URLFormat) + populateByteArray(objectMap, "key_hsm", j.T, runtime.Base64URLFormat) + populateByteArray(objectMap, "x", j.X, runtime.Base64URLFormat) + populateByteArray(objectMap, "y", j.Y, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type JSONWebKey. +func (j *JSONWebKey) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", j, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "crv": + err = unpopulate(val, "Crv", &j.Crv) + delete(rawMsg, key) + case "d": + err = runtime.DecodeByteArray(string(val), &j.D, runtime.Base64URLFormat) + delete(rawMsg, key) + case "dp": + err = runtime.DecodeByteArray(string(val), &j.DP, runtime.Base64URLFormat) + delete(rawMsg, key) + case "dq": + err = runtime.DecodeByteArray(string(val), &j.DQ, runtime.Base64URLFormat) + delete(rawMsg, key) + case "e": + err = runtime.DecodeByteArray(string(val), &j.E, runtime.Base64URLFormat) + delete(rawMsg, key) + case "k": + err = runtime.DecodeByteArray(string(val), &j.K, runtime.Base64URLFormat) + delete(rawMsg, key) + case "kid": + err = unpopulate(val, "KID", &j.KID) + delete(rawMsg, key) + case "key_ops": + err = unpopulate(val, "KeyOps", &j.KeyOps) + delete(rawMsg, key) + case "kty": + err = unpopulate(val, "Kty", &j.Kty) + delete(rawMsg, key) + case "n": + err = runtime.DecodeByteArray(string(val), &j.N, runtime.Base64URLFormat) + delete(rawMsg, key) + case "p": + err = runtime.DecodeByteArray(string(val), &j.P, runtime.Base64URLFormat) + delete(rawMsg, key) + case "q": + err = runtime.DecodeByteArray(string(val), &j.Q, runtime.Base64URLFormat) + delete(rawMsg, key) + case "qi": + err = runtime.DecodeByteArray(string(val), &j.QI, runtime.Base64URLFormat) + delete(rawMsg, key) + case "key_hsm": + err = runtime.DecodeByteArray(string(val), &j.T, runtime.Base64URLFormat) + delete(rawMsg, key) + case "x": + err = runtime.DecodeByteArray(string(val), &j.X, runtime.Base64URLFormat) + delete(rawMsg, key) + case "y": + err = runtime.DecodeByteArray(string(val), &j.Y, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", j, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyAttributes. +func (k KeyAttributes) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateTimeUnix(objectMap, "created", k.Created) + populate(objectMap, "enabled", k.Enabled) + populateTimeUnix(objectMap, "exp", k.Expires) + populate(objectMap, "exportable", k.Exportable) + populateTimeUnix(objectMap, "nbf", k.NotBefore) + populate(objectMap, "recoverableDays", k.RecoverableDays) + populate(objectMap, "recoveryLevel", k.RecoveryLevel) + populateTimeUnix(objectMap, "updated", k.Updated) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyAttributes. +func (k *KeyAttributes) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "created": + err = unpopulateTimeUnix(val, "Created", &k.Created) + delete(rawMsg, key) + case "enabled": + err = unpopulate(val, "Enabled", &k.Enabled) + delete(rawMsg, key) + case "exp": + err = unpopulateTimeUnix(val, "Expires", &k.Expires) + delete(rawMsg, key) + case "exportable": + err = unpopulate(val, "Exportable", &k.Exportable) + delete(rawMsg, key) + case "nbf": + err = unpopulateTimeUnix(val, "NotBefore", &k.NotBefore) + delete(rawMsg, key) + case "recoverableDays": + err = unpopulate(val, "RecoverableDays", &k.RecoverableDays) + delete(rawMsg, key) + case "recoveryLevel": + err = unpopulate(val, "RecoveryLevel", &k.RecoveryLevel) + delete(rawMsg, key) + case "updated": + err = unpopulateTimeUnix(val, "Updated", &k.Updated) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyBundle. +func (k KeyBundle) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "attributes", k.Attributes) + populate(objectMap, "key", k.Key) + populate(objectMap, "managed", k.Managed) + populate(objectMap, "release_policy", k.ReleasePolicy) + populate(objectMap, "tags", k.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyBundle. +func (k *KeyBundle) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "attributes": + err = unpopulate(val, "Attributes", &k.Attributes) + delete(rawMsg, key) + case "key": + err = unpopulate(val, "Key", &k.Key) + delete(rawMsg, key) + case "managed": + err = unpopulate(val, "Managed", &k.Managed) + delete(rawMsg, key) + case "release_policy": + err = unpopulate(val, "ReleasePolicy", &k.ReleasePolicy) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &k.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyItem. +func (k KeyItem) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "attributes", k.Attributes) + populate(objectMap, "kid", k.KID) + populate(objectMap, "managed", k.Managed) + populate(objectMap, "tags", k.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyItem. +func (k *KeyItem) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "attributes": + err = unpopulate(val, "Attributes", &k.Attributes) + delete(rawMsg, key) + case "kid": + err = unpopulate(val, "KID", &k.KID) + delete(rawMsg, key) + case "managed": + err = unpopulate(val, "Managed", &k.Managed) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &k.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyListResult. +func (k KeyListResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "nextLink", k.NextLink) + populate(objectMap, "value", k.Value) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyListResult. +func (k *KeyListResult) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "nextLink": + err = unpopulate(val, "NextLink", &k.NextLink) + delete(rawMsg, key) + case "value": + err = unpopulate(val, "Value", &k.Value) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyOperationResult. +func (k KeyOperationResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateByteArray(objectMap, "aad", k.AdditionalAuthenticatedData, runtime.Base64URLFormat) + populateByteArray(objectMap, "tag", k.AuthenticationTag, runtime.Base64URLFormat) + populateByteArray(objectMap, "iv", k.IV, runtime.Base64URLFormat) + populate(objectMap, "kid", k.KID) + populateByteArray(objectMap, "value", k.Result, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyOperationResult. +func (k *KeyOperationResult) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "aad": + err = runtime.DecodeByteArray(string(val), &k.AdditionalAuthenticatedData, runtime.Base64URLFormat) + delete(rawMsg, key) + case "tag": + err = runtime.DecodeByteArray(string(val), &k.AuthenticationTag, runtime.Base64URLFormat) + delete(rawMsg, key) + case "iv": + err = runtime.DecodeByteArray(string(val), &k.IV, runtime.Base64URLFormat) + delete(rawMsg, key) + case "kid": + err = unpopulate(val, "KID", &k.KID) + delete(rawMsg, key) + case "value": + err = runtime.DecodeByteArray(string(val), &k.Result, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyOperationsParameters. +func (k KeyOperationsParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateByteArray(objectMap, "aad", k.AAD, runtime.Base64URLFormat) + populate(objectMap, "alg", k.Algorithm) + populateByteArray(objectMap, "iv", k.IV, runtime.Base64URLFormat) + populateByteArray(objectMap, "tag", k.Tag, runtime.Base64URLFormat) + populateByteArray(objectMap, "value", k.Value, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyOperationsParameters. +func (k *KeyOperationsParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "aad": + err = runtime.DecodeByteArray(string(val), &k.AAD, runtime.Base64URLFormat) + delete(rawMsg, key) + case "alg": + err = unpopulate(val, "Algorithm", &k.Algorithm) + delete(rawMsg, key) + case "iv": + err = runtime.DecodeByteArray(string(val), &k.IV, runtime.Base64URLFormat) + delete(rawMsg, key) + case "tag": + err = runtime.DecodeByteArray(string(val), &k.Tag, runtime.Base64URLFormat) + delete(rawMsg, key) + case "value": + err = runtime.DecodeByteArray(string(val), &k.Value, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyReleasePolicy. +func (k KeyReleasePolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "contentType", k.ContentType) + populateByteArray(objectMap, "data", k.EncodedPolicy, runtime.Base64URLFormat) + populate(objectMap, "immutable", k.Immutable) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyReleasePolicy. +func (k *KeyReleasePolicy) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "contentType": + err = unpopulate(val, "ContentType", &k.ContentType) + delete(rawMsg, key) + case "data": + err = runtime.DecodeByteArray(string(val), &k.EncodedPolicy, runtime.Base64URLFormat) + delete(rawMsg, key) + case "immutable": + err = unpopulate(val, "Immutable", &k.Immutable) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyReleaseResult. +func (k KeyReleaseResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "value", k.Value) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyReleaseResult. +func (k *KeyReleaseResult) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "value": + err = unpopulate(val, "Value", &k.Value) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyRotationPolicy. +func (k KeyRotationPolicy) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "attributes", k.Attributes) + populate(objectMap, "id", k.ID) + populate(objectMap, "lifetimeActions", k.LifetimeActions) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyRotationPolicy. +func (k *KeyRotationPolicy) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "attributes": + err = unpopulate(val, "Attributes", &k.Attributes) + delete(rawMsg, key) + case "id": + err = unpopulate(val, "ID", &k.ID) + delete(rawMsg, key) + case "lifetimeActions": + err = unpopulate(val, "LifetimeActions", &k.LifetimeActions) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyRotationPolicyAttributes. +func (k KeyRotationPolicyAttributes) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateTimeUnix(objectMap, "created", k.Created) + populate(objectMap, "expiryTime", k.ExpiryTime) + populateTimeUnix(objectMap, "updated", k.Updated) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyRotationPolicyAttributes. +func (k *KeyRotationPolicyAttributes) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "created": + err = unpopulateTimeUnix(val, "Created", &k.Created) + delete(rawMsg, key) + case "expiryTime": + err = unpopulate(val, "ExpiryTime", &k.ExpiryTime) + delete(rawMsg, key) + case "updated": + err = unpopulateTimeUnix(val, "Updated", &k.Updated) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type KeyVerifyResult. +func (k KeyVerifyResult) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "value", k.Value) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyVerifyResult. +func (k *KeyVerifyResult) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "value": + err = unpopulate(val, "Value", &k.Value) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type LifetimeActions. +func (l LifetimeActions) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "action", l.Action) + populate(objectMap, "trigger", l.Trigger) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type LifetimeActions. +func (l *LifetimeActions) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", l, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "action": + err = unpopulate(val, "Action", &l.Action) + delete(rawMsg, key) + case "trigger": + err = unpopulate(val, "Trigger", &l.Trigger) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", l, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type LifetimeActionsTrigger. +func (l LifetimeActionsTrigger) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "timeAfterCreate", l.TimeAfterCreate) + populate(objectMap, "timeBeforeExpiry", l.TimeBeforeExpiry) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type LifetimeActionsTrigger. +func (l *LifetimeActionsTrigger) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", l, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "timeAfterCreate": + err = unpopulate(val, "TimeAfterCreate", &l.TimeAfterCreate) + delete(rawMsg, key) + case "timeBeforeExpiry": + err = unpopulate(val, "TimeBeforeExpiry", &l.TimeBeforeExpiry) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", l, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type LifetimeActionsType. +func (l LifetimeActionsType) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "type", l.Type) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type LifetimeActionsType. +func (l *LifetimeActionsType) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", l, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "type": + err = unpopulate(val, "Type", &l.Type) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", l, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type RandomBytes. +func (r RandomBytes) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateByteArray(objectMap, "value", r.Value, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type RandomBytes. +func (r *RandomBytes) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", r, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "value": + err = runtime.DecodeByteArray(string(val), &r.Value, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", r, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type ReleaseParameters. +func (r ReleaseParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "enc", r.Enc) + populate(objectMap, "nonce", r.Nonce) + populate(objectMap, "target", r.TargetAttestationToken) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type ReleaseParameters. +func (r *ReleaseParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", r, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "enc": + err = unpopulate(val, "Enc", &r.Enc) + delete(rawMsg, key) + case "nonce": + err = unpopulate(val, "Nonce", &r.Nonce) + delete(rawMsg, key) + case "target": + err = unpopulate(val, "TargetAttestationToken", &r.TargetAttestationToken) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", r, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type RestoreKeyParameters. +func (r RestoreKeyParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populateByteArray(objectMap, "value", r.KeyBundleBackup, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type RestoreKeyParameters. +func (r *RestoreKeyParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", r, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "value": + err = runtime.DecodeByteArray(string(val), &r.KeyBundleBackup, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", r, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type SignParameters. +func (s SignParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "alg", s.Algorithm) + populateByteArray(objectMap, "value", s.Value, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type SignParameters. +func (s *SignParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", s, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "alg": + err = unpopulate(val, "Algorithm", &s.Algorithm) + delete(rawMsg, key) + case "value": + err = runtime.DecodeByteArray(string(val), &s.Value, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", s, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type UpdateKeyParameters. +func (u UpdateKeyParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "attributes", u.KeyAttributes) + populate(objectMap, "key_ops", u.KeyOps) + populate(objectMap, "release_policy", u.ReleasePolicy) + populate(objectMap, "tags", u.Tags) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateKeyParameters. +func (u *UpdateKeyParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", u, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "attributes": + err = unpopulate(val, "KeyAttributes", &u.KeyAttributes) + delete(rawMsg, key) + case "key_ops": + err = unpopulate(val, "KeyOps", &u.KeyOps) + delete(rawMsg, key) + case "release_policy": + err = unpopulate(val, "ReleasePolicy", &u.ReleasePolicy) + delete(rawMsg, key) + case "tags": + err = unpopulate(val, "Tags", &u.Tags) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", u, err) + } + } + return nil +} + +// MarshalJSON implements the json.Marshaller interface for type VerifyParameters. +func (v VerifyParameters) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + populate(objectMap, "alg", v.Algorithm) + populateByteArray(objectMap, "digest", v.Digest, runtime.Base64URLFormat) + populateByteArray(objectMap, "value", v.Signature, runtime.Base64URLFormat) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type VerifyParameters. +func (v *VerifyParameters) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", v, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "alg": + err = unpopulate(val, "Algorithm", &v.Algorithm) + delete(rawMsg, key) + case "digest": + err = runtime.DecodeByteArray(string(val), &v.Digest, runtime.Base64URLFormat) + delete(rawMsg, key) + case "value": + err = runtime.DecodeByteArray(string(val), &v.Signature, runtime.Base64URLFormat) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", v, err) + } + } + return nil +} + +func populate(m map[string]interface{}, k string, v interface{}) { + if v == nil { + return + } else if azcore.IsNullValue(v) { + m[k] = nil + } else if !reflect.ValueOf(v).IsNil() { + m[k] = v + } +} + +func populateByteArray(m map[string]interface{}, k string, b []byte, f runtime.Base64Encoding) { + if azcore.IsNullValue(b) { + m[k] = nil + } else if len(b) == 0 { + return + } else { + m[k] = runtime.EncodeByteArray(b, f) + } +} + +func unpopulate(data json.RawMessage, fn string, v interface{}) error { + if data == nil { + return nil + } + if err := json.Unmarshal(data, v); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + return nil +} diff --git a/sdk/keyvault/azkeys/pollers.go b/sdk/keyvault/azkeys/pollers.go deleted file mode 100644 index 9dc9695b9656..000000000000 --- a/sdk/keyvault/azkeys/pollers.go +++ /dev/null @@ -1,87 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -package azkeys - -import ( - "context" - "encoding/json" - "net/http" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/internal/generated" -) - -type beginDeleteKeyPoller struct { - resp *http.Response - poll func(context.Context) (*http.Response, error) -} - -func (b *beginDeleteKeyPoller) Done() bool { - return b.resp != nil && b.resp.StatusCode == http.StatusOK -} - -func (b *beginDeleteKeyPoller) Poll(ctx context.Context) (*http.Response, error) { - resp, err := b.poll(ctx) - if err != nil { - return nil, err - } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNotFound) { - return nil, runtime.NewResponseError(resp) - } - b.resp = resp - return b.resp, nil -} - -func (b *beginDeleteKeyPoller) Result(ctx context.Context, out *DeleteKeyResponse) error { - var resp generated.KeyVaultClientGetDeletedKeyResponse - data, err := runtime.Payload(b.resp) - if err != nil { - return err - } - if err := json.Unmarshal(data, &resp); err != nil { - return err - } - *out = DeleteKeyResponse(getDeletedKeyResponseFromGenerated(resp)) - return nil -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -type beginRecoverDeletedKeyPoller struct { - resp *http.Response - poll func(context.Context) (*http.Response, error) -} - -func (b *beginRecoverDeletedKeyPoller) Done() bool { - return b.resp != nil && b.resp.StatusCode == http.StatusOK -} - -func (b *beginRecoverDeletedKeyPoller) Poll(ctx context.Context) (*http.Response, error) { - resp, err := b.poll(ctx) - if err != nil { - return nil, err - } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNotFound) { - return nil, runtime.NewResponseError(resp) - } - b.resp = resp - return b.resp, nil -} - -func (b *beginRecoverDeletedKeyPoller) Result(ctx context.Context, out *RecoverDeletedKeyResponse) error { - var resp generated.KeyVaultClientRecoverDeletedKeyResponse - data, err := runtime.Payload(b.resp) - if err != nil { - return err - } - if err := json.Unmarshal(data, &resp); err != nil { - return err - } - *out = RecoverDeletedKeyResponse(recoverDeletedKeyResponseFromGenerated(resp)) - return nil -} diff --git a/sdk/keyvault/azkeys/response_types.go b/sdk/keyvault/azkeys/response_types.go new file mode 100644 index 000000000000..5cd192e21bff --- /dev/null +++ b/sdk/keyvault/azkeys/response_types.go @@ -0,0 +1,130 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// DO NOT EDIT. + +package azkeys + +// BackupKeyResponse contains the response from method Client.BackupKey. +type BackupKeyResponse struct { + BackupKeyResult +} + +// CreateKeyResponse contains the response from method Client.CreateKey. +type CreateKeyResponse struct { + KeyBundle +} + +// DecryptResponse contains the response from method Client.Decrypt. +type DecryptResponse struct { + KeyOperationResult +} + +// DeleteKeyResponse contains the response from method Client.DeleteKey. +type DeleteKeyResponse struct { + DeletedKeyBundle +} + +// EncryptResponse contains the response from method Client.Encrypt. +type EncryptResponse struct { + KeyOperationResult +} + +// GetDeletedKeyResponse contains the response from method Client.GetDeletedKey. +type GetDeletedKeyResponse struct { + DeletedKeyBundle +} + +// GetKeyResponse contains the response from method Client.GetKey. +type GetKeyResponse struct { + KeyBundle +} + +// GetKeyRotationPolicyResponse contains the response from method Client.GetKeyRotationPolicy. +type GetKeyRotationPolicyResponse struct { + KeyRotationPolicy +} + +// GetRandomBytesResponse contains the response from method Client.GetRandomBytes. +type GetRandomBytesResponse struct { + RandomBytes +} + +// ImportKeyResponse contains the response from method Client.ImportKey. +type ImportKeyResponse struct { + KeyBundle +} + +// ListDeletedKeysResponse contains the response from method Client.ListDeletedKeys. +type ListDeletedKeysResponse struct { + DeletedKeyListResult +} + +// ListKeyVersionsResponse contains the response from method Client.ListKeyVersions. +type ListKeyVersionsResponse struct { + KeyListResult +} + +// ListKeysResponse contains the response from method Client.ListKeys. +type ListKeysResponse struct { + KeyListResult +} + +// PurgeDeletedKeyResponse contains the response from method Client.PurgeDeletedKey. +type PurgeDeletedKeyResponse struct { + // placeholder for future response values +} + +// RecoverDeletedKeyResponse contains the response from method Client.RecoverDeletedKey. +type RecoverDeletedKeyResponse struct { + KeyBundle +} + +// ReleaseResponse contains the response from method Client.Release. +type ReleaseResponse struct { + KeyReleaseResult +} + +// RestoreKeyResponse contains the response from method Client.RestoreKey. +type RestoreKeyResponse struct { + KeyBundle +} + +// RotateKeyResponse contains the response from method Client.RotateKey. +type RotateKeyResponse struct { + KeyBundle +} + +// SignResponse contains the response from method Client.Sign. +type SignResponse struct { + KeyOperationResult +} + +// UnwrapKeyResponse contains the response from method Client.UnwrapKey. +type UnwrapKeyResponse struct { + KeyOperationResult +} + +// UpdateKeyResponse contains the response from method Client.UpdateKey. +type UpdateKeyResponse struct { + KeyBundle +} + +// UpdateKeyRotationPolicyResponse contains the response from method Client.UpdateKeyRotationPolicy. +type UpdateKeyRotationPolicyResponse struct { + KeyRotationPolicy +} + +// VerifyResponse contains the response from method Client.Verify. +type VerifyResponse struct { + KeyVerifyResult +} + +// WrapKeyResponse contains the response from method Client.WrapKey. +type WrapKeyResponse struct { + KeyOperationResult +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestBackupKey/TestBackupKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestBackupKey/TestBackupKey_HSM.json deleted file mode 100644 index 03f2b78e279f..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestBackupKey/TestBackupKey_HSM.json +++ /dev/null @@ -1,760 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "beff6f29-b1a8-4755-a908-3a8cfacffdda" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "693", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=181;da_age=2838;rd_age=6032;brd_age=15867;ra_notif_age=531;da_notif_age=3363;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "611a761f-a8e3-4fd8-8433-43aaa062a98f" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/backup?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "9191", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=181;da_age=2838;rd_age=6033;brd_age=15867;ra_notif_age=532;da_notif_age=3364;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "2d2f117a-14ea-4715-97e9-8dfc2c478844" - }, - "ResponseBody": { - "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuVGFPM1QyblR2VUV6aG56OGtHQmRCOUl1WEk2elRBQVpsS2ZuNGV0UnRRUXhudzJzcl9uYVhCUVpHZmxsN1VYZUpQd3JJVnVjdGU5UDZzQXVTUDZEd3N4dzFySTVNMFBfczFJY3BFc2JhTlRmYjVocXpVbHh3TGpnXzZoWTB3RF9ncng3ekljRkhWcVJGLTlkSmx2Mks2TlZhMnBUTjc1QTZZb1NmOUhKNWhrazZEdkxYdmpQWlpxSXJRSEZ0YUZpRjRjNTRnSE1zYnB4WTBJck9UaDZ5TkV0RzE5UWk3Sjl0UVlFVFg3SUFEVWtEUlh2QzlSUEswYlhLQnpwRm80aHI3M3Jhc201ZmRGODRmbjctZkZPOTlDMzBJdmF2YTlsQU1HeTQzT0Y3TXd5MFJMSUdNeXZDUHBzaWw4dVJ0UXlCaU1PQ0Y5TVhmQU83SUhRVmNDbi1BLlJJcEIzMkxSUmFwTUlZMXdHZkk2LUEubktZTk83X3R6NlIyZVpfYjFGV0NZLVFseE5HN1BLWV80V0Q2WWptNXlOeUU4WldUY3ZSSkR0SWJaRm1CN2lsUnB2YmZScDRoLXdmd2J6V2FLc1I3X183Rm1OQkpMQVdfMHhjaHZTeFQ1WHRrS2ZtYkdYNHBPcWd3S2szb3I2QnlYaGg4OUtNYWJNWm9PaG9Rd01TdnRHaXZXb1B1QzI5bzNWRFlhSFNqRWd3SFpxNnZkQURSZGt2UUFLbVE0N0VDMGU3ZF8tMEt4eVVzTm1FTkkyUzNMNi1aUFpHbHBWWlk0Z1AtNEdvTW9GMGxRM1Q2MmltUVp1WGNIY2Jicl9ONk5ONzdIVU9qUVBLcDlrVF9HRFBrb1FyZ095T0lPa2lmazJGSXpmSFBKYVRjV2I3WHdIWFpnU282bkJLSlpFekdENXJxMlhlYkNiUUhiSzV2N1hxZW9yc040eFVmbTg0T3dhdWNicllCRktwWkZZX3Q5RDMzVU0tbi1hYl8zcEE1ZGVXOGtxeHNfTUZXa0p6emFHT0h0THY0Sk5BejY5by1LU2UxX2FGQ1lkeTQ2Tlo2NnJxRENMeXRsdlBJUjZQeE1FbG0zX1NSTTVpMDNtVUNsVWVVUnByb3ZCRTFsN2FvdXZCQWdkWk56b19jNU80OHc5WWJhMDVnVzg4dGFiYkFQUjRLdTlPMDBEQUdnZFdiZWpkNTl1Mnc3al9oTFQyQzlLemw5V1doZmUxNk5ZODhxVXEtcjVjR21tVEhPeDdlbFVxTHdaUUU2QnY2cFZ3OGlTQ2lEOFlWUTAyY0x3QXE0ekVWb3BFZFhlWi03MTlsU2Q0WUNwMkFkaGtJQVRUMlRhdUZfYVd3Tzd3bVBvUFliSzRRTmZPMkx2NmpJQXRjT245d01wMXJ3MXVZd05uOEt4UGhtUlJYUlRaZS01X1JqS2J1UWRzWDBGUUdBRU1sWGphN3l4ZU1hV2dnVGFYMjVYRzJxdHctVkxhZUktTlladnk2eFo5dVplZnAxc1U2N1BRMnJPTlV1b3VNemNwNTROTXhNOGMxWHFrbFQxcG1GWVp4TnNObGxqRVFTRkUzeWdPeU1RTC1KazdOMm9JQXBxOUxyWXVEay1pVTE3ZDJ1RnMzUnlURlVZckNOdUxDaGRhUXNDNFVreHc3N2tqNVpVc3pPZFdHQUUwVWdlZGc3dXIxMmFRaWJGNVJpUFM5M0E1T2NuRDdvZ0FlQ01KTElXWGRZQzlNWC1ZOVlYSTdFdFd4NzZJWU05SnFZRmMzaER2bmhFclpFTGZGWTZYYzZybG1WQVplbHhmVUZnbHc4LUo0N0xpaDdKRnNaX3g0a0djUWl3TzFzdGJKVWVSOGk5d013ZnRzMnJic01Bd3NNWDNYMlI1Q2RYZDJmWmN5V3ZiajNNYzl2MkwtQmUzNFViUVZtc3JIZ0ZMa1NmcG5iWnNGOEVwdTJwdlNLNnBDYWJ0UzV0Sm5oWFZSa3RxOWdaSXFJTWlUX05BeTlwREpnLW9ob25QMGNJR1BFU0FpenhyUkNYVXcxRW9LcHhHYk5lam9COGZ2U2c1WEJncno2d3IyMmNoTWJuT2t4UWhXOGd1Sm1faGw3Q1NLZUVVU05QbVpSajhSaGNoTHF6OHM1aEM5ZDUteVpZdlhpdHZfdXB1YXZHV1otcjNndUZtWmRZb2J2QmtQTEwtZ2ZYc0dBM2h1VDFPLXg4NG1tN3VrSzFkZGZlRVc0Sjlsb3BBcDJvbzdxR1pWT2tkVFBDSUpRd1NoeEZncjhvcXhZUnJvQS1iR2IteTVXZ01YSElhVVFLTld3eVlzUTA2aGJjUjFoeUxvZTRvTU1WUEFVTGRuUS1faWxScGZFMWttazJYNVExVVZTWHpWb1N3cm0zSERzMlNrSzVNekk5NFYwZU9IYnliUHhGNDVOU0VfdmhVMkpWeVF2THprVm5BS2xZSng5cTU2SnRIWTRtT1FRc2Y0c3NqdURXTEhnYmxOT1c1c2R4aUxQd3VIZXZSdVJzWEZKOXZNeFhNMHJKSVJnYkVBaE1YdDNfRjh6bXhYQVNJQ2xpODk2anp0emo5LUlZcjlaa1g4V05SQ0s3VS1QQW5CdVY0TlFmVHZGYV81N2FQQ0lTUWYycDBLc0RuaUQ3SGpiVnpCSlJBcy0xNXpheHNTcWFSVFo4d196ZVYwZTNBZE5EaUFQN0xhbHN1SG9jUEZVSXlMOXhBMGxKaDhxeWxhT1Y0LWNvclg2cFlCVURWVjhMNGEwVGZudHlsTHh6UTI0bWVoVHBrT1hTZlBHcURqTENOYzAyMk4zTHlLODRFNXBtQXhMYW9yQWRJSDJQVlFscGwxVThsai1weVc0Z3NsMDNzRm1xMjRlVkhoLWp5SlNHVkQ2eWZhMnBrM1NNWWdfekJPc2lMWkdGcW9DRXhta2lXdGxncjFjY2tOWDFTSlBFbnM2SWFSNFJqejFnSktyWnF3QUJ3NklrcjBaenhMWTl0emFsTEtuM25Wd1l1UktVa3lnVmJEWjZXck1yalc1S3haLXVvX0xtWHZ4dk8xN2pfZm1ER3duQWZ2TVkydGFzOURLTk1nSVVXX0g4QlZJcWhnS3ZfVzZvV2Fpd2pTZmgxelRxZ05oV1lEVHY0WTNYbVZheDhyVjdFMm5LcjRQU0phZTA0NFRSRXZEZEU0ZzhQbFlmRTFia1dibnpjUjF5MjdnV21XZ2l0NXRGWjRXcDFod2pOakVjMlJ5VnZUc0hDREY2ZWtkaWdnT1hYTGNPeU4xSy1VTzhQamFLQ3pMcmVpS2ZPLXk2V1czd0VZc3VnOWlwVm16MG9xeTZ2MU1xeDkxZnNSeU5EVGRmLXhUQlpxalpVQ2Z3NkZIcHI0bkNWQzRyN1MycEJBRDhsQnQ2UVFIT2l0Rk5DSThkNEt5QzdsMTRXUTV2amV5Q2htUEtHeTVsU1NraUZzazNkaWd6NGFXTjUxOVI2amdqZmZ1Zl9OZ1ZKenVsXzVGbi1KbkxGZWN5SFV1eW1rMUtQb3VTc1htbHJtTFlieXNvLXJLSk1PWV9EX2M2aDRpczRpMEM2cXZtdVZpVFBNeUtjd2RmNXhvSkg2Q3dwMkMwZTRWTXdEeDBOVjJwU2dDbjJ0QjdWSXFRNVNjdUFZUlRjOGJjZjh5SG5FNW1rMGRZeVByZnVZX2ZnTjR6VG1WdUdEczNESGhSUHVxUTlWbXBMRmhURklRSWtJeW5ySWNoaHdIVWtFSGVMT1gxcGRrUUF5b2NGR3JXYzJSUG5lNnNJdVdSNU1Fekw5eFl6a0d2ejRWQkNQTUhjZzBMdmNCb0JXYzd4RlVSaDlGUjVjOHFRUGp2LTZjbGdzcU05WDRFQ3Y2TEtJdmNyc2h6bFlibjRiSXJmb2NHS1JCREQ0Q21zbkxVcWFNcGVLVXNfUU1CbEJBSGZYbFFua2J2UEFYQnZLYkZOOEk2TC0yX0FKSUpPUHQ5UXE4dHNEZFJIekpkQ05ULWNUb19VQTJOb0pCVllQcEJHc3pDZVFURHk4MlYtTWFGenAyaUVEXzV5OVN0ZE0xTmJGaEE1b3VoMUd6bUZwX2hOX2pfMmZ0RElHMzg3MHBIMkxDQXZGT0ZoQVU1dnRhdmhNR3NWS0F1Si15UkFqYU5OazczNGNJQ1JzXzdmS2tUakZURk5sWDBjZHlQSUQyVy00V2ZJcUZFMy00b1NYMTdaVVpQc1FmTE9Na1ZRZ1h1QTdwQ2lXcVljWjItRDBKSndid1dzMmpKT19MS3liVjZrU2VwaFU0U0Y1WWVxaVVhSjJ0cVdXMzVXcl9OaUo4VmJaR3hoaXlXV2czVkxvUzNGR3B4MlpLU2hVQmYzNGJxR2llMEV5cnhLQUVEMXI0T1ZMdFBkWTVNa1k3VlE0SnlsTm9pakg5MFdKbFotS1g4S3pWVC1DaUxiUEhmVTZ0NG1ibVpzWXpwR000OXJONHM1R3A2MFZlQnVZWmtmeEVCNnZfWUhBd3ZhU3djTXEycGhLN1hSNU03UDNlNWQzWnc5eWVPNFNsYkdsalN1a1owMXByc0dua0J5NThvREdud0JPQ3p2RmJSMXp1d0R0WEpfVkVVaVJIajR3NWdadWNFUnNGWTFzLUpyQURRQThSanNIUmlBeHFzMXZTWEsta29Ia0Fpb2RKbHZvZi1fS3AyVG1nOTNlZ3kyRWJSUGE4UGhVTkxOZGd6SjNDeXdoVFdrSjBrSEpoOUxrN3p2VzI1QmZZZm5GbVFuQlhfNHMyMzBYNWVlZ2J4TF8zSkxSSXoyaXgwZUQya2lsd0JrSjV2dWtFRE1oVTFsck8xdzc1RTVYLTJtZjJzWThqZklzSkJocVhVaE5nRENrUUhEeUtOaUF1aldDaHEwMzdMS1V6cmk1WlZGSEJvQmpqSWRHS1MyZnZLd2h2SlcxVWdRb0lGZ1hvNWJ5a2UwWFNTd3luUmZZNC0zeUdvLXRqeWJsaG9BNVhXNkZrYnN0VUc0TERXOUlLcS00dng5NGhjalhkSGlDelFVcjBnX2pMUVV0ZUdYZ2c3QUtzT0F4a2Q4OGpDZjdKcUQ4ZUNiTHdWR2JsVFBkMFBnQXhvVWNIV0ZUOXB1Z2hySEJ4d2ljbHU2UUViNGxkcjdnX0tYZlNNbERtZ25TSnNnbmZyRjJoT2lVeWhSSzFMZVB6RS1QUHR6aTlrYmpjT0k1eFRPQ1JZWU1hNTlVc0tIcEdPbzNDZEpGM3N2bG5pbHdfY2NTYl9UZzlRNlhiWGQ4cERFOHdkRmZLS1ppNG5TUk03bzNIamJfY0l6ZTI0OXB0YUxlazljOUtkQ0M4MWVBYUR3eWg5cmRWX3R6ZHdtWGhfdHIwV245R1BfakE2VGpzbWx6WVN2UDl6SjNPN1dQNUlaQXROczRKTFhyQmlNdGc5dW1Vd1QydXdXUG1DSEtVV1c3NG00cTk4bldyUTFNd2s4SFNJWW05elVkd2thY1Brb0kxbjhWVXNFMHR6THdQUS1YSkk1WWQxVnhXN0hFb1JTbTg4cUd2bTYzbTBuQk44ZFN2RnpMcy1LT1lncGpnVV9OT3I2T1kxT1NPS1M5UEE5d2IydDFjMXY5RmdoQ2RNVDU4TEZ4T25BNk13SHk1SjJFVG9WYkJqX3k1Y2V0Z3ZhVDdlb0hXSHl1dlpocXp2T3R6bnp6dXpJWFJXT0cweHlsWEctbW1hNkNWaHpBMTJDY016SFc2bUg0MFI2UFkwMFp5VzZZNlllUzlBSFBxN3NobnRjOEhqRjJxbGJJWDRPSXZoZ3NLOGRVM1V1dVVPVWItSlBIbzRfMHl4VDkySHlKSGo1ZjB6ZkxkZGtQN2xELXZ2TVg3Ri1WUVpWMGRQNFBMLXZyS3E1ZFdOOWJYWFRpSmJZWDJoZ3pTMkl5R3dQVVE3cWN2LVBnVmdZZGhLWUVZV0Z0WjktdUx0amJWM1NYaHFHU05wYjk1ZVBoMlFUTVM1eUx5VHFyVTdLSkRMSHhiYUd0X3B6Z3dFZ0RQVkJtSjdjLWtJWVRWS0E2bF96cVU0VG5WWDBiTFJFMnV2Ym5jaXlSeGRUU2xSQzlzQkxsLXlWRC1FTnN2U1Z5XzFfMElPelVjalR1d2NPSGJJTGhWSGdERWV3VklZS2ZzeEpQeS14OHVxVkQ4UlZvNC03eDRlSGxxZWVMb1BEOEJWSGUzZkRUWExGdjE4clpLT2pWLXZOUGswTkRJUXN6VjYyZ3VDalViOUNnTlIyRVFhRzlLOUVyQmw0emFZMjlIbUhPcFdvaTZNYlVrdC0wcmVjTTYwX2tLNVdPVGRwMDRoNDNvV1l3alo5X19aQzYtUUMya3M1N29UY1FSZDhBRDE5VE04RktJZXJjdXExaEtyMmdDdGJGS0g2V0Rnb2NvYWppNzhYemlabnlSYnVuS2JjXzZjejBnZ0xHQWJFTE5qZDc3cWpMaGR1YzBNYVNMR0ViOEgtQjdockpjc3AwYTYxR3p3UVctWGMwZEtGMXlxNC1xMUdGYzhUM2w1ZWFubDJ0VkZWWTVGWkJUM3FJRXg1N0swODZQVWtDUHJ0dmhseUFMQXNvNnhKaVZTVVpOVzFraFRHc2VwbHNrV3l4akoyVW93Y0l4eWRVVWpoNkttbjUtaEJrem1ma3FicGp4RG1OMmhGVGpfSFNhWENjVm5DaE41bHpYQWhscWh5aWd5ZWV2YlUtTHItV05jVFpaaTlwbW05RVF2VjQ2cEQ3NktLLU9oTkpDR0RpanIwdGZydFZma3ZsV19kdHBVZWdFU01xV1RZQzZ0TFVZREQtWUxTM2I2cWVrYkU1UnI0ZU5aNmVtVTIzTURDNmRxdHNYdEhfcm5QVzVuX1RGYVNnLVhWaEhjVUE4T0RCdkxqejltQW5OdG1LeTUyMGZNcTdEdGZyRVBIWU4xTVBYakhlazJlTGxsempYWmF4ekpzRjVrbTNRREJkVnZMNlFTTWUtc1FpSzliYXNLMjR0U19udWpBbVZ6SmN2b0VmTUF5MF9ZTFpVWVoyVU5yNE9QYXVhdEk0NE04TWg2bDRvRDJZdFhVU1pQZExSSVZOaFo3UFNrUU5oSk5KQzhHTU94RHBTdkZtb2ZvWWNUMmNpelJNbTRZOGxNQ3ZvdW1rUHlpci1MWU9hNnhlT2NxMDdWTVpZMWV5REV6VWx0RlZJdTd4UWpnVFR4c2cwRTU2bVMzUzZwQ1RlQmZaVE1hQjFTa0JFOUZmUXhUSk1XbkxOQTktVWhVenJwaHp1QTZaNDkwSURscjczeDhkdndBQm12NHliYk8yUjRZeENkcm9Xc3RHalJWR0Q5NmgyMkpGbDlCWjdSY1Q5RlRQMmhncW14VDRJaVZIRVBHNW1rc21vMWh6LU1fc0RFSGtLZVAzTzFOdDl3LWlvNnVZTldULUotVUY0WjJqYUJRajVvbHR1Q0NkOW92RGVTV3RMSEZxMDAzU0RHWTY3TFluWEZzQmJvME9hb0RmQzRyTzFFLUcyZEF0NjJRX3BwSllYNTcwSDRxLWJOdFBSVXQxY3dzZXM5d0pPV2R3am9TbTNlaU84MkY1R1FFZUlTSG1NSWVPSFVVdnFyMWV2RXY1Q000SHUySVV4TmdKbkZqMG16aUFCczRjakJGMXNUNHJqOFJfMjBnZ2kzckZvcjRMQ0JhSzRnLUVIZ09sRDZNZG5mZzF1aHlad0ZHWkJQOTBQdmhlSlY1ZW1RTEsxWm5FSUp0LXpMUG9wNjl2VFhnMXdZLWNLcnNfTUV6UHphbkRZQmtRYy14MUtxeHRIeTZ0SmVydXNEX1V6TjdiV0tvQ05sbVdSZVktZVdya3c2cmlKbWMxOWU2d0FocXVHeXNrdHlPRnVwZkw4RXBNR3VyQ1RYUzZXcmxvaDFiWjVtUGJ6RmY1RjNSbkt6R0labU0yX0tiZGQyODRhalE1eGxEaTgtQzVFUjd5YUhaSURkUnZ0ZHE0aW9SQno1LTV1bjM4UEdTUXpJWmx2Yk9yUUdob0E4aXAwVERpdkFndGhZMGdZUmtsR1lxSFY3TjZnY0ItWGEwaDJvZTYteHVybHNYT0RrOTBtRmdPV3o2b0xCOUE1WmNkTGk2U083X19xMFZsMVRuMGh3QU9lZFpmZDhBUjRlYVQtay1TMWx3eGhxLUszbXpLbWJjcHEzVEJicVN5T0tfSnZseXh5b1N3UkVxQklWUGp0SmU5MlN0ajJzNUhoMWxSb3VyYkthR1pEdk1admtCZERaVkQzR2hydXVTN2IxMHctZ0dqZ3BGSXFoS09ZWUNzcGhKVUlRejRGaHRiUEFMWm5lcFFoSUJyTm41cy14S2lSY1NhTUpjcmdGa0NUczlfU3E0VmtwSkpSaWkwdVBONzQxTVUwaHJ2QjY5NE9xbnpCQkFLZk5TLVljOFlXQzIxRGFFeDBtUnY0SjVUMGt6WnBEUVBDSlRyRkU2RXVZM2hqN2pVbFlZQWlxa0oxWEtsRzYzMGVKbWpiMW5QNnNIYVNIV0ZjSC1xVmhtVnhmdWlzYUtfZTFNdzBNQTduVGFPQWpob0ppcF8yc3JvUFJET3d6TFRLNGlzekc0WlE4anRrMXhvcmJMWW9IUDVnSkJubWlrOWw1VVJVOEZBbVJTZkJuSkI4UnIxVmxhZnY2ZHN2bDBGRWx1ZEUwb3B1VFlXNkpXZ3VCYUxZVXFXeDNPRk5mMFRDRW9zcE13T2ZLTzIwaHZBeWJUZHd4YmN3Q3BlYjh4LUNMME1qay1IZTZUWnd4TGJXVTZ0SjlkTFBSVW1tb3E2QkU4Sl9Pd1JjZi1sYnZXdnVvS3EyZ29nUHhQRGlpSGpCT3lydWtNcVJHRkpxZWpHV0RJc2RBal9CWmRpT29sZzBDdzRTQUtkeGtRbklTelVYYlBiNUlfX000bm1QUlRENWFZLmFTMTNCZzlvd1N4UGZwbEVueDZqWkJGMFZ1bjVwRmtqSENHSmRtR0ZGajA" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=181;da_age=2838;rd_age=6033;brd_age=15867;ra_notif_age=532;da_notif_age=3364;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "755aa53d-9c2c-49fc-88fe-aa96f13fb3da" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295", - "deletedDate": 1652820487, - "scheduledPurgeDate": 1653425287, - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "87", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=182;da_age=2839;rd_age=6033;brd_age=15867;ra_notif_age=532;da_notif_age=3364;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "f45c96f2-254a-421a-8420-26c82d0bafbc" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: backup-key603254295" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=183;da_age=2840;rd_age=6034;brd_age=15868;ra_notif_age=533;da_notif_age=3365;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0f494da9-145e-43f2-9ef6-5b355fa8d7cc" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295", - "deletedDate": 1652820487, - "scheduledPurgeDate": 1653425287, - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:48:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=183;da_age=2840;rd_age=6034;brd_age=15869;ra_notif_age=533;da_notif_age=3365;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9a3d144d-821b-4624-bc53-ee67414259f5" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/restore?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "9191", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuVGFPM1QyblR2VUV6aG56OGtHQmRCOUl1WEk2elRBQVpsS2ZuNGV0UnRRUXhudzJzcl9uYVhCUVpHZmxsN1VYZUpQd3JJVnVjdGU5UDZzQXVTUDZEd3N4dzFySTVNMFBfczFJY3BFc2JhTlRmYjVocXpVbHh3TGpnXzZoWTB3RF9ncng3ekljRkhWcVJGLTlkSmx2Mks2TlZhMnBUTjc1QTZZb1NmOUhKNWhrazZEdkxYdmpQWlpxSXJRSEZ0YUZpRjRjNTRnSE1zYnB4WTBJck9UaDZ5TkV0RzE5UWk3Sjl0UVlFVFg3SUFEVWtEUlh2QzlSUEswYlhLQnpwRm80aHI3M3Jhc201ZmRGODRmbjctZkZPOTlDMzBJdmF2YTlsQU1HeTQzT0Y3TXd5MFJMSUdNeXZDUHBzaWw4dVJ0UXlCaU1PQ0Y5TVhmQU83SUhRVmNDbi1BLlJJcEIzMkxSUmFwTUlZMXdHZkk2LUEubktZTk83X3R6NlIyZVpfYjFGV0NZLVFseE5HN1BLWV80V0Q2WWptNXlOeUU4WldUY3ZSSkR0SWJaRm1CN2lsUnB2YmZScDRoLXdmd2J6V2FLc1I3X183Rm1OQkpMQVdfMHhjaHZTeFQ1WHRrS2ZtYkdYNHBPcWd3S2szb3I2QnlYaGg4OUtNYWJNWm9PaG9Rd01TdnRHaXZXb1B1QzI5bzNWRFlhSFNqRWd3SFpxNnZkQURSZGt2UUFLbVE0N0VDMGU3ZF8tMEt4eVVzTm1FTkkyUzNMNi1aUFpHbHBWWlk0Z1AtNEdvTW9GMGxRM1Q2MmltUVp1WGNIY2Jicl9ONk5ONzdIVU9qUVBLcDlrVF9HRFBrb1FyZ095T0lPa2lmazJGSXpmSFBKYVRjV2I3WHdIWFpnU282bkJLSlpFekdENXJxMlhlYkNiUUhiSzV2N1hxZW9yc040eFVmbTg0T3dhdWNicllCRktwWkZZX3Q5RDMzVU0tbi1hYl8zcEE1ZGVXOGtxeHNfTUZXa0p6emFHT0h0THY0Sk5BejY5by1LU2UxX2FGQ1lkeTQ2Tlo2NnJxRENMeXRsdlBJUjZQeE1FbG0zX1NSTTVpMDNtVUNsVWVVUnByb3ZCRTFsN2FvdXZCQWdkWk56b19jNU80OHc5WWJhMDVnVzg4dGFiYkFQUjRLdTlPMDBEQUdnZFdiZWpkNTl1Mnc3al9oTFQyQzlLemw5V1doZmUxNk5ZODhxVXEtcjVjR21tVEhPeDdlbFVxTHdaUUU2QnY2cFZ3OGlTQ2lEOFlWUTAyY0x3QXE0ekVWb3BFZFhlWi03MTlsU2Q0WUNwMkFkaGtJQVRUMlRhdUZfYVd3Tzd3bVBvUFliSzRRTmZPMkx2NmpJQXRjT245d01wMXJ3MXVZd05uOEt4UGhtUlJYUlRaZS01X1JqS2J1UWRzWDBGUUdBRU1sWGphN3l4ZU1hV2dnVGFYMjVYRzJxdHctVkxhZUktTlladnk2eFo5dVplZnAxc1U2N1BRMnJPTlV1b3VNemNwNTROTXhNOGMxWHFrbFQxcG1GWVp4TnNObGxqRVFTRkUzeWdPeU1RTC1KazdOMm9JQXBxOUxyWXVEay1pVTE3ZDJ1RnMzUnlURlVZckNOdUxDaGRhUXNDNFVreHc3N2tqNVpVc3pPZFdHQUUwVWdlZGc3dXIxMmFRaWJGNVJpUFM5M0E1T2NuRDdvZ0FlQ01KTElXWGRZQzlNWC1ZOVlYSTdFdFd4NzZJWU05SnFZRmMzaER2bmhFclpFTGZGWTZYYzZybG1WQVplbHhmVUZnbHc4LUo0N0xpaDdKRnNaX3g0a0djUWl3TzFzdGJKVWVSOGk5d013ZnRzMnJic01Bd3NNWDNYMlI1Q2RYZDJmWmN5V3ZiajNNYzl2MkwtQmUzNFViUVZtc3JIZ0ZMa1NmcG5iWnNGOEVwdTJwdlNLNnBDYWJ0UzV0Sm5oWFZSa3RxOWdaSXFJTWlUX05BeTlwREpnLW9ob25QMGNJR1BFU0FpenhyUkNYVXcxRW9LcHhHYk5lam9COGZ2U2c1WEJncno2d3IyMmNoTWJuT2t4UWhXOGd1Sm1faGw3Q1NLZUVVU05QbVpSajhSaGNoTHF6OHM1aEM5ZDUteVpZdlhpdHZfdXB1YXZHV1otcjNndUZtWmRZb2J2QmtQTEwtZ2ZYc0dBM2h1VDFPLXg4NG1tN3VrSzFkZGZlRVc0Sjlsb3BBcDJvbzdxR1pWT2tkVFBDSUpRd1NoeEZncjhvcXhZUnJvQS1iR2IteTVXZ01YSElhVVFLTld3eVlzUTA2aGJjUjFoeUxvZTRvTU1WUEFVTGRuUS1faWxScGZFMWttazJYNVExVVZTWHpWb1N3cm0zSERzMlNrSzVNekk5NFYwZU9IYnliUHhGNDVOU0VfdmhVMkpWeVF2THprVm5BS2xZSng5cTU2SnRIWTRtT1FRc2Y0c3NqdURXTEhnYmxOT1c1c2R4aUxQd3VIZXZSdVJzWEZKOXZNeFhNMHJKSVJnYkVBaE1YdDNfRjh6bXhYQVNJQ2xpODk2anp0emo5LUlZcjlaa1g4V05SQ0s3VS1QQW5CdVY0TlFmVHZGYV81N2FQQ0lTUWYycDBLc0RuaUQ3SGpiVnpCSlJBcy0xNXpheHNTcWFSVFo4d196ZVYwZTNBZE5EaUFQN0xhbHN1SG9jUEZVSXlMOXhBMGxKaDhxeWxhT1Y0LWNvclg2cFlCVURWVjhMNGEwVGZudHlsTHh6UTI0bWVoVHBrT1hTZlBHcURqTENOYzAyMk4zTHlLODRFNXBtQXhMYW9yQWRJSDJQVlFscGwxVThsai1weVc0Z3NsMDNzRm1xMjRlVkhoLWp5SlNHVkQ2eWZhMnBrM1NNWWdfekJPc2lMWkdGcW9DRXhta2lXdGxncjFjY2tOWDFTSlBFbnM2SWFSNFJqejFnSktyWnF3QUJ3NklrcjBaenhMWTl0emFsTEtuM25Wd1l1UktVa3lnVmJEWjZXck1yalc1S3haLXVvX0xtWHZ4dk8xN2pfZm1ER3duQWZ2TVkydGFzOURLTk1nSVVXX0g4QlZJcWhnS3ZfVzZvV2Fpd2pTZmgxelRxZ05oV1lEVHY0WTNYbVZheDhyVjdFMm5LcjRQU0phZTA0NFRSRXZEZEU0ZzhQbFlmRTFia1dibnpjUjF5MjdnV21XZ2l0NXRGWjRXcDFod2pOakVjMlJ5VnZUc0hDREY2ZWtkaWdnT1hYTGNPeU4xSy1VTzhQamFLQ3pMcmVpS2ZPLXk2V1czd0VZc3VnOWlwVm16MG9xeTZ2MU1xeDkxZnNSeU5EVGRmLXhUQlpxalpVQ2Z3NkZIcHI0bkNWQzRyN1MycEJBRDhsQnQ2UVFIT2l0Rk5DSThkNEt5QzdsMTRXUTV2amV5Q2htUEtHeTVsU1NraUZzazNkaWd6NGFXTjUxOVI2amdqZmZ1Zl9OZ1ZKenVsXzVGbi1KbkxGZWN5SFV1eW1rMUtQb3VTc1htbHJtTFlieXNvLXJLSk1PWV9EX2M2aDRpczRpMEM2cXZtdVZpVFBNeUtjd2RmNXhvSkg2Q3dwMkMwZTRWTXdEeDBOVjJwU2dDbjJ0QjdWSXFRNVNjdUFZUlRjOGJjZjh5SG5FNW1rMGRZeVByZnVZX2ZnTjR6VG1WdUdEczNESGhSUHVxUTlWbXBMRmhURklRSWtJeW5ySWNoaHdIVWtFSGVMT1gxcGRrUUF5b2NGR3JXYzJSUG5lNnNJdVdSNU1Fekw5eFl6a0d2ejRWQkNQTUhjZzBMdmNCb0JXYzd4RlVSaDlGUjVjOHFRUGp2LTZjbGdzcU05WDRFQ3Y2TEtJdmNyc2h6bFlibjRiSXJmb2NHS1JCREQ0Q21zbkxVcWFNcGVLVXNfUU1CbEJBSGZYbFFua2J2UEFYQnZLYkZOOEk2TC0yX0FKSUpPUHQ5UXE4dHNEZFJIekpkQ05ULWNUb19VQTJOb0pCVllQcEJHc3pDZVFURHk4MlYtTWFGenAyaUVEXzV5OVN0ZE0xTmJGaEE1b3VoMUd6bUZwX2hOX2pfMmZ0RElHMzg3MHBIMkxDQXZGT0ZoQVU1dnRhdmhNR3NWS0F1Si15UkFqYU5OazczNGNJQ1JzXzdmS2tUakZURk5sWDBjZHlQSUQyVy00V2ZJcUZFMy00b1NYMTdaVVpQc1FmTE9Na1ZRZ1h1QTdwQ2lXcVljWjItRDBKSndid1dzMmpKT19MS3liVjZrU2VwaFU0U0Y1WWVxaVVhSjJ0cVdXMzVXcl9OaUo4VmJaR3hoaXlXV2czVkxvUzNGR3B4MlpLU2hVQmYzNGJxR2llMEV5cnhLQUVEMXI0T1ZMdFBkWTVNa1k3VlE0SnlsTm9pakg5MFdKbFotS1g4S3pWVC1DaUxiUEhmVTZ0NG1ibVpzWXpwR000OXJONHM1R3A2MFZlQnVZWmtmeEVCNnZfWUhBd3ZhU3djTXEycGhLN1hSNU03UDNlNWQzWnc5eWVPNFNsYkdsalN1a1owMXByc0dua0J5NThvREdud0JPQ3p2RmJSMXp1d0R0WEpfVkVVaVJIajR3NWdadWNFUnNGWTFzLUpyQURRQThSanNIUmlBeHFzMXZTWEsta29Ia0Fpb2RKbHZvZi1fS3AyVG1nOTNlZ3kyRWJSUGE4UGhVTkxOZGd6SjNDeXdoVFdrSjBrSEpoOUxrN3p2VzI1QmZZZm5GbVFuQlhfNHMyMzBYNWVlZ2J4TF8zSkxSSXoyaXgwZUQya2lsd0JrSjV2dWtFRE1oVTFsck8xdzc1RTVYLTJtZjJzWThqZklzSkJocVhVaE5nRENrUUhEeUtOaUF1aldDaHEwMzdMS1V6cmk1WlZGSEJvQmpqSWRHS1MyZnZLd2h2SlcxVWdRb0lGZ1hvNWJ5a2UwWFNTd3luUmZZNC0zeUdvLXRqeWJsaG9BNVhXNkZrYnN0VUc0TERXOUlLcS00dng5NGhjalhkSGlDelFVcjBnX2pMUVV0ZUdYZ2c3QUtzT0F4a2Q4OGpDZjdKcUQ4ZUNiTHdWR2JsVFBkMFBnQXhvVWNIV0ZUOXB1Z2hySEJ4d2ljbHU2UUViNGxkcjdnX0tYZlNNbERtZ25TSnNnbmZyRjJoT2lVeWhSSzFMZVB6RS1QUHR6aTlrYmpjT0k1eFRPQ1JZWU1hNTlVc0tIcEdPbzNDZEpGM3N2bG5pbHdfY2NTYl9UZzlRNlhiWGQ4cERFOHdkRmZLS1ppNG5TUk03bzNIamJfY0l6ZTI0OXB0YUxlazljOUtkQ0M4MWVBYUR3eWg5cmRWX3R6ZHdtWGhfdHIwV245R1BfakE2VGpzbWx6WVN2UDl6SjNPN1dQNUlaQXROczRKTFhyQmlNdGc5dW1Vd1QydXdXUG1DSEtVV1c3NG00cTk4bldyUTFNd2s4SFNJWW05elVkd2thY1Brb0kxbjhWVXNFMHR6THdQUS1YSkk1WWQxVnhXN0hFb1JTbTg4cUd2bTYzbTBuQk44ZFN2RnpMcy1LT1lncGpnVV9OT3I2T1kxT1NPS1M5UEE5d2IydDFjMXY5RmdoQ2RNVDU4TEZ4T25BNk13SHk1SjJFVG9WYkJqX3k1Y2V0Z3ZhVDdlb0hXSHl1dlpocXp2T3R6bnp6dXpJWFJXT0cweHlsWEctbW1hNkNWaHpBMTJDY016SFc2bUg0MFI2UFkwMFp5VzZZNlllUzlBSFBxN3NobnRjOEhqRjJxbGJJWDRPSXZoZ3NLOGRVM1V1dVVPVWItSlBIbzRfMHl4VDkySHlKSGo1ZjB6ZkxkZGtQN2xELXZ2TVg3Ri1WUVpWMGRQNFBMLXZyS3E1ZFdOOWJYWFRpSmJZWDJoZ3pTMkl5R3dQVVE3cWN2LVBnVmdZZGhLWUVZV0Z0WjktdUx0amJWM1NYaHFHU05wYjk1ZVBoMlFUTVM1eUx5VHFyVTdLSkRMSHhiYUd0X3B6Z3dFZ0RQVkJtSjdjLWtJWVRWS0E2bF96cVU0VG5WWDBiTFJFMnV2Ym5jaXlSeGRUU2xSQzlzQkxsLXlWRC1FTnN2U1Z5XzFfMElPelVjalR1d2NPSGJJTGhWSGdERWV3VklZS2ZzeEpQeS14OHVxVkQ4UlZvNC03eDRlSGxxZWVMb1BEOEJWSGUzZkRUWExGdjE4clpLT2pWLXZOUGswTkRJUXN6VjYyZ3VDalViOUNnTlIyRVFhRzlLOUVyQmw0emFZMjlIbUhPcFdvaTZNYlVrdC0wcmVjTTYwX2tLNVdPVGRwMDRoNDNvV1l3alo5X19aQzYtUUMya3M1N29UY1FSZDhBRDE5VE04RktJZXJjdXExaEtyMmdDdGJGS0g2V0Rnb2NvYWppNzhYemlabnlSYnVuS2JjXzZjejBnZ0xHQWJFTE5qZDc3cWpMaGR1YzBNYVNMR0ViOEgtQjdockpjc3AwYTYxR3p3UVctWGMwZEtGMXlxNC1xMUdGYzhUM2w1ZWFubDJ0VkZWWTVGWkJUM3FJRXg1N0swODZQVWtDUHJ0dmhseUFMQXNvNnhKaVZTVVpOVzFraFRHc2VwbHNrV3l4akoyVW93Y0l4eWRVVWpoNkttbjUtaEJrem1ma3FicGp4RG1OMmhGVGpfSFNhWENjVm5DaE41bHpYQWhscWh5aWd5ZWV2YlUtTHItV05jVFpaaTlwbW05RVF2VjQ2cEQ3NktLLU9oTkpDR0RpanIwdGZydFZma3ZsV19kdHBVZWdFU01xV1RZQzZ0TFVZREQtWUxTM2I2cWVrYkU1UnI0ZU5aNmVtVTIzTURDNmRxdHNYdEhfcm5QVzVuX1RGYVNnLVhWaEhjVUE4T0RCdkxqejltQW5OdG1LeTUyMGZNcTdEdGZyRVBIWU4xTVBYakhlazJlTGxsempYWmF4ekpzRjVrbTNRREJkVnZMNlFTTWUtc1FpSzliYXNLMjR0U19udWpBbVZ6SmN2b0VmTUF5MF9ZTFpVWVoyVU5yNE9QYXVhdEk0NE04TWg2bDRvRDJZdFhVU1pQZExSSVZOaFo3UFNrUU5oSk5KQzhHTU94RHBTdkZtb2ZvWWNUMmNpelJNbTRZOGxNQ3ZvdW1rUHlpci1MWU9hNnhlT2NxMDdWTVpZMWV5REV6VWx0RlZJdTd4UWpnVFR4c2cwRTU2bVMzUzZwQ1RlQmZaVE1hQjFTa0JFOUZmUXhUSk1XbkxOQTktVWhVenJwaHp1QTZaNDkwSURscjczeDhkdndBQm12NHliYk8yUjRZeENkcm9Xc3RHalJWR0Q5NmgyMkpGbDlCWjdSY1Q5RlRQMmhncW14VDRJaVZIRVBHNW1rc21vMWh6LU1fc0RFSGtLZVAzTzFOdDl3LWlvNnVZTldULUotVUY0WjJqYUJRajVvbHR1Q0NkOW92RGVTV3RMSEZxMDAzU0RHWTY3TFluWEZzQmJvME9hb0RmQzRyTzFFLUcyZEF0NjJRX3BwSllYNTcwSDRxLWJOdFBSVXQxY3dzZXM5d0pPV2R3am9TbTNlaU84MkY1R1FFZUlTSG1NSWVPSFVVdnFyMWV2RXY1Q000SHUySVV4TmdKbkZqMG16aUFCczRjakJGMXNUNHJqOFJfMjBnZ2kzckZvcjRMQ0JhSzRnLUVIZ09sRDZNZG5mZzF1aHlad0ZHWkJQOTBQdmhlSlY1ZW1RTEsxWm5FSUp0LXpMUG9wNjl2VFhnMXdZLWNLcnNfTUV6UHphbkRZQmtRYy14MUtxeHRIeTZ0SmVydXNEX1V6TjdiV0tvQ05sbVdSZVktZVdya3c2cmlKbWMxOWU2d0FocXVHeXNrdHlPRnVwZkw4RXBNR3VyQ1RYUzZXcmxvaDFiWjVtUGJ6RmY1RjNSbkt6R0labU0yX0tiZGQyODRhalE1eGxEaTgtQzVFUjd5YUhaSURkUnZ0ZHE0aW9SQno1LTV1bjM4UEdTUXpJWmx2Yk9yUUdob0E4aXAwVERpdkFndGhZMGdZUmtsR1lxSFY3TjZnY0ItWGEwaDJvZTYteHVybHNYT0RrOTBtRmdPV3o2b0xCOUE1WmNkTGk2U083X19xMFZsMVRuMGh3QU9lZFpmZDhBUjRlYVQtay1TMWx3eGhxLUszbXpLbWJjcHEzVEJicVN5T0tfSnZseXh5b1N3UkVxQklWUGp0SmU5MlN0ajJzNUhoMWxSb3VyYkthR1pEdk1admtCZERaVkQzR2hydXVTN2IxMHctZ0dqZ3BGSXFoS09ZWUNzcGhKVUlRejRGaHRiUEFMWm5lcFFoSUJyTm41cy14S2lSY1NhTUpjcmdGa0NUczlfU3E0VmtwSkpSaWkwdVBONzQxTVUwaHJ2QjY5NE9xbnpCQkFLZk5TLVljOFlXQzIxRGFFeDBtUnY0SjVUMGt6WnBEUVBDSlRyRkU2RXVZM2hqN2pVbFlZQWlxa0oxWEtsRzYzMGVKbWpiMW5QNnNIYVNIV0ZjSC1xVmhtVnhmdWlzYUtfZTFNdzBNQTduVGFPQWpob0ppcF8yc3JvUFJET3d6TFRLNGlzekc0WlE4anRrMXhvcmJMWW9IUDVnSkJubWlrOWw1VVJVOEZBbVJTZkJuSkI4UnIxVmxhZnY2ZHN2bDBGRWx1ZEUwb3B1VFlXNkpXZ3VCYUxZVXFXeDNPRk5mMFRDRW9zcE13T2ZLTzIwaHZBeWJUZHd4YmN3Q3BlYjh4LUNMME1qay1IZTZUWnd4TGJXVTZ0SjlkTFBSVW1tb3E2QkU4Sl9Pd1JjZi1sYnZXdnVvS3EyZ29nUHhQRGlpSGpCT3lydWtNcVJHRkpxZWpHV0RJc2RBal9CWmRpT29sZzBDdzRTQUtkeGtRbklTelVYYlBiNUlfX000bm1QUlRENWFZLmFTMTNCZzlvd1N4UGZwbEVueDZqWkJGMFZ1bjVwRmtqSENHSmRtR0ZGajA" - }, - "StatusCode": 409, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "611", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=183;da_age=2840;rd_age=6034;brd_age=15869;ra_notif_age=533;da_notif_age=3365;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4193ba81-03b0-4072-bd93-60a7163e4f24" - }, - "ResponseBody": { - "error": { - "code": "Conflict", - "message": "There was a conflict restoring the key \u0027https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85\u0027. This can happen if either: a second key with the same name was created after the first key was deleted; thus trying to restore a key whose name is already in use. To fix this, rename the second key to something else so that the restore works. The second probable cause of this exception is when multiple operations are performed in parallel against the key. To avoid this error, perform operations against a key in a sequential manner." - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/restore?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "9191", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuVGFPM1QyblR2VUV6aG56OGtHQmRCOUl1WEk2elRBQVpsS2ZuNGV0UnRRUXhudzJzcl9uYVhCUVpHZmxsN1VYZUpQd3JJVnVjdGU5UDZzQXVTUDZEd3N4dzFySTVNMFBfczFJY3BFc2JhTlRmYjVocXpVbHh3TGpnXzZoWTB3RF9ncng3ekljRkhWcVJGLTlkSmx2Mks2TlZhMnBUTjc1QTZZb1NmOUhKNWhrazZEdkxYdmpQWlpxSXJRSEZ0YUZpRjRjNTRnSE1zYnB4WTBJck9UaDZ5TkV0RzE5UWk3Sjl0UVlFVFg3SUFEVWtEUlh2QzlSUEswYlhLQnpwRm80aHI3M3Jhc201ZmRGODRmbjctZkZPOTlDMzBJdmF2YTlsQU1HeTQzT0Y3TXd5MFJMSUdNeXZDUHBzaWw4dVJ0UXlCaU1PQ0Y5TVhmQU83SUhRVmNDbi1BLlJJcEIzMkxSUmFwTUlZMXdHZkk2LUEubktZTk83X3R6NlIyZVpfYjFGV0NZLVFseE5HN1BLWV80V0Q2WWptNXlOeUU4WldUY3ZSSkR0SWJaRm1CN2lsUnB2YmZScDRoLXdmd2J6V2FLc1I3X183Rm1OQkpMQVdfMHhjaHZTeFQ1WHRrS2ZtYkdYNHBPcWd3S2szb3I2QnlYaGg4OUtNYWJNWm9PaG9Rd01TdnRHaXZXb1B1QzI5bzNWRFlhSFNqRWd3SFpxNnZkQURSZGt2UUFLbVE0N0VDMGU3ZF8tMEt4eVVzTm1FTkkyUzNMNi1aUFpHbHBWWlk0Z1AtNEdvTW9GMGxRM1Q2MmltUVp1WGNIY2Jicl9ONk5ONzdIVU9qUVBLcDlrVF9HRFBrb1FyZ095T0lPa2lmazJGSXpmSFBKYVRjV2I3WHdIWFpnU282bkJLSlpFekdENXJxMlhlYkNiUUhiSzV2N1hxZW9yc040eFVmbTg0T3dhdWNicllCRktwWkZZX3Q5RDMzVU0tbi1hYl8zcEE1ZGVXOGtxeHNfTUZXa0p6emFHT0h0THY0Sk5BejY5by1LU2UxX2FGQ1lkeTQ2Tlo2NnJxRENMeXRsdlBJUjZQeE1FbG0zX1NSTTVpMDNtVUNsVWVVUnByb3ZCRTFsN2FvdXZCQWdkWk56b19jNU80OHc5WWJhMDVnVzg4dGFiYkFQUjRLdTlPMDBEQUdnZFdiZWpkNTl1Mnc3al9oTFQyQzlLemw5V1doZmUxNk5ZODhxVXEtcjVjR21tVEhPeDdlbFVxTHdaUUU2QnY2cFZ3OGlTQ2lEOFlWUTAyY0x3QXE0ekVWb3BFZFhlWi03MTlsU2Q0WUNwMkFkaGtJQVRUMlRhdUZfYVd3Tzd3bVBvUFliSzRRTmZPMkx2NmpJQXRjT245d01wMXJ3MXVZd05uOEt4UGhtUlJYUlRaZS01X1JqS2J1UWRzWDBGUUdBRU1sWGphN3l4ZU1hV2dnVGFYMjVYRzJxdHctVkxhZUktTlladnk2eFo5dVplZnAxc1U2N1BRMnJPTlV1b3VNemNwNTROTXhNOGMxWHFrbFQxcG1GWVp4TnNObGxqRVFTRkUzeWdPeU1RTC1KazdOMm9JQXBxOUxyWXVEay1pVTE3ZDJ1RnMzUnlURlVZckNOdUxDaGRhUXNDNFVreHc3N2tqNVpVc3pPZFdHQUUwVWdlZGc3dXIxMmFRaWJGNVJpUFM5M0E1T2NuRDdvZ0FlQ01KTElXWGRZQzlNWC1ZOVlYSTdFdFd4NzZJWU05SnFZRmMzaER2bmhFclpFTGZGWTZYYzZybG1WQVplbHhmVUZnbHc4LUo0N0xpaDdKRnNaX3g0a0djUWl3TzFzdGJKVWVSOGk5d013ZnRzMnJic01Bd3NNWDNYMlI1Q2RYZDJmWmN5V3ZiajNNYzl2MkwtQmUzNFViUVZtc3JIZ0ZMa1NmcG5iWnNGOEVwdTJwdlNLNnBDYWJ0UzV0Sm5oWFZSa3RxOWdaSXFJTWlUX05BeTlwREpnLW9ob25QMGNJR1BFU0FpenhyUkNYVXcxRW9LcHhHYk5lam9COGZ2U2c1WEJncno2d3IyMmNoTWJuT2t4UWhXOGd1Sm1faGw3Q1NLZUVVU05QbVpSajhSaGNoTHF6OHM1aEM5ZDUteVpZdlhpdHZfdXB1YXZHV1otcjNndUZtWmRZb2J2QmtQTEwtZ2ZYc0dBM2h1VDFPLXg4NG1tN3VrSzFkZGZlRVc0Sjlsb3BBcDJvbzdxR1pWT2tkVFBDSUpRd1NoeEZncjhvcXhZUnJvQS1iR2IteTVXZ01YSElhVVFLTld3eVlzUTA2aGJjUjFoeUxvZTRvTU1WUEFVTGRuUS1faWxScGZFMWttazJYNVExVVZTWHpWb1N3cm0zSERzMlNrSzVNekk5NFYwZU9IYnliUHhGNDVOU0VfdmhVMkpWeVF2THprVm5BS2xZSng5cTU2SnRIWTRtT1FRc2Y0c3NqdURXTEhnYmxOT1c1c2R4aUxQd3VIZXZSdVJzWEZKOXZNeFhNMHJKSVJnYkVBaE1YdDNfRjh6bXhYQVNJQ2xpODk2anp0emo5LUlZcjlaa1g4V05SQ0s3VS1QQW5CdVY0TlFmVHZGYV81N2FQQ0lTUWYycDBLc0RuaUQ3SGpiVnpCSlJBcy0xNXpheHNTcWFSVFo4d196ZVYwZTNBZE5EaUFQN0xhbHN1SG9jUEZVSXlMOXhBMGxKaDhxeWxhT1Y0LWNvclg2cFlCVURWVjhMNGEwVGZudHlsTHh6UTI0bWVoVHBrT1hTZlBHcURqTENOYzAyMk4zTHlLODRFNXBtQXhMYW9yQWRJSDJQVlFscGwxVThsai1weVc0Z3NsMDNzRm1xMjRlVkhoLWp5SlNHVkQ2eWZhMnBrM1NNWWdfekJPc2lMWkdGcW9DRXhta2lXdGxncjFjY2tOWDFTSlBFbnM2SWFSNFJqejFnSktyWnF3QUJ3NklrcjBaenhMWTl0emFsTEtuM25Wd1l1UktVa3lnVmJEWjZXck1yalc1S3haLXVvX0xtWHZ4dk8xN2pfZm1ER3duQWZ2TVkydGFzOURLTk1nSVVXX0g4QlZJcWhnS3ZfVzZvV2Fpd2pTZmgxelRxZ05oV1lEVHY0WTNYbVZheDhyVjdFMm5LcjRQU0phZTA0NFRSRXZEZEU0ZzhQbFlmRTFia1dibnpjUjF5MjdnV21XZ2l0NXRGWjRXcDFod2pOakVjMlJ5VnZUc0hDREY2ZWtkaWdnT1hYTGNPeU4xSy1VTzhQamFLQ3pMcmVpS2ZPLXk2V1czd0VZc3VnOWlwVm16MG9xeTZ2MU1xeDkxZnNSeU5EVGRmLXhUQlpxalpVQ2Z3NkZIcHI0bkNWQzRyN1MycEJBRDhsQnQ2UVFIT2l0Rk5DSThkNEt5QzdsMTRXUTV2amV5Q2htUEtHeTVsU1NraUZzazNkaWd6NGFXTjUxOVI2amdqZmZ1Zl9OZ1ZKenVsXzVGbi1KbkxGZWN5SFV1eW1rMUtQb3VTc1htbHJtTFlieXNvLXJLSk1PWV9EX2M2aDRpczRpMEM2cXZtdVZpVFBNeUtjd2RmNXhvSkg2Q3dwMkMwZTRWTXdEeDBOVjJwU2dDbjJ0QjdWSXFRNVNjdUFZUlRjOGJjZjh5SG5FNW1rMGRZeVByZnVZX2ZnTjR6VG1WdUdEczNESGhSUHVxUTlWbXBMRmhURklRSWtJeW5ySWNoaHdIVWtFSGVMT1gxcGRrUUF5b2NGR3JXYzJSUG5lNnNJdVdSNU1Fekw5eFl6a0d2ejRWQkNQTUhjZzBMdmNCb0JXYzd4RlVSaDlGUjVjOHFRUGp2LTZjbGdzcU05WDRFQ3Y2TEtJdmNyc2h6bFlibjRiSXJmb2NHS1JCREQ0Q21zbkxVcWFNcGVLVXNfUU1CbEJBSGZYbFFua2J2UEFYQnZLYkZOOEk2TC0yX0FKSUpPUHQ5UXE4dHNEZFJIekpkQ05ULWNUb19VQTJOb0pCVllQcEJHc3pDZVFURHk4MlYtTWFGenAyaUVEXzV5OVN0ZE0xTmJGaEE1b3VoMUd6bUZwX2hOX2pfMmZ0RElHMzg3MHBIMkxDQXZGT0ZoQVU1dnRhdmhNR3NWS0F1Si15UkFqYU5OazczNGNJQ1JzXzdmS2tUakZURk5sWDBjZHlQSUQyVy00V2ZJcUZFMy00b1NYMTdaVVpQc1FmTE9Na1ZRZ1h1QTdwQ2lXcVljWjItRDBKSndid1dzMmpKT19MS3liVjZrU2VwaFU0U0Y1WWVxaVVhSjJ0cVdXMzVXcl9OaUo4VmJaR3hoaXlXV2czVkxvUzNGR3B4MlpLU2hVQmYzNGJxR2llMEV5cnhLQUVEMXI0T1ZMdFBkWTVNa1k3VlE0SnlsTm9pakg5MFdKbFotS1g4S3pWVC1DaUxiUEhmVTZ0NG1ibVpzWXpwR000OXJONHM1R3A2MFZlQnVZWmtmeEVCNnZfWUhBd3ZhU3djTXEycGhLN1hSNU03UDNlNWQzWnc5eWVPNFNsYkdsalN1a1owMXByc0dua0J5NThvREdud0JPQ3p2RmJSMXp1d0R0WEpfVkVVaVJIajR3NWdadWNFUnNGWTFzLUpyQURRQThSanNIUmlBeHFzMXZTWEsta29Ia0Fpb2RKbHZvZi1fS3AyVG1nOTNlZ3kyRWJSUGE4UGhVTkxOZGd6SjNDeXdoVFdrSjBrSEpoOUxrN3p2VzI1QmZZZm5GbVFuQlhfNHMyMzBYNWVlZ2J4TF8zSkxSSXoyaXgwZUQya2lsd0JrSjV2dWtFRE1oVTFsck8xdzc1RTVYLTJtZjJzWThqZklzSkJocVhVaE5nRENrUUhEeUtOaUF1aldDaHEwMzdMS1V6cmk1WlZGSEJvQmpqSWRHS1MyZnZLd2h2SlcxVWdRb0lGZ1hvNWJ5a2UwWFNTd3luUmZZNC0zeUdvLXRqeWJsaG9BNVhXNkZrYnN0VUc0TERXOUlLcS00dng5NGhjalhkSGlDelFVcjBnX2pMUVV0ZUdYZ2c3QUtzT0F4a2Q4OGpDZjdKcUQ4ZUNiTHdWR2JsVFBkMFBnQXhvVWNIV0ZUOXB1Z2hySEJ4d2ljbHU2UUViNGxkcjdnX0tYZlNNbERtZ25TSnNnbmZyRjJoT2lVeWhSSzFMZVB6RS1QUHR6aTlrYmpjT0k1eFRPQ1JZWU1hNTlVc0tIcEdPbzNDZEpGM3N2bG5pbHdfY2NTYl9UZzlRNlhiWGQ4cERFOHdkRmZLS1ppNG5TUk03bzNIamJfY0l6ZTI0OXB0YUxlazljOUtkQ0M4MWVBYUR3eWg5cmRWX3R6ZHdtWGhfdHIwV245R1BfakE2VGpzbWx6WVN2UDl6SjNPN1dQNUlaQXROczRKTFhyQmlNdGc5dW1Vd1QydXdXUG1DSEtVV1c3NG00cTk4bldyUTFNd2s4SFNJWW05elVkd2thY1Brb0kxbjhWVXNFMHR6THdQUS1YSkk1WWQxVnhXN0hFb1JTbTg4cUd2bTYzbTBuQk44ZFN2RnpMcy1LT1lncGpnVV9OT3I2T1kxT1NPS1M5UEE5d2IydDFjMXY5RmdoQ2RNVDU4TEZ4T25BNk13SHk1SjJFVG9WYkJqX3k1Y2V0Z3ZhVDdlb0hXSHl1dlpocXp2T3R6bnp6dXpJWFJXT0cweHlsWEctbW1hNkNWaHpBMTJDY016SFc2bUg0MFI2UFkwMFp5VzZZNlllUzlBSFBxN3NobnRjOEhqRjJxbGJJWDRPSXZoZ3NLOGRVM1V1dVVPVWItSlBIbzRfMHl4VDkySHlKSGo1ZjB6ZkxkZGtQN2xELXZ2TVg3Ri1WUVpWMGRQNFBMLXZyS3E1ZFdOOWJYWFRpSmJZWDJoZ3pTMkl5R3dQVVE3cWN2LVBnVmdZZGhLWUVZV0Z0WjktdUx0amJWM1NYaHFHU05wYjk1ZVBoMlFUTVM1eUx5VHFyVTdLSkRMSHhiYUd0X3B6Z3dFZ0RQVkJtSjdjLWtJWVRWS0E2bF96cVU0VG5WWDBiTFJFMnV2Ym5jaXlSeGRUU2xSQzlzQkxsLXlWRC1FTnN2U1Z5XzFfMElPelVjalR1d2NPSGJJTGhWSGdERWV3VklZS2ZzeEpQeS14OHVxVkQ4UlZvNC03eDRlSGxxZWVMb1BEOEJWSGUzZkRUWExGdjE4clpLT2pWLXZOUGswTkRJUXN6VjYyZ3VDalViOUNnTlIyRVFhRzlLOUVyQmw0emFZMjlIbUhPcFdvaTZNYlVrdC0wcmVjTTYwX2tLNVdPVGRwMDRoNDNvV1l3alo5X19aQzYtUUMya3M1N29UY1FSZDhBRDE5VE04RktJZXJjdXExaEtyMmdDdGJGS0g2V0Rnb2NvYWppNzhYemlabnlSYnVuS2JjXzZjejBnZ0xHQWJFTE5qZDc3cWpMaGR1YzBNYVNMR0ViOEgtQjdockpjc3AwYTYxR3p3UVctWGMwZEtGMXlxNC1xMUdGYzhUM2w1ZWFubDJ0VkZWWTVGWkJUM3FJRXg1N0swODZQVWtDUHJ0dmhseUFMQXNvNnhKaVZTVVpOVzFraFRHc2VwbHNrV3l4akoyVW93Y0l4eWRVVWpoNkttbjUtaEJrem1ma3FicGp4RG1OMmhGVGpfSFNhWENjVm5DaE41bHpYQWhscWh5aWd5ZWV2YlUtTHItV05jVFpaaTlwbW05RVF2VjQ2cEQ3NktLLU9oTkpDR0RpanIwdGZydFZma3ZsV19kdHBVZWdFU01xV1RZQzZ0TFVZREQtWUxTM2I2cWVrYkU1UnI0ZU5aNmVtVTIzTURDNmRxdHNYdEhfcm5QVzVuX1RGYVNnLVhWaEhjVUE4T0RCdkxqejltQW5OdG1LeTUyMGZNcTdEdGZyRVBIWU4xTVBYakhlazJlTGxsempYWmF4ekpzRjVrbTNRREJkVnZMNlFTTWUtc1FpSzliYXNLMjR0U19udWpBbVZ6SmN2b0VmTUF5MF9ZTFpVWVoyVU5yNE9QYXVhdEk0NE04TWg2bDRvRDJZdFhVU1pQZExSSVZOaFo3UFNrUU5oSk5KQzhHTU94RHBTdkZtb2ZvWWNUMmNpelJNbTRZOGxNQ3ZvdW1rUHlpci1MWU9hNnhlT2NxMDdWTVpZMWV5REV6VWx0RlZJdTd4UWpnVFR4c2cwRTU2bVMzUzZwQ1RlQmZaVE1hQjFTa0JFOUZmUXhUSk1XbkxOQTktVWhVenJwaHp1QTZaNDkwSURscjczeDhkdndBQm12NHliYk8yUjRZeENkcm9Xc3RHalJWR0Q5NmgyMkpGbDlCWjdSY1Q5RlRQMmhncW14VDRJaVZIRVBHNW1rc21vMWh6LU1fc0RFSGtLZVAzTzFOdDl3LWlvNnVZTldULUotVUY0WjJqYUJRajVvbHR1Q0NkOW92RGVTV3RMSEZxMDAzU0RHWTY3TFluWEZzQmJvME9hb0RmQzRyTzFFLUcyZEF0NjJRX3BwSllYNTcwSDRxLWJOdFBSVXQxY3dzZXM5d0pPV2R3am9TbTNlaU84MkY1R1FFZUlTSG1NSWVPSFVVdnFyMWV2RXY1Q000SHUySVV4TmdKbkZqMG16aUFCczRjakJGMXNUNHJqOFJfMjBnZ2kzckZvcjRMQ0JhSzRnLUVIZ09sRDZNZG5mZzF1aHlad0ZHWkJQOTBQdmhlSlY1ZW1RTEsxWm5FSUp0LXpMUG9wNjl2VFhnMXdZLWNLcnNfTUV6UHphbkRZQmtRYy14MUtxeHRIeTZ0SmVydXNEX1V6TjdiV0tvQ05sbVdSZVktZVdya3c2cmlKbWMxOWU2d0FocXVHeXNrdHlPRnVwZkw4RXBNR3VyQ1RYUzZXcmxvaDFiWjVtUGJ6RmY1RjNSbkt6R0labU0yX0tiZGQyODRhalE1eGxEaTgtQzVFUjd5YUhaSURkUnZ0ZHE0aW9SQno1LTV1bjM4UEdTUXpJWmx2Yk9yUUdob0E4aXAwVERpdkFndGhZMGdZUmtsR1lxSFY3TjZnY0ItWGEwaDJvZTYteHVybHNYT0RrOTBtRmdPV3o2b0xCOUE1WmNkTGk2U083X19xMFZsMVRuMGh3QU9lZFpmZDhBUjRlYVQtay1TMWx3eGhxLUszbXpLbWJjcHEzVEJicVN5T0tfSnZseXh5b1N3UkVxQklWUGp0SmU5MlN0ajJzNUhoMWxSb3VyYkthR1pEdk1admtCZERaVkQzR2hydXVTN2IxMHctZ0dqZ3BGSXFoS09ZWUNzcGhKVUlRejRGaHRiUEFMWm5lcFFoSUJyTm41cy14S2lSY1NhTUpjcmdGa0NUczlfU3E0VmtwSkpSaWkwdVBONzQxTVUwaHJ2QjY5NE9xbnpCQkFLZk5TLVljOFlXQzIxRGFFeDBtUnY0SjVUMGt6WnBEUVBDSlRyRkU2RXVZM2hqN2pVbFlZQWlxa0oxWEtsRzYzMGVKbWpiMW5QNnNIYVNIV0ZjSC1xVmhtVnhmdWlzYUtfZTFNdzBNQTduVGFPQWpob0ppcF8yc3JvUFJET3d6TFRLNGlzekc0WlE4anRrMXhvcmJMWW9IUDVnSkJubWlrOWw1VVJVOEZBbVJTZkJuSkI4UnIxVmxhZnY2ZHN2bDBGRWx1ZEUwb3B1VFlXNkpXZ3VCYUxZVXFXeDNPRk5mMFRDRW9zcE13T2ZLTzIwaHZBeWJUZHd4YmN3Q3BlYjh4LUNMME1qay1IZTZUWnd4TGJXVTZ0SjlkTFBSVW1tb3E2QkU4Sl9Pd1JjZi1sYnZXdnVvS3EyZ29nUHhQRGlpSGpCT3lydWtNcVJHRkpxZWpHV0RJc2RBal9CWmRpT29sZzBDdzRTQUtkeGtRbklTelVYYlBiNUlfX000bm1QUlRENWFZLmFTMTNCZzlvd1N4UGZwbEVueDZqWkJGMFZ1bjVwRmtqSENHSmRtR0ZGajA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "693", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=243;da_age=2900;rd_age=6094;brd_age=15929;ra_notif_age=593;da_notif_age=3425;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a0b75430-38fc-4b3d-9a40-105fbe5a9601" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "693", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=243;da_age=2900;rd_age=6094;brd_age=15929;ra_notif_age=594;da_notif_age=3425;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "7e3f19c4-a865-43dd-89a1-78dec63ab411" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key%21@%23$%25/backup?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "private", - "Content-Length": "3420", - "Content-Type": "text/html; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:09 GMT", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff" - }, - "ResponseBody": [ - "\u003C!DOCTYPE html\u003E\r\n", - "\u003Chtml\u003E\r\n", - " \u003Chead\u003E\r\n", - " \u003Ctitle\u003ERuntime Error\u003C/title\u003E\r\n", - " \u003Cmeta name=\u0022viewport\u0022 content=\u0022width=device-width\u0022 /\u003E\r\n", - " \u003Cstyle\u003E\r\n", - " body {font-family:\u0022Verdana\u0022;font-weight:normal;font-size: .7em;color:black;} \r\n", - " p {font-family:\u0022Verdana\u0022;font-weight:normal;color:black;margin-top: -5px}\r\n", - " b {font-family:\u0022Verdana\u0022;font-weight:bold;color:black;margin-top: -5px}\r\n", - " H1 { font-family:\u0022Verdana\u0022;font-weight:normal;font-size:18pt;color:red }\r\n", - " H2 { font-family:\u0022Verdana\u0022;font-weight:normal;font-size:14pt;color:maroon }\r\n", - " pre {font-family:\u0022Consolas\u0022,\u0022Lucida Console\u0022,Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}\r\n", - " .marker {font-weight: bold; color: black;text-decoration: none;}\r\n", - " .version {color: gray;}\r\n", - " .error {margin-bottom: 10px;}\r\n", - " .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }\r\n", - " @media screen and (max-width: 639px) {\r\n", - " pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }\r\n", - " }\r\n", - " @media screen and (max-width: 479px) {\r\n", - " pre { width: 280px; }\r\n", - " }\r\n", - " \u003C/style\u003E\r\n", - " \u003C/head\u003E\r\n", - "\r\n", - " \u003Cbody bgcolor=\u0022white\u0022\u003E\r\n", - "\r\n", - " \u003Cspan\u003E\u003CH1\u003EServer Error in \u0027/\u0027 Application.\u003Chr width=100% size=1 color=silver\u003E\u003C/H1\u003E\r\n", - "\r\n", - " \u003Ch2\u003E \u003Ci\u003ERuntime Error\u003C/i\u003E \u003C/h2\u003E\u003C/span\u003E\r\n", - "\r\n", - " \u003Cfont face=\u0022Arial, Helvetica, Geneva, SunSans-Regular, sans-serif \u0022\u003E\r\n", - "\r\n", - " \u003Cb\u003E Description: \u003C/b\u003EAn application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.\r\n", - " \u003Cbr\u003E\u003Cbr\u003E\r\n", - "\r\n", - " \u003Cb\u003EDetails:\u003C/b\u003E To enable the details of this specific error message to be viewable on remote machines, please create a \u0026lt;customErrors\u0026gt; tag within a \u0026quot;web.config\u0026quot; configuration file located in the root directory of the current web application. This \u0026lt;customErrors\u0026gt; tag should then have its \u0026quot;mode\u0026quot; attribute set to \u0026quot;Off\u0026quot;.\u003Cbr\u003E\u003Cbr\u003E\r\n", - "\r\n", - " \u003Ctable width=100% bgcolor=\u0022#ffffcc\u0022\u003E\r\n", - " \u003Ctr\u003E\r\n", - " \u003Ctd\u003E\r\n", - " \u003Ccode\u003E\u003Cpre\u003E\r\n", - "\r\n", - "\u0026lt;!-- Web.Config Configuration File --\u0026gt;\r\n", - "\r\n", - "\u0026lt;configuration\u0026gt;\r\n", - " \u0026lt;system.web\u0026gt;\r\n", - " \u0026lt;customErrors mode=\u0026quot;Off\u0026quot;/\u0026gt;\r\n", - " \u0026lt;/system.web\u0026gt;\r\n", - "\u0026lt;/configuration\u0026gt;\u003C/pre\u003E\u003C/code\u003E\r\n", - "\r\n", - " \u003C/td\u003E\r\n", - " \u003C/tr\u003E\r\n", - " \u003C/table\u003E\r\n", - "\r\n", - " \u003Cbr\u003E\r\n", - "\r\n", - " \u003Cb\u003ENotes:\u003C/b\u003E The current error page you are seeing can be replaced by a custom error page by modifying the \u0026quot;defaultRedirect\u0026quot; attribute of the application\u0026#39;s \u0026lt;customErrors\u0026gt; configuration tag to point to a custom error page URL.\u003Cbr\u003E\u003Cbr\u003E\r\n", - "\r\n", - " \u003Ctable width=100% bgcolor=\u0022#ffffcc\u0022\u003E\r\n", - " \u003Ctr\u003E\r\n", - " \u003Ctd\u003E\r\n", - " \u003Ccode\u003E\u003Cpre\u003E\r\n", - "\r\n", - "\u0026lt;!-- Web.Config Configuration File --\u0026gt;\r\n", - "\r\n", - "\u0026lt;configuration\u0026gt;\r\n", - " \u0026lt;system.web\u0026gt;\r\n", - " \u0026lt;customErrors mode=\u0026quot;RemoteOnly\u0026quot; defaultRedirect=\u0026quot;mycustompage.htm\u0026quot;/\u0026gt;\r\n", - " \u0026lt;/system.web\u0026gt;\r\n", - "\u0026lt;/configuration\u0026gt;\u003C/pre\u003E\u003C/code\u003E\r\n", - "\r\n", - " \u003C/td\u003E\r\n", - " \u003C/tr\u003E\r\n", - " \u003C/table\u003E\r\n", - "\r\n", - " \u003Cbr\u003E\r\n", - "\r\n", - " \u003C/body\u003E\r\n", - "\u003C/html\u003E\r\n" - ] - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/restore?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "28", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "value": "ZG9lc25vdGV4aXN0" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "78", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=243;da_age=2900;rd_age=6095;brd_age=15929;ra_notif_age=594;da_notif_age=3426;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3e6bf27c-d59c-4f52-8565-1bc3f2c84519" - }, - "ResponseBody": { - "error": { - "code": "Malformed backup blob", - "message": "Backup blob is corrupt." - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=244;da_age=2901;rd_age=6095;brd_age=15929;ra_notif_age=594;da_notif_age=3426;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "22f68ac3-9d3a-43fe-b608-5869877c439d" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295", - "deletedDate": 1652820549, - "scheduledPurgeDate": 1653425349, - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "87", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=244;da_age=2901;rd_age=6095;brd_age=15929;ra_notif_age=594;da_notif_age=3426;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "22193cc4-916f-4bab-b92b-e687fa263bad" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: backup-key603254295" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:49:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=245;da_age=2902;rd_age=6096;brd_age=15931;ra_notif_age=595;da_notif_age=3427;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0cf383c3-78f3-4c41-83cd-b12dc85827b7" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295", - "deletedDate": 1652820549, - "scheduledPurgeDate": 1653425349, - "key": { - "kid": "https://fakekvurl.managedhsm.azure.net/keys/backup-key603254295/ec6e81b796b54ddeb81cf3c9030ccf85", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "2mS_7YZOEECVZqZjMN3ph69VFyJCjQXiNG0LA1rSG3ZIQXADRagKkTo5NgkHMPUugcLsgDaiOMNG8i0EwzvFDA7QZ00A415SM2-8Lg4SvuCPlwVddb_C0Kp24UIVNgMfXvE5sxAmdR9citdSM8Lv8lp6q1jXp9d2jXBJi6R8ceSzSOurMgnJgwNqgNsymulBM26i-5Pg4QA-TwQKoJndqn_lnGjUESdzULQHH3qJArAh-ekQqU6pokjYcfNAnOpmMRItdRWLRZAgYrpkO7gDA4D5aSta54f7Yl6gjdNlgdbnaq5GmqmEhvXCJbevToRgzkziUj3oLF_3fwjYJHEmnQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820487, - "updated": 1652820487, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/backup-key603254295?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:49:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=245;da_age=2902;rd_age=6096;brd_age=15931;ra_notif_age=595;da_notif_age=3427;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "5c29467f-2869-4562-ab4b-cd02974656cb" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestBackupKey/TestBackupKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestBackupKey/TestBackupKey_NON-HSM.json deleted file mode 100644 index 880ee6295c9e..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestBackupKey/TestBackupKey_NON-HSM.json +++ /dev/null @@ -1,760 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:01 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6b112fc1-8912-43b3-838b-a56a5041f5d7" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "693", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=117;da_age=2773;rd_age=5968;brd_age=15802;ra_notif_age=467;da_notif_age=3299;dec_lev=2;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6047c786-3a52-4f74-903e-c1bae26c4670" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/backup?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "9191", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=117;da_age=2774;rd_age=5968;brd_age=15803;ra_notif_age=467;da_notif_age=3299;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1fca52d3-5841-4ef3-b973-2ee650e30e84" - }, - "ResponseBody": { - "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuSzYySFZnZWZqZVBySGphWVNYRnlFT3UxLTlRNHJpbmpyMVlYOFpIQkYyUXNZUFZPVGpzZTZ3OHFQNkRtdDJocF9SWDlFMnRUa0E0aTF0R1QxLUZybWJfRHc4RHFYQjdJY2FVajQ0eHJIVUhabDc3Mlltb1RwZVNYa09NR2ZUbTZ5dXNQWVVfT3FQR2pCYW9GMlJTa0t0UXFBRVJYRnhXUXA0ak5pOEpoal90TExKbGFRdFBTVnk4ODAwMzdDeGVWb3paRWxqeFFrWEVsb2N5S1RzZVdLem94MDZXZllod21oRVNxT1NrVV83Z1Qtb2tLMmxCdkluZnJlNlQzcUdvdDlnNFRrVXpVUC1NMmF4ZWpZaHV2Y3FMbGJRNDd6Q1NOcVd3aE5nYW1fUW0xLVRhamNCSWJrejdSdFpQWTVjU2RHMUs4NXJyTnRKdnhQSVRJcEhHbm53LnAwdHJ6VV9WU2x4dmUyZVgtNnNmV1Eua2JFMG01TXhST0ZrVVVTdzJsMjl2bkhrLXhhaWVEV0J1anBFemFmWFBBRHQwS0NJQnkwOG5NdUhtVHRyc1VoZXI1eGJKclpFcWNkNnpDUnYyRC0tbUNLQ3hSY0o4UGF1ZUg5SGhDb2JJblVPNnVUQ3VvRlprRWs5X1M4bDNjcDJUNVF3XzJiU1lVYnNwWmlnakdNaS14T2F1c2dzdnM0V3d5WnJNX3VDLU5PYnV1T2R3b2NINFo2cURiZHZ1TTBOZk9Ta0w4aDI5a2lrMG15Q0V5VXRXX052WmxSbkJBZEJCNS0tN1JheG5EYUJhOEU2Z2JObzV5Ym5HWTlwanUtcl9obDFpMXJJcHdLQ01tbWdMZHRjVzF3WGxLWmZIdkR4M1E0RDE4bGJXWERySXlGWVhMYVBQeEJqWnFQQTR2T2kxOTZuODJXMl9xblV2Z3Z4dFZWQVR2X2dQRDM5ek5IaEJ5TGJjam5RZ2dfbWNDaElBNXRyWUwyTHd3SXk2WDA2ZEpVWVJrNk1MVzk4aGFhY1Q1TEo3RUpBMWxPWExtalFEZnlVRENiUTVTSUlJMnJvMWJIdjZZQ1Q5b2xBdVpQZGxpZ2NINjQ2RnlaWXBzaVEzTFZOTG1XOGM3WWkyZXVUdVNMTVE0c2ljaXlJR19RSEZNaEh2SkliRTM5eDlMWjMxcUh1YXFGTm1rYmFubk9Dd1FJeTZhOVNDdnBNWTEwcTVsdXlucnR0MjZMSm1jWlNvM1lFNnFLRXNfX1dQRGdiWUkySmZPZklfNzNtX0pnY0dfaFdzQ3FpcGhvNEdPY1VmWWF0eTlxNkZyNFVJOGExWU5uSWNIdUVfRk1pNEhEbHRVbk1hUGRFSFB2UmlMTTc4ajlmdXBWYnZFQzczRFNIR2JNaXVWNWI5M0ZDX0NOekpZYlRaekVFTUgwQTBfOHBMOGxCbmxsRDQtOHNjaUhqRzd3T0xZQUZwQTZicUZXZjhNdkNxdUw0ay02UXgwMmh2dXBfYmtKUHpYdEZCeTd0QWlzc3ZiWFU2YkFGOHBkOVZNelBQM1F0aWpKUURfU1JXc2VFRE9Scy1MUnNFV2hzeFZjNGh1RXZYY3dndWI3ODdEai1vQ3YyME1vc2g4VmNEcmlsajVrUExPZ3lGSVB4VXhqZnhQTGluTGFNVWQzMVRxQ3pEMS1GVFdQRmEtVmJhN2J4WFUxZ3lnQnN5S3FtNnM5UWNfWnJ2LUdIdjIwaTlTMEN6U2J0TDBTUlZfSUNleWIta21lVG83VWY3eG5Jb0NwcThpSjQ5bVkwNG1kR00wTzdUcUNmS2VUSGhzVmZGQ0t4SU53SGx6OGRsd2tta2lRN1Z5bnpzT3l1eVdHQkxvUUpKZDJjLVY5Yk9iUjU5Q3Zlenc2dVZZYmxLbTNCODZUS2I5ZkpuTzJtVWc5RXZqTWlTXzNWT3VRa3laM3FLVEh1ZS1RSjUtZXZuZzFwQkdCb2FyVG50Rzl1WnM3d3pRb25PWWg3NlpVUXZBV1oyRlVkaUk1eERHT3AyS09lYnZvQVY1eDM2clVuajdjS0IwVWNLd2pNTmo0TmxMX3VldXlta1dhN1B4VnpvcEI3OU9KRzFudHRGa1VWbFZHTmdGT0pUVGxOaGZ5a0MzUHA3NTRkWXRkVXllQ2R0NjBFZUc2emE0Z0Y5WVloWVFvUHk0SHFlNHFvb1lGc3ZDMTZWNmxBeHJsYVY1NVpBZ0I1UGRHWHlWQ2phQVJWdF9JOTBHTnpuMS1FTnJfZWVxQUxnYjZkVzRtOTVqRVVHeWpOTXdBTXJKa0xGa2F2bDBDMDhhc1Izb3lER0RfaTdqcTBpcGtwV0ozdGhZVnMtUEZRbDNPcWYxemk5YVp6eHlKR2Q0b2d5ZlZpT1A1cU5IQ3ZzRm5aV3dVb1AtMzIzOHFkbVVmR2kyQnN4Q2ZBTHZRTk40eUdHSXBLUXNpbzNtU0hzUXZfV2M3OWdvN3hGT1d0NXo1NUctckdPTG91ZTFmTmU4Z1RCTC1BRlExYUdKajBCQUM2ckUzNkxkdnplUGVnQ3p2bG9Pa0JReU9PV2toSEUwZnptdi10dTN3aFBTVjF4T3hZaUJna1NvRHFvV0JJNlpnc2l2QW41NVpCLVJkYkVaTGRSMXlHQTlQYjYwSktKVjhnbGJFZGhqQW85WDU1cjViYWZOTU9ITEpNVmJkVjRCbHloLUk0RnJtUHpWbVo4Y25zVWxlWXREeUF3LTA1UDVkZl84OWp2R2N3VjQ1TTVoYTBodXpWdWZudVJLX3J2VXJveFVNSnJCVW11em1fRUxjOTJlSFhFaHlWTFlHZEZMTlMzLVFLcjlOdW1uaEJXb1dzZ0YySVhzcGZoWnczaTZxNGJfOHliZ0M5bnFFcHRnS3V4R2c4Y1V5R2FGb0tiZWcyY3hyYkVXcHFvb2lXQ2RMcUtqMUxLLWNDeUJqckFxdG9uR3hleHZuOGVnU0hPVnhvZGEwblZ2MnpwbnVUNHpFMG5YdXBqNTZZUEx4bVdTYlgtdGtfYk5BVWNNMnVWQWJBTUpxYW1HMFE0ZWRDM2FkY1R2ZmVHcGxLLXNPdF9fSmszUmRnb0E1a1lTQ1lQeElleWc1N0Nab3ZiWlpZbVgzcHVlUnk2bXVYR3NpdEFYa09famd5OUFYSHVyV3Q4WTBtX1JvUldvM3VpOFlnZF9CSTZieks1c0d3ak1nOGRJOUZPeFAtUk93bVFOVEJ2Ul9STlpsb0tMRFFlQ0h6VjgwVjZBb3hqUEhIdy1NMlNZX2IybXJfWFBsaC1ZdlBDSU9KWGxmTG1fUTlhcGs2Q1VXcDczVzE4TFNJaUE3ZFBVQjRpSEVzVU9rcUVRbWFqYnNrdjM5Z0dCMnVPN29mQm9ydzd2WTVXbXptdEQ3Ulludk5iek01UmZ4UlA2TG1Qdk1IZUpsYVRHbV9xUW16THhxRzhUVDg4U3VmcDBhdW1lSm1Lb2JHQjBBWS1HYnN5ZW5BVFNhTFlweHNFV2JlMFVsRGdBcHVnMEVuVU8yejgxbUM1LWt6bFZnWWx0OTFSVklWZEpPRzhMV2MwZUQzUlVKN3ZfbnBsZkNxU1pEZE5US1kwLXdEWWpGQVRYQXVKUU9tMEpNMnpsNzMwZHdOaEF4NEZPci14WnlyZ0JSUmJ1UjFKZUJUV3JveHJzZzJsVkFLYnBHRW4ydGhvNjMyYU1EVTNLZmtYWU1GNWdFd1MydjM3bEdGLXFVN2NmellYbXJVTjUtTDBkZ2dJbkNOZ1kzalB0QWdlQXpHRlc5TTRMVTJfaXZBbm9GYWVHUWNZSWZYSldRcnRaVzhqQXdvWkduRnpPaDBvRG1odmh4Q1BBNnB1ZFY5Q2NxV1VBNXFCdDRLZGYyTVJmcmFzaGZxeXVmdFdDck5hdlJPSFJKUFNzVnE4TnBzcWYtR2RLODVqb0FwYUJXeEF4VGJLN3FWOTdPNFkzcmJDN0ZwRFlPWm1FenhVMDYtYmprc2oweDJpTThHeF9KTGNsTV8yUTFSMC10RmNLNUM2V01mU2RMT1RKVzBMY1cxWlNYaFVuN2R1YXJiNnpHTmd2MFZsazdCQ05yWkpBaUxhNXYzS2tWUzU3OG1oNnNzbENDS0dtcmdtUVhtY0E3R2ZWcW44aVZIYVAxYWhaRk5hVXozOFlZcEdUS3ozS3BoR3h2NkxpLUlyb3B0bFZJZ3pWaVdkTTNBdTVEN1hvT1ZNN2lSTGRSOXhWZF82UEZaOEZPSmZhaVFyU0x2LTUyQndyUk0yNFhHTUxob0xoSTVFcFpXWGZjVldzYUFkdk5ab0dNRmE2R2FMeXZoSUVYN2N4ZlVuQUZsTTN1eFNYdmZjUjVxc0luTTFBd1ZaeGVZY0ZUcVlXRGR6c0NEYkR2NnNZdXVzakdiWmVBR3B4bnZ5blJUWmFVaEJEcEtYaEpNN20yNU5nc0tvc2FjWHRfdE5mdjNOQW9lN01ocXJhYmhDU3ZsNE1NcmxMeWV3blI1MmpkUU4yWkxWNVZHQ3hyYU80X0ppeVVaU1p3cnk3YXFyZzdRQVBFRnBIODJ3Q05vYnNDZHdqenI0eDFyOUZ4d1BuQWZnOTJpVVk2Nm5yZHhSZzNEcmFlSGFIclY2c1N2dFYybEpTQUR5UVJRZWNSOEp5eW5tOEJQeUNoZldjb3VaZDNfZW9lQWtKZkU5Y3A3bWVFUVdZRUlsdGFMakNxbUVNSzJLZjdWN3pTTks0Ympvbmc4cWM2WXVaTEFjSVppVjdKaWp6dWVaU05YT0FrWnpaY0NMNjJjRVBOZUdjWVQxWHZZakVBdFk5cGlvdjItUmhmNmJrSTNTejB1OVkwSlZKZzZ1SzNJS2JEQU50cHNoVmlWOGtQZ1BUcmtzOS1WNWg1WnFRd0JxcldmZ3J1X1d3NGVFaTA4R3ZLRmZsQ21aZG5TbG1YYkVWak12ZWYxdHhBUlJiNHJ2dXo2aks3QkcyLXdheldqSmdJUTNBOXR1MVIyV1VUVlEtN1BWbUV4bGRyX2JlTjQ1SGVxT2hOLWlidnhmVWtBNFMwcXloQjFKZ3R6M2JEN2JDeDNQUkQxM2U4QWRuRjZtLXRsNEtTMjA2b2U2bGphVEEzaFJmVFBkZTBCdHEyQUsyZFZOdnZwcFBYWXZwV203ZUstbVdrWXBMOWVhMnBZd0JULUo4RDBJZ09DcjNmbi00X1B3TXhsT1pOanpTUlpCSGJya3FlWmhxM19DQnJkckg5enJxYWEwTi1uaDFRdDI5YWhwQzRCanQ4WGd4YzIwblVBNVA3VndPakRORWR2NzJqQ3l1NFhvSWhFd2R3R2J1Wi11MkZkV2tVWDNYMWFuQUZjMVRjZEo0bkI0ajFGQkFDVWNzVEo3eU9qVHJfVGU4OWo4aXU3NFkzeDRsb290MGNkUWpheE9VcXpzX1ZDQ3hiM2JHTkg5Y1Vlc0JjYlRZNTVvZjJ0TDZmRUs0Ylo3T2F5Zkd6U0ZQNTFKWUlmZzNBWk1oTEl3a0VReV85blRaaGxMTVpid0FweU0xNEh6MmJFVTBHN1dVamdWM3pJajFwZFZmWklDdkp2MUhjUnktdHVlNmpDdmE3OEZHUUJDN1ZkSktpaDNpc3Z2N3NqZ3hQMER6VnNiV01hMk8yRDB5MncxelF2bWRsTVZQb1llTEJCcWlLUjh4Q214NUNDR084Z182TTNKeV9tVEZiSzZHdGdsMW5menNYMFBJS2RpTWNnY24xak5rVmdxWXNzN0d0eDBMWVVQUWktWHVYTGlVVkNoSmRFblBjY0E1TldGU0Y1WUpzbjJxelRNMWQ4cVpBZW0xbHFRMHpDSVBQeXVRV1V5eG5TRUI0NFBSNDVyZDZhLTk3R085NTNnaHpJc1llVEJKd0RMMno5MUpMdnQyclUzajVUMmRYTzl1ZmNucUFTeHpaa1ZwQzVkTTJwR2R5UndIWmVzdXducktYMF92NlFuaUxaUDV5c3J5M2tjOEJlRWRMZE1ycmdHRzZxcVRzekd5S0lWMFBGME44SFAtLUZxTnRway1mOWZYdXZOVUdYTEMxQnZDNnhMTHBjZi1nTnllQkNtbDRrYnFKcDBta3lDQWlxTnFFUWpBNnJ2Z1VBV0V3Q1U3WUVDRHlSRXhTdUVmUHlDZmxSaVhVWDdONFhjSWloVjdoREVFQUhqbTQyQ1hDU1NkT2tpZ1dwOHFZN1ZucUFxQVVEZ1kxQzlCWHpzaEplamtQanB1Y0Z2OXJyeGhSY25rb1BPdjJ4OHljVzNSVU1jNjgtYlBvUVZLa25QdTFQcDBhVUhsc0l4T1VXX0dhZlRoMDd1UUFXRWRGWnJKTHRzc3lWbW9NRHNyR2RTSHFqLVlpZEVMaEdKQzAyeVRJcFFqZ1V3WkhGVXZDbkQycE94eE91S2tUdGdDbGUwbVNhTXd3MUNkMXE5YXlFNEhFVWNxWW90MzRpOVRBcXIyRkZqX01uS21FeUhYMlpzWXU1b3dYbzN6eUdZOVdialFlQnJydHd3aHg1Z2tHQWJFcG9UNXpDVzBUTkNWLWRlZlF3S3cyMU1LMjdTX0l2cmU3Wi11ZGJFTVEwU2pmWFF3aURwaXZzN2hBa3JxaXg3bTJXNTNzU05nS3lMNUNUOVZmWTMzV1UtTFVlcVh4WWVWenZyblQ0TjdzWUdRTElUc1Y3T1gwMU5EN3V1Tm8tMFpXUFlVcDVpMjExWDA2U3A2dnJZVEhqazIwZUpyVldRXzBsTnpEZFpqRndqUjloSGNaOURDUUkwZm1TNU5VcFBwcE1kd2dQOUNSYk9rSUVEbEhOMElGQWJfVlNOMmNfUUs3YThGZjRscllhejBuV0JSN1ZDX0RZZ0VzVUhjeF9wVG52Z19DV25EQ3NSdlJJWVBCdHBRWi16VGlrQkM4d3ludFNoUXQycy14TkpTNlN6MzZoTDJ4c1BXV2xpcFNOdkVPN0NYUHJ2aWd2Y0xFY3FjVmpsdzV2MGFKOWh6ZmFpZzlTTDdfZzVhSXVkYnMzRExaeHZENHJsc2NLaDQ5Wm5GSzBOQ3kzRUJUcXVZcG0xTHl0RjBlZ194ZXRsZzFfUzZkX19FRTk1UHNGVExXVTNXSDdzV0lVSTBGbkdWbGU1clhvNmxfanFleVRGYzdieDFjMGJtc0dzWU5EbmlSWlY0Wjk0bzNqRWpEVEIwcHoxWmpRQ3YwS0ZzcWY4aXdYRG8tZVkyeVhvUnlySUs4dUo1c0tBWXpSZ1ZwVUhWUE9jS21Id1VlSGt2a20ydmhNc19kNXBVTHVGaWtiSUFlajd1VjMySHhQREFITmlxU3piNmdtOXpNRWdLQ2owS3p5QnIxTGJveVd1WGZDdVR1a1JGblpNZ3NqWUYxbFRiWHN5b21CMlVTZ3dWek1Leks3VWJ1ZTlzbWNjNEJBeDVWTHE3dXN3MmJBM0Nrb2FrUEV0Q05ZSHpTbnprZmtkLXRqUHlVTS1yTHpobTIwMXgta1VmTlFYWjFVZ09rTG5PYmZZMUYzeFFwSWM4WEtoeFlKTXRyLVVnbXJ2bEs0dVN4N28zMXFBUUMybzZnOFNKSE9JNWdfVWo5WVlkZzF3aVU4bEl0ZnRPN1VjaVA5N2txUlVrYmtINXoya19IYXlUd1pDTlpnT1E3Ym9wSXg3NDZmMWpHSWdzRmg3cjNxdzFjTnBZY3YxSERXUHdhakh3dFplSVVWMG1IeFdQdEZITEdWLTBUVE5GS2JTUlY3WGhDTXJDdnR0bU9PTFc0X0dDc0p3c2hHaEpRMHotWlBEM1dzODNqN1lSenFoRVRhU1RCMDcxR0NUam1uYnctUjA0cjY0bXlxS0E0UmQxNFdmSUlMVm5MZ0g3RmZlYkJHZjJGbm9DenJYbVRoRUMtY2MxY01ZUUZ0bjd6VHhWUEVtc2hFbjFTWTRyZ1pQR1phLVlLWnFfQjhaYUdpSEJORUNvRGVXNG9BdkRJUl9KNVlCVHViMUIwTUZISDI5UnEtaFFfQjczeldoVkhyaVRnNGUtTlcwMzdlOXhPYm5zT2FEOXkwQjRRbU5YV1p1MmRiTVVnYVljX3RkY2Y5N0hEYXJibF95RlVaWGhMZk8zazhEeDExczI5WmpmUlNXV29meTRFUXhSSWRBekphcDQ4dWZXVEhwYXMtOGlyWkd2RnNkdGVHZk5raHVScnRkTEdkbG9MTDNJV01iSG0tTDV6QXdDWWNYaE9DMUc3aUR6eVRzUWFCZkVPdlowdV8tWkFybS1PTEpKZlpaUVhJVzEybTFJOTJWcThHTWpjRmlXdm9aLVRIcnpMLTRqVl9GNlp3SVJQZ2xwaXVVTDl4TnhjWUpvenNFVFVZdGhhODRmRUUwM0E4MUdnN0RsX2hKWXBuOVRuZVU5TDBzLThSbkdKck1Zb2lYRDVPeDN5R1Q0ZkZRTzN4ZVRldFlhRDJ2XzNQY29fOFBkdzJBU3VNd29La2NnZkNoS0EzZHZBek1BbHoxRkNnRXh0OHVicDVPVWs5THZtNVJ4NXZJZjZ5a1hPNlJUb0ZoNW1Bb2YwdkREU25jenR1T0hHTVFiOS1ITVlnR1FCV2IyQmhGcGpmQ1FkRzlpczdmMlB5U0luZW5kc1I5LXRPV2hmVFJMb1VnRlU3VDBwRGd4UUtXalVXY09XNThEQkZNc3hxSEhvMFR4QmU1Q2FKb3JsY2NiOGE2LXRJMmR5RFVZSjd5N3pDQ29maC1CRkQ2OEZmZXRoeGEzZ053VmNFQ2NwMWtIbldzYmdmSVNoX19SVkpxVDhmb3ZQU3NPSFZNSlhUcXliVFhMQzUxak83enk1QXFHM0ZXX3JJWnRzRVRseUx6Qm9wUUkycDVNZHJNakJxM0NLVjh0QUpZXzFSRTFKbXBZSlViWXBVR244NjdXMURwVkw3WWZVV3Vhay1UUEszVHVBLmh3dGtibzBkNVRocVZndEFkS2xlemM5Q0I3MVdjOHpkZ1FXdUs0am4wRDA" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/backup-key564789157?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=117;da_age=2774;rd_age=5968;brd_age=15803;ra_notif_age=467;da_notif_age=3299;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "01e64e6b-9206-43cc-b53c-bbe827720494" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157", - "deletedDate": 1652820423, - "scheduledPurgeDate": 1653425223, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "87", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=117;da_age=2774;rd_age=5968;brd_age=15803;ra_notif_age=467;da_notif_age=3299;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9436c726-076a-40a2-9e37-39c03cc3c65b" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: backup-key564789157" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=118;da_age=2775;rd_age=5969;brd_age=15804;ra_notif_age=468;da_notif_age=3300;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "11fef1a0-7cf2-4d4a-ae5c-ed3feb878d81" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157", - "deletedDate": 1652820423, - "scheduledPurgeDate": 1653425223, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:47:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=118;da_age=2775;rd_age=5969;brd_age=15804;ra_notif_age=469;da_notif_age=3300;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3fe12bd3-c724-4539-8e05-6f3b57b481c5" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/restore?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "9191", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuSzYySFZnZWZqZVBySGphWVNYRnlFT3UxLTlRNHJpbmpyMVlYOFpIQkYyUXNZUFZPVGpzZTZ3OHFQNkRtdDJocF9SWDlFMnRUa0E0aTF0R1QxLUZybWJfRHc4RHFYQjdJY2FVajQ0eHJIVUhabDc3Mlltb1RwZVNYa09NR2ZUbTZ5dXNQWVVfT3FQR2pCYW9GMlJTa0t0UXFBRVJYRnhXUXA0ak5pOEpoal90TExKbGFRdFBTVnk4ODAwMzdDeGVWb3paRWxqeFFrWEVsb2N5S1RzZVdLem94MDZXZllod21oRVNxT1NrVV83Z1Qtb2tLMmxCdkluZnJlNlQzcUdvdDlnNFRrVXpVUC1NMmF4ZWpZaHV2Y3FMbGJRNDd6Q1NOcVd3aE5nYW1fUW0xLVRhamNCSWJrejdSdFpQWTVjU2RHMUs4NXJyTnRKdnhQSVRJcEhHbm53LnAwdHJ6VV9WU2x4dmUyZVgtNnNmV1Eua2JFMG01TXhST0ZrVVVTdzJsMjl2bkhrLXhhaWVEV0J1anBFemFmWFBBRHQwS0NJQnkwOG5NdUhtVHRyc1VoZXI1eGJKclpFcWNkNnpDUnYyRC0tbUNLQ3hSY0o4UGF1ZUg5SGhDb2JJblVPNnVUQ3VvRlprRWs5X1M4bDNjcDJUNVF3XzJiU1lVYnNwWmlnakdNaS14T2F1c2dzdnM0V3d5WnJNX3VDLU5PYnV1T2R3b2NINFo2cURiZHZ1TTBOZk9Ta0w4aDI5a2lrMG15Q0V5VXRXX052WmxSbkJBZEJCNS0tN1JheG5EYUJhOEU2Z2JObzV5Ym5HWTlwanUtcl9obDFpMXJJcHdLQ01tbWdMZHRjVzF3WGxLWmZIdkR4M1E0RDE4bGJXWERySXlGWVhMYVBQeEJqWnFQQTR2T2kxOTZuODJXMl9xblV2Z3Z4dFZWQVR2X2dQRDM5ek5IaEJ5TGJjam5RZ2dfbWNDaElBNXRyWUwyTHd3SXk2WDA2ZEpVWVJrNk1MVzk4aGFhY1Q1TEo3RUpBMWxPWExtalFEZnlVRENiUTVTSUlJMnJvMWJIdjZZQ1Q5b2xBdVpQZGxpZ2NINjQ2RnlaWXBzaVEzTFZOTG1XOGM3WWkyZXVUdVNMTVE0c2ljaXlJR19RSEZNaEh2SkliRTM5eDlMWjMxcUh1YXFGTm1rYmFubk9Dd1FJeTZhOVNDdnBNWTEwcTVsdXlucnR0MjZMSm1jWlNvM1lFNnFLRXNfX1dQRGdiWUkySmZPZklfNzNtX0pnY0dfaFdzQ3FpcGhvNEdPY1VmWWF0eTlxNkZyNFVJOGExWU5uSWNIdUVfRk1pNEhEbHRVbk1hUGRFSFB2UmlMTTc4ajlmdXBWYnZFQzczRFNIR2JNaXVWNWI5M0ZDX0NOekpZYlRaekVFTUgwQTBfOHBMOGxCbmxsRDQtOHNjaUhqRzd3T0xZQUZwQTZicUZXZjhNdkNxdUw0ay02UXgwMmh2dXBfYmtKUHpYdEZCeTd0QWlzc3ZiWFU2YkFGOHBkOVZNelBQM1F0aWpKUURfU1JXc2VFRE9Scy1MUnNFV2hzeFZjNGh1RXZYY3dndWI3ODdEai1vQ3YyME1vc2g4VmNEcmlsajVrUExPZ3lGSVB4VXhqZnhQTGluTGFNVWQzMVRxQ3pEMS1GVFdQRmEtVmJhN2J4WFUxZ3lnQnN5S3FtNnM5UWNfWnJ2LUdIdjIwaTlTMEN6U2J0TDBTUlZfSUNleWIta21lVG83VWY3eG5Jb0NwcThpSjQ5bVkwNG1kR00wTzdUcUNmS2VUSGhzVmZGQ0t4SU53SGx6OGRsd2tta2lRN1Z5bnpzT3l1eVdHQkxvUUpKZDJjLVY5Yk9iUjU5Q3Zlenc2dVZZYmxLbTNCODZUS2I5ZkpuTzJtVWc5RXZqTWlTXzNWT3VRa3laM3FLVEh1ZS1RSjUtZXZuZzFwQkdCb2FyVG50Rzl1WnM3d3pRb25PWWg3NlpVUXZBV1oyRlVkaUk1eERHT3AyS09lYnZvQVY1eDM2clVuajdjS0IwVWNLd2pNTmo0TmxMX3VldXlta1dhN1B4VnpvcEI3OU9KRzFudHRGa1VWbFZHTmdGT0pUVGxOaGZ5a0MzUHA3NTRkWXRkVXllQ2R0NjBFZUc2emE0Z0Y5WVloWVFvUHk0SHFlNHFvb1lGc3ZDMTZWNmxBeHJsYVY1NVpBZ0I1UGRHWHlWQ2phQVJWdF9JOTBHTnpuMS1FTnJfZWVxQUxnYjZkVzRtOTVqRVVHeWpOTXdBTXJKa0xGa2F2bDBDMDhhc1Izb3lER0RfaTdqcTBpcGtwV0ozdGhZVnMtUEZRbDNPcWYxemk5YVp6eHlKR2Q0b2d5ZlZpT1A1cU5IQ3ZzRm5aV3dVb1AtMzIzOHFkbVVmR2kyQnN4Q2ZBTHZRTk40eUdHSXBLUXNpbzNtU0hzUXZfV2M3OWdvN3hGT1d0NXo1NUctckdPTG91ZTFmTmU4Z1RCTC1BRlExYUdKajBCQUM2ckUzNkxkdnplUGVnQ3p2bG9Pa0JReU9PV2toSEUwZnptdi10dTN3aFBTVjF4T3hZaUJna1NvRHFvV0JJNlpnc2l2QW41NVpCLVJkYkVaTGRSMXlHQTlQYjYwSktKVjhnbGJFZGhqQW85WDU1cjViYWZOTU9ITEpNVmJkVjRCbHloLUk0RnJtUHpWbVo4Y25zVWxlWXREeUF3LTA1UDVkZl84OWp2R2N3VjQ1TTVoYTBodXpWdWZudVJLX3J2VXJveFVNSnJCVW11em1fRUxjOTJlSFhFaHlWTFlHZEZMTlMzLVFLcjlOdW1uaEJXb1dzZ0YySVhzcGZoWnczaTZxNGJfOHliZ0M5bnFFcHRnS3V4R2c4Y1V5R2FGb0tiZWcyY3hyYkVXcHFvb2lXQ2RMcUtqMUxLLWNDeUJqckFxdG9uR3hleHZuOGVnU0hPVnhvZGEwblZ2MnpwbnVUNHpFMG5YdXBqNTZZUEx4bVdTYlgtdGtfYk5BVWNNMnVWQWJBTUpxYW1HMFE0ZWRDM2FkY1R2ZmVHcGxLLXNPdF9fSmszUmRnb0E1a1lTQ1lQeElleWc1N0Nab3ZiWlpZbVgzcHVlUnk2bXVYR3NpdEFYa09famd5OUFYSHVyV3Q4WTBtX1JvUldvM3VpOFlnZF9CSTZieks1c0d3ak1nOGRJOUZPeFAtUk93bVFOVEJ2Ul9STlpsb0tMRFFlQ0h6VjgwVjZBb3hqUEhIdy1NMlNZX2IybXJfWFBsaC1ZdlBDSU9KWGxmTG1fUTlhcGs2Q1VXcDczVzE4TFNJaUE3ZFBVQjRpSEVzVU9rcUVRbWFqYnNrdjM5Z0dCMnVPN29mQm9ydzd2WTVXbXptdEQ3Ulludk5iek01UmZ4UlA2TG1Qdk1IZUpsYVRHbV9xUW16THhxRzhUVDg4U3VmcDBhdW1lSm1Lb2JHQjBBWS1HYnN5ZW5BVFNhTFlweHNFV2JlMFVsRGdBcHVnMEVuVU8yejgxbUM1LWt6bFZnWWx0OTFSVklWZEpPRzhMV2MwZUQzUlVKN3ZfbnBsZkNxU1pEZE5US1kwLXdEWWpGQVRYQXVKUU9tMEpNMnpsNzMwZHdOaEF4NEZPci14WnlyZ0JSUmJ1UjFKZUJUV3JveHJzZzJsVkFLYnBHRW4ydGhvNjMyYU1EVTNLZmtYWU1GNWdFd1MydjM3bEdGLXFVN2NmellYbXJVTjUtTDBkZ2dJbkNOZ1kzalB0QWdlQXpHRlc5TTRMVTJfaXZBbm9GYWVHUWNZSWZYSldRcnRaVzhqQXdvWkduRnpPaDBvRG1odmh4Q1BBNnB1ZFY5Q2NxV1VBNXFCdDRLZGYyTVJmcmFzaGZxeXVmdFdDck5hdlJPSFJKUFNzVnE4TnBzcWYtR2RLODVqb0FwYUJXeEF4VGJLN3FWOTdPNFkzcmJDN0ZwRFlPWm1FenhVMDYtYmprc2oweDJpTThHeF9KTGNsTV8yUTFSMC10RmNLNUM2V01mU2RMT1RKVzBMY1cxWlNYaFVuN2R1YXJiNnpHTmd2MFZsazdCQ05yWkpBaUxhNXYzS2tWUzU3OG1oNnNzbENDS0dtcmdtUVhtY0E3R2ZWcW44aVZIYVAxYWhaRk5hVXozOFlZcEdUS3ozS3BoR3h2NkxpLUlyb3B0bFZJZ3pWaVdkTTNBdTVEN1hvT1ZNN2lSTGRSOXhWZF82UEZaOEZPSmZhaVFyU0x2LTUyQndyUk0yNFhHTUxob0xoSTVFcFpXWGZjVldzYUFkdk5ab0dNRmE2R2FMeXZoSUVYN2N4ZlVuQUZsTTN1eFNYdmZjUjVxc0luTTFBd1ZaeGVZY0ZUcVlXRGR6c0NEYkR2NnNZdXVzakdiWmVBR3B4bnZ5blJUWmFVaEJEcEtYaEpNN20yNU5nc0tvc2FjWHRfdE5mdjNOQW9lN01ocXJhYmhDU3ZsNE1NcmxMeWV3blI1MmpkUU4yWkxWNVZHQ3hyYU80X0ppeVVaU1p3cnk3YXFyZzdRQVBFRnBIODJ3Q05vYnNDZHdqenI0eDFyOUZ4d1BuQWZnOTJpVVk2Nm5yZHhSZzNEcmFlSGFIclY2c1N2dFYybEpTQUR5UVJRZWNSOEp5eW5tOEJQeUNoZldjb3VaZDNfZW9lQWtKZkU5Y3A3bWVFUVdZRUlsdGFMakNxbUVNSzJLZjdWN3pTTks0Ympvbmc4cWM2WXVaTEFjSVppVjdKaWp6dWVaU05YT0FrWnpaY0NMNjJjRVBOZUdjWVQxWHZZakVBdFk5cGlvdjItUmhmNmJrSTNTejB1OVkwSlZKZzZ1SzNJS2JEQU50cHNoVmlWOGtQZ1BUcmtzOS1WNWg1WnFRd0JxcldmZ3J1X1d3NGVFaTA4R3ZLRmZsQ21aZG5TbG1YYkVWak12ZWYxdHhBUlJiNHJ2dXo2aks3QkcyLXdheldqSmdJUTNBOXR1MVIyV1VUVlEtN1BWbUV4bGRyX2JlTjQ1SGVxT2hOLWlidnhmVWtBNFMwcXloQjFKZ3R6M2JEN2JDeDNQUkQxM2U4QWRuRjZtLXRsNEtTMjA2b2U2bGphVEEzaFJmVFBkZTBCdHEyQUsyZFZOdnZwcFBYWXZwV203ZUstbVdrWXBMOWVhMnBZd0JULUo4RDBJZ09DcjNmbi00X1B3TXhsT1pOanpTUlpCSGJya3FlWmhxM19DQnJkckg5enJxYWEwTi1uaDFRdDI5YWhwQzRCanQ4WGd4YzIwblVBNVA3VndPakRORWR2NzJqQ3l1NFhvSWhFd2R3R2J1Wi11MkZkV2tVWDNYMWFuQUZjMVRjZEo0bkI0ajFGQkFDVWNzVEo3eU9qVHJfVGU4OWo4aXU3NFkzeDRsb290MGNkUWpheE9VcXpzX1ZDQ3hiM2JHTkg5Y1Vlc0JjYlRZNTVvZjJ0TDZmRUs0Ylo3T2F5Zkd6U0ZQNTFKWUlmZzNBWk1oTEl3a0VReV85blRaaGxMTVpid0FweU0xNEh6MmJFVTBHN1dVamdWM3pJajFwZFZmWklDdkp2MUhjUnktdHVlNmpDdmE3OEZHUUJDN1ZkSktpaDNpc3Z2N3NqZ3hQMER6VnNiV01hMk8yRDB5MncxelF2bWRsTVZQb1llTEJCcWlLUjh4Q214NUNDR084Z182TTNKeV9tVEZiSzZHdGdsMW5menNYMFBJS2RpTWNnY24xak5rVmdxWXNzN0d0eDBMWVVQUWktWHVYTGlVVkNoSmRFblBjY0E1TldGU0Y1WUpzbjJxelRNMWQ4cVpBZW0xbHFRMHpDSVBQeXVRV1V5eG5TRUI0NFBSNDVyZDZhLTk3R085NTNnaHpJc1llVEJKd0RMMno5MUpMdnQyclUzajVUMmRYTzl1ZmNucUFTeHpaa1ZwQzVkTTJwR2R5UndIWmVzdXducktYMF92NlFuaUxaUDV5c3J5M2tjOEJlRWRMZE1ycmdHRzZxcVRzekd5S0lWMFBGME44SFAtLUZxTnRway1mOWZYdXZOVUdYTEMxQnZDNnhMTHBjZi1nTnllQkNtbDRrYnFKcDBta3lDQWlxTnFFUWpBNnJ2Z1VBV0V3Q1U3WUVDRHlSRXhTdUVmUHlDZmxSaVhVWDdONFhjSWloVjdoREVFQUhqbTQyQ1hDU1NkT2tpZ1dwOHFZN1ZucUFxQVVEZ1kxQzlCWHpzaEplamtQanB1Y0Z2OXJyeGhSY25rb1BPdjJ4OHljVzNSVU1jNjgtYlBvUVZLa25QdTFQcDBhVUhsc0l4T1VXX0dhZlRoMDd1UUFXRWRGWnJKTHRzc3lWbW9NRHNyR2RTSHFqLVlpZEVMaEdKQzAyeVRJcFFqZ1V3WkhGVXZDbkQycE94eE91S2tUdGdDbGUwbVNhTXd3MUNkMXE5YXlFNEhFVWNxWW90MzRpOVRBcXIyRkZqX01uS21FeUhYMlpzWXU1b3dYbzN6eUdZOVdialFlQnJydHd3aHg1Z2tHQWJFcG9UNXpDVzBUTkNWLWRlZlF3S3cyMU1LMjdTX0l2cmU3Wi11ZGJFTVEwU2pmWFF3aURwaXZzN2hBa3JxaXg3bTJXNTNzU05nS3lMNUNUOVZmWTMzV1UtTFVlcVh4WWVWenZyblQ0TjdzWUdRTElUc1Y3T1gwMU5EN3V1Tm8tMFpXUFlVcDVpMjExWDA2U3A2dnJZVEhqazIwZUpyVldRXzBsTnpEZFpqRndqUjloSGNaOURDUUkwZm1TNU5VcFBwcE1kd2dQOUNSYk9rSUVEbEhOMElGQWJfVlNOMmNfUUs3YThGZjRscllhejBuV0JSN1ZDX0RZZ0VzVUhjeF9wVG52Z19DV25EQ3NSdlJJWVBCdHBRWi16VGlrQkM4d3ludFNoUXQycy14TkpTNlN6MzZoTDJ4c1BXV2xpcFNOdkVPN0NYUHJ2aWd2Y0xFY3FjVmpsdzV2MGFKOWh6ZmFpZzlTTDdfZzVhSXVkYnMzRExaeHZENHJsc2NLaDQ5Wm5GSzBOQ3kzRUJUcXVZcG0xTHl0RjBlZ194ZXRsZzFfUzZkX19FRTk1UHNGVExXVTNXSDdzV0lVSTBGbkdWbGU1clhvNmxfanFleVRGYzdieDFjMGJtc0dzWU5EbmlSWlY0Wjk0bzNqRWpEVEIwcHoxWmpRQ3YwS0ZzcWY4aXdYRG8tZVkyeVhvUnlySUs4dUo1c0tBWXpSZ1ZwVUhWUE9jS21Id1VlSGt2a20ydmhNc19kNXBVTHVGaWtiSUFlajd1VjMySHhQREFITmlxU3piNmdtOXpNRWdLQ2owS3p5QnIxTGJveVd1WGZDdVR1a1JGblpNZ3NqWUYxbFRiWHN5b21CMlVTZ3dWek1Leks3VWJ1ZTlzbWNjNEJBeDVWTHE3dXN3MmJBM0Nrb2FrUEV0Q05ZSHpTbnprZmtkLXRqUHlVTS1yTHpobTIwMXgta1VmTlFYWjFVZ09rTG5PYmZZMUYzeFFwSWM4WEtoeFlKTXRyLVVnbXJ2bEs0dVN4N28zMXFBUUMybzZnOFNKSE9JNWdfVWo5WVlkZzF3aVU4bEl0ZnRPN1VjaVA5N2txUlVrYmtINXoya19IYXlUd1pDTlpnT1E3Ym9wSXg3NDZmMWpHSWdzRmg3cjNxdzFjTnBZY3YxSERXUHdhakh3dFplSVVWMG1IeFdQdEZITEdWLTBUVE5GS2JTUlY3WGhDTXJDdnR0bU9PTFc0X0dDc0p3c2hHaEpRMHotWlBEM1dzODNqN1lSenFoRVRhU1RCMDcxR0NUam1uYnctUjA0cjY0bXlxS0E0UmQxNFdmSUlMVm5MZ0g3RmZlYkJHZjJGbm9DenJYbVRoRUMtY2MxY01ZUUZ0bjd6VHhWUEVtc2hFbjFTWTRyZ1pQR1phLVlLWnFfQjhaYUdpSEJORUNvRGVXNG9BdkRJUl9KNVlCVHViMUIwTUZISDI5UnEtaFFfQjczeldoVkhyaVRnNGUtTlcwMzdlOXhPYm5zT2FEOXkwQjRRbU5YV1p1MmRiTVVnYVljX3RkY2Y5N0hEYXJibF95RlVaWGhMZk8zazhEeDExczI5WmpmUlNXV29meTRFUXhSSWRBekphcDQ4dWZXVEhwYXMtOGlyWkd2RnNkdGVHZk5raHVScnRkTEdkbG9MTDNJV01iSG0tTDV6QXdDWWNYaE9DMUc3aUR6eVRzUWFCZkVPdlowdV8tWkFybS1PTEpKZlpaUVhJVzEybTFJOTJWcThHTWpjRmlXdm9aLVRIcnpMLTRqVl9GNlp3SVJQZ2xwaXVVTDl4TnhjWUpvenNFVFVZdGhhODRmRUUwM0E4MUdnN0RsX2hKWXBuOVRuZVU5TDBzLThSbkdKck1Zb2lYRDVPeDN5R1Q0ZkZRTzN4ZVRldFlhRDJ2XzNQY29fOFBkdzJBU3VNd29La2NnZkNoS0EzZHZBek1BbHoxRkNnRXh0OHVicDVPVWs5THZtNVJ4NXZJZjZ5a1hPNlJUb0ZoNW1Bb2YwdkREU25jenR1T0hHTVFiOS1ITVlnR1FCV2IyQmhGcGpmQ1FkRzlpczdmMlB5U0luZW5kc1I5LXRPV2hmVFJMb1VnRlU3VDBwRGd4UUtXalVXY09XNThEQkZNc3hxSEhvMFR4QmU1Q2FKb3JsY2NiOGE2LXRJMmR5RFVZSjd5N3pDQ29maC1CRkQ2OEZmZXRoeGEzZ053VmNFQ2NwMWtIbldzYmdmSVNoX19SVkpxVDhmb3ZQU3NPSFZNSlhUcXliVFhMQzUxak83enk1QXFHM0ZXX3JJWnRzRVRseUx6Qm9wUUkycDVNZHJNakJxM0NLVjh0QUpZXzFSRTFKbXBZSlViWXBVR244NjdXMURwVkw3WWZVV3Vhay1UUEszVHVBLmh3dGtibzBkNVRocVZndEFkS2xlemM5Q0I3MVdjOHpkZ1FXdUs0am4wRDA" - }, - "StatusCode": 409, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "611", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:47:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=118;da_age=2775;rd_age=5970;brd_age=15804;ra_notif_age=469;da_notif_age=3301;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "45bb193a-4a47-4471-b0a8-e3890e498d31" - }, - "ResponseBody": { - "error": { - "code": "Conflict", - "message": "There was a conflict restoring the key \u0027https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16\u0027. This can happen if either: a second key with the same name was created after the first key was deleted; thus trying to restore a key whose name is already in use. To fix this, rename the second key to something else so that the restore works. The second probable cause of this exception is when multiple operations are performed in parallel against the key. To avoid this error, perform operations against a key in a sequential manner." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/restore?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "9191", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuSzYySFZnZWZqZVBySGphWVNYRnlFT3UxLTlRNHJpbmpyMVlYOFpIQkYyUXNZUFZPVGpzZTZ3OHFQNkRtdDJocF9SWDlFMnRUa0E0aTF0R1QxLUZybWJfRHc4RHFYQjdJY2FVajQ0eHJIVUhabDc3Mlltb1RwZVNYa09NR2ZUbTZ5dXNQWVVfT3FQR2pCYW9GMlJTa0t0UXFBRVJYRnhXUXA0ak5pOEpoal90TExKbGFRdFBTVnk4ODAwMzdDeGVWb3paRWxqeFFrWEVsb2N5S1RzZVdLem94MDZXZllod21oRVNxT1NrVV83Z1Qtb2tLMmxCdkluZnJlNlQzcUdvdDlnNFRrVXpVUC1NMmF4ZWpZaHV2Y3FMbGJRNDd6Q1NOcVd3aE5nYW1fUW0xLVRhamNCSWJrejdSdFpQWTVjU2RHMUs4NXJyTnRKdnhQSVRJcEhHbm53LnAwdHJ6VV9WU2x4dmUyZVgtNnNmV1Eua2JFMG01TXhST0ZrVVVTdzJsMjl2bkhrLXhhaWVEV0J1anBFemFmWFBBRHQwS0NJQnkwOG5NdUhtVHRyc1VoZXI1eGJKclpFcWNkNnpDUnYyRC0tbUNLQ3hSY0o4UGF1ZUg5SGhDb2JJblVPNnVUQ3VvRlprRWs5X1M4bDNjcDJUNVF3XzJiU1lVYnNwWmlnakdNaS14T2F1c2dzdnM0V3d5WnJNX3VDLU5PYnV1T2R3b2NINFo2cURiZHZ1TTBOZk9Ta0w4aDI5a2lrMG15Q0V5VXRXX052WmxSbkJBZEJCNS0tN1JheG5EYUJhOEU2Z2JObzV5Ym5HWTlwanUtcl9obDFpMXJJcHdLQ01tbWdMZHRjVzF3WGxLWmZIdkR4M1E0RDE4bGJXWERySXlGWVhMYVBQeEJqWnFQQTR2T2kxOTZuODJXMl9xblV2Z3Z4dFZWQVR2X2dQRDM5ek5IaEJ5TGJjam5RZ2dfbWNDaElBNXRyWUwyTHd3SXk2WDA2ZEpVWVJrNk1MVzk4aGFhY1Q1TEo3RUpBMWxPWExtalFEZnlVRENiUTVTSUlJMnJvMWJIdjZZQ1Q5b2xBdVpQZGxpZ2NINjQ2RnlaWXBzaVEzTFZOTG1XOGM3WWkyZXVUdVNMTVE0c2ljaXlJR19RSEZNaEh2SkliRTM5eDlMWjMxcUh1YXFGTm1rYmFubk9Dd1FJeTZhOVNDdnBNWTEwcTVsdXlucnR0MjZMSm1jWlNvM1lFNnFLRXNfX1dQRGdiWUkySmZPZklfNzNtX0pnY0dfaFdzQ3FpcGhvNEdPY1VmWWF0eTlxNkZyNFVJOGExWU5uSWNIdUVfRk1pNEhEbHRVbk1hUGRFSFB2UmlMTTc4ajlmdXBWYnZFQzczRFNIR2JNaXVWNWI5M0ZDX0NOekpZYlRaekVFTUgwQTBfOHBMOGxCbmxsRDQtOHNjaUhqRzd3T0xZQUZwQTZicUZXZjhNdkNxdUw0ay02UXgwMmh2dXBfYmtKUHpYdEZCeTd0QWlzc3ZiWFU2YkFGOHBkOVZNelBQM1F0aWpKUURfU1JXc2VFRE9Scy1MUnNFV2hzeFZjNGh1RXZYY3dndWI3ODdEai1vQ3YyME1vc2g4VmNEcmlsajVrUExPZ3lGSVB4VXhqZnhQTGluTGFNVWQzMVRxQ3pEMS1GVFdQRmEtVmJhN2J4WFUxZ3lnQnN5S3FtNnM5UWNfWnJ2LUdIdjIwaTlTMEN6U2J0TDBTUlZfSUNleWIta21lVG83VWY3eG5Jb0NwcThpSjQ5bVkwNG1kR00wTzdUcUNmS2VUSGhzVmZGQ0t4SU53SGx6OGRsd2tta2lRN1Z5bnpzT3l1eVdHQkxvUUpKZDJjLVY5Yk9iUjU5Q3Zlenc2dVZZYmxLbTNCODZUS2I5ZkpuTzJtVWc5RXZqTWlTXzNWT3VRa3laM3FLVEh1ZS1RSjUtZXZuZzFwQkdCb2FyVG50Rzl1WnM3d3pRb25PWWg3NlpVUXZBV1oyRlVkaUk1eERHT3AyS09lYnZvQVY1eDM2clVuajdjS0IwVWNLd2pNTmo0TmxMX3VldXlta1dhN1B4VnpvcEI3OU9KRzFudHRGa1VWbFZHTmdGT0pUVGxOaGZ5a0MzUHA3NTRkWXRkVXllQ2R0NjBFZUc2emE0Z0Y5WVloWVFvUHk0SHFlNHFvb1lGc3ZDMTZWNmxBeHJsYVY1NVpBZ0I1UGRHWHlWQ2phQVJWdF9JOTBHTnpuMS1FTnJfZWVxQUxnYjZkVzRtOTVqRVVHeWpOTXdBTXJKa0xGa2F2bDBDMDhhc1Izb3lER0RfaTdqcTBpcGtwV0ozdGhZVnMtUEZRbDNPcWYxemk5YVp6eHlKR2Q0b2d5ZlZpT1A1cU5IQ3ZzRm5aV3dVb1AtMzIzOHFkbVVmR2kyQnN4Q2ZBTHZRTk40eUdHSXBLUXNpbzNtU0hzUXZfV2M3OWdvN3hGT1d0NXo1NUctckdPTG91ZTFmTmU4Z1RCTC1BRlExYUdKajBCQUM2ckUzNkxkdnplUGVnQ3p2bG9Pa0JReU9PV2toSEUwZnptdi10dTN3aFBTVjF4T3hZaUJna1NvRHFvV0JJNlpnc2l2QW41NVpCLVJkYkVaTGRSMXlHQTlQYjYwSktKVjhnbGJFZGhqQW85WDU1cjViYWZOTU9ITEpNVmJkVjRCbHloLUk0RnJtUHpWbVo4Y25zVWxlWXREeUF3LTA1UDVkZl84OWp2R2N3VjQ1TTVoYTBodXpWdWZudVJLX3J2VXJveFVNSnJCVW11em1fRUxjOTJlSFhFaHlWTFlHZEZMTlMzLVFLcjlOdW1uaEJXb1dzZ0YySVhzcGZoWnczaTZxNGJfOHliZ0M5bnFFcHRnS3V4R2c4Y1V5R2FGb0tiZWcyY3hyYkVXcHFvb2lXQ2RMcUtqMUxLLWNDeUJqckFxdG9uR3hleHZuOGVnU0hPVnhvZGEwblZ2MnpwbnVUNHpFMG5YdXBqNTZZUEx4bVdTYlgtdGtfYk5BVWNNMnVWQWJBTUpxYW1HMFE0ZWRDM2FkY1R2ZmVHcGxLLXNPdF9fSmszUmRnb0E1a1lTQ1lQeElleWc1N0Nab3ZiWlpZbVgzcHVlUnk2bXVYR3NpdEFYa09famd5OUFYSHVyV3Q4WTBtX1JvUldvM3VpOFlnZF9CSTZieks1c0d3ak1nOGRJOUZPeFAtUk93bVFOVEJ2Ul9STlpsb0tMRFFlQ0h6VjgwVjZBb3hqUEhIdy1NMlNZX2IybXJfWFBsaC1ZdlBDSU9KWGxmTG1fUTlhcGs2Q1VXcDczVzE4TFNJaUE3ZFBVQjRpSEVzVU9rcUVRbWFqYnNrdjM5Z0dCMnVPN29mQm9ydzd2WTVXbXptdEQ3Ulludk5iek01UmZ4UlA2TG1Qdk1IZUpsYVRHbV9xUW16THhxRzhUVDg4U3VmcDBhdW1lSm1Lb2JHQjBBWS1HYnN5ZW5BVFNhTFlweHNFV2JlMFVsRGdBcHVnMEVuVU8yejgxbUM1LWt6bFZnWWx0OTFSVklWZEpPRzhMV2MwZUQzUlVKN3ZfbnBsZkNxU1pEZE5US1kwLXdEWWpGQVRYQXVKUU9tMEpNMnpsNzMwZHdOaEF4NEZPci14WnlyZ0JSUmJ1UjFKZUJUV3JveHJzZzJsVkFLYnBHRW4ydGhvNjMyYU1EVTNLZmtYWU1GNWdFd1MydjM3bEdGLXFVN2NmellYbXJVTjUtTDBkZ2dJbkNOZ1kzalB0QWdlQXpHRlc5TTRMVTJfaXZBbm9GYWVHUWNZSWZYSldRcnRaVzhqQXdvWkduRnpPaDBvRG1odmh4Q1BBNnB1ZFY5Q2NxV1VBNXFCdDRLZGYyTVJmcmFzaGZxeXVmdFdDck5hdlJPSFJKUFNzVnE4TnBzcWYtR2RLODVqb0FwYUJXeEF4VGJLN3FWOTdPNFkzcmJDN0ZwRFlPWm1FenhVMDYtYmprc2oweDJpTThHeF9KTGNsTV8yUTFSMC10RmNLNUM2V01mU2RMT1RKVzBMY1cxWlNYaFVuN2R1YXJiNnpHTmd2MFZsazdCQ05yWkpBaUxhNXYzS2tWUzU3OG1oNnNzbENDS0dtcmdtUVhtY0E3R2ZWcW44aVZIYVAxYWhaRk5hVXozOFlZcEdUS3ozS3BoR3h2NkxpLUlyb3B0bFZJZ3pWaVdkTTNBdTVEN1hvT1ZNN2lSTGRSOXhWZF82UEZaOEZPSmZhaVFyU0x2LTUyQndyUk0yNFhHTUxob0xoSTVFcFpXWGZjVldzYUFkdk5ab0dNRmE2R2FMeXZoSUVYN2N4ZlVuQUZsTTN1eFNYdmZjUjVxc0luTTFBd1ZaeGVZY0ZUcVlXRGR6c0NEYkR2NnNZdXVzakdiWmVBR3B4bnZ5blJUWmFVaEJEcEtYaEpNN20yNU5nc0tvc2FjWHRfdE5mdjNOQW9lN01ocXJhYmhDU3ZsNE1NcmxMeWV3blI1MmpkUU4yWkxWNVZHQ3hyYU80X0ppeVVaU1p3cnk3YXFyZzdRQVBFRnBIODJ3Q05vYnNDZHdqenI0eDFyOUZ4d1BuQWZnOTJpVVk2Nm5yZHhSZzNEcmFlSGFIclY2c1N2dFYybEpTQUR5UVJRZWNSOEp5eW5tOEJQeUNoZldjb3VaZDNfZW9lQWtKZkU5Y3A3bWVFUVdZRUlsdGFMakNxbUVNSzJLZjdWN3pTTks0Ympvbmc4cWM2WXVaTEFjSVppVjdKaWp6dWVaU05YT0FrWnpaY0NMNjJjRVBOZUdjWVQxWHZZakVBdFk5cGlvdjItUmhmNmJrSTNTejB1OVkwSlZKZzZ1SzNJS2JEQU50cHNoVmlWOGtQZ1BUcmtzOS1WNWg1WnFRd0JxcldmZ3J1X1d3NGVFaTA4R3ZLRmZsQ21aZG5TbG1YYkVWak12ZWYxdHhBUlJiNHJ2dXo2aks3QkcyLXdheldqSmdJUTNBOXR1MVIyV1VUVlEtN1BWbUV4bGRyX2JlTjQ1SGVxT2hOLWlidnhmVWtBNFMwcXloQjFKZ3R6M2JEN2JDeDNQUkQxM2U4QWRuRjZtLXRsNEtTMjA2b2U2bGphVEEzaFJmVFBkZTBCdHEyQUsyZFZOdnZwcFBYWXZwV203ZUstbVdrWXBMOWVhMnBZd0JULUo4RDBJZ09DcjNmbi00X1B3TXhsT1pOanpTUlpCSGJya3FlWmhxM19DQnJkckg5enJxYWEwTi1uaDFRdDI5YWhwQzRCanQ4WGd4YzIwblVBNVA3VndPakRORWR2NzJqQ3l1NFhvSWhFd2R3R2J1Wi11MkZkV2tVWDNYMWFuQUZjMVRjZEo0bkI0ajFGQkFDVWNzVEo3eU9qVHJfVGU4OWo4aXU3NFkzeDRsb290MGNkUWpheE9VcXpzX1ZDQ3hiM2JHTkg5Y1Vlc0JjYlRZNTVvZjJ0TDZmRUs0Ylo3T2F5Zkd6U0ZQNTFKWUlmZzNBWk1oTEl3a0VReV85blRaaGxMTVpid0FweU0xNEh6MmJFVTBHN1dVamdWM3pJajFwZFZmWklDdkp2MUhjUnktdHVlNmpDdmE3OEZHUUJDN1ZkSktpaDNpc3Z2N3NqZ3hQMER6VnNiV01hMk8yRDB5MncxelF2bWRsTVZQb1llTEJCcWlLUjh4Q214NUNDR084Z182TTNKeV9tVEZiSzZHdGdsMW5menNYMFBJS2RpTWNnY24xak5rVmdxWXNzN0d0eDBMWVVQUWktWHVYTGlVVkNoSmRFblBjY0E1TldGU0Y1WUpzbjJxelRNMWQ4cVpBZW0xbHFRMHpDSVBQeXVRV1V5eG5TRUI0NFBSNDVyZDZhLTk3R085NTNnaHpJc1llVEJKd0RMMno5MUpMdnQyclUzajVUMmRYTzl1ZmNucUFTeHpaa1ZwQzVkTTJwR2R5UndIWmVzdXducktYMF92NlFuaUxaUDV5c3J5M2tjOEJlRWRMZE1ycmdHRzZxcVRzekd5S0lWMFBGME44SFAtLUZxTnRway1mOWZYdXZOVUdYTEMxQnZDNnhMTHBjZi1nTnllQkNtbDRrYnFKcDBta3lDQWlxTnFFUWpBNnJ2Z1VBV0V3Q1U3WUVDRHlSRXhTdUVmUHlDZmxSaVhVWDdONFhjSWloVjdoREVFQUhqbTQyQ1hDU1NkT2tpZ1dwOHFZN1ZucUFxQVVEZ1kxQzlCWHpzaEplamtQanB1Y0Z2OXJyeGhSY25rb1BPdjJ4OHljVzNSVU1jNjgtYlBvUVZLa25QdTFQcDBhVUhsc0l4T1VXX0dhZlRoMDd1UUFXRWRGWnJKTHRzc3lWbW9NRHNyR2RTSHFqLVlpZEVMaEdKQzAyeVRJcFFqZ1V3WkhGVXZDbkQycE94eE91S2tUdGdDbGUwbVNhTXd3MUNkMXE5YXlFNEhFVWNxWW90MzRpOVRBcXIyRkZqX01uS21FeUhYMlpzWXU1b3dYbzN6eUdZOVdialFlQnJydHd3aHg1Z2tHQWJFcG9UNXpDVzBUTkNWLWRlZlF3S3cyMU1LMjdTX0l2cmU3Wi11ZGJFTVEwU2pmWFF3aURwaXZzN2hBa3JxaXg3bTJXNTNzU05nS3lMNUNUOVZmWTMzV1UtTFVlcVh4WWVWenZyblQ0TjdzWUdRTElUc1Y3T1gwMU5EN3V1Tm8tMFpXUFlVcDVpMjExWDA2U3A2dnJZVEhqazIwZUpyVldRXzBsTnpEZFpqRndqUjloSGNaOURDUUkwZm1TNU5VcFBwcE1kd2dQOUNSYk9rSUVEbEhOMElGQWJfVlNOMmNfUUs3YThGZjRscllhejBuV0JSN1ZDX0RZZ0VzVUhjeF9wVG52Z19DV25EQ3NSdlJJWVBCdHBRWi16VGlrQkM4d3ludFNoUXQycy14TkpTNlN6MzZoTDJ4c1BXV2xpcFNOdkVPN0NYUHJ2aWd2Y0xFY3FjVmpsdzV2MGFKOWh6ZmFpZzlTTDdfZzVhSXVkYnMzRExaeHZENHJsc2NLaDQ5Wm5GSzBOQ3kzRUJUcXVZcG0xTHl0RjBlZ194ZXRsZzFfUzZkX19FRTk1UHNGVExXVTNXSDdzV0lVSTBGbkdWbGU1clhvNmxfanFleVRGYzdieDFjMGJtc0dzWU5EbmlSWlY0Wjk0bzNqRWpEVEIwcHoxWmpRQ3YwS0ZzcWY4aXdYRG8tZVkyeVhvUnlySUs4dUo1c0tBWXpSZ1ZwVUhWUE9jS21Id1VlSGt2a20ydmhNc19kNXBVTHVGaWtiSUFlajd1VjMySHhQREFITmlxU3piNmdtOXpNRWdLQ2owS3p5QnIxTGJveVd1WGZDdVR1a1JGblpNZ3NqWUYxbFRiWHN5b21CMlVTZ3dWek1Leks3VWJ1ZTlzbWNjNEJBeDVWTHE3dXN3MmJBM0Nrb2FrUEV0Q05ZSHpTbnprZmtkLXRqUHlVTS1yTHpobTIwMXgta1VmTlFYWjFVZ09rTG5PYmZZMUYzeFFwSWM4WEtoeFlKTXRyLVVnbXJ2bEs0dVN4N28zMXFBUUMybzZnOFNKSE9JNWdfVWo5WVlkZzF3aVU4bEl0ZnRPN1VjaVA5N2txUlVrYmtINXoya19IYXlUd1pDTlpnT1E3Ym9wSXg3NDZmMWpHSWdzRmg3cjNxdzFjTnBZY3YxSERXUHdhakh3dFplSVVWMG1IeFdQdEZITEdWLTBUVE5GS2JTUlY3WGhDTXJDdnR0bU9PTFc0X0dDc0p3c2hHaEpRMHotWlBEM1dzODNqN1lSenFoRVRhU1RCMDcxR0NUam1uYnctUjA0cjY0bXlxS0E0UmQxNFdmSUlMVm5MZ0g3RmZlYkJHZjJGbm9DenJYbVRoRUMtY2MxY01ZUUZ0bjd6VHhWUEVtc2hFbjFTWTRyZ1pQR1phLVlLWnFfQjhaYUdpSEJORUNvRGVXNG9BdkRJUl9KNVlCVHViMUIwTUZISDI5UnEtaFFfQjczeldoVkhyaVRnNGUtTlcwMzdlOXhPYm5zT2FEOXkwQjRRbU5YV1p1MmRiTVVnYVljX3RkY2Y5N0hEYXJibF95RlVaWGhMZk8zazhEeDExczI5WmpmUlNXV29meTRFUXhSSWRBekphcDQ4dWZXVEhwYXMtOGlyWkd2RnNkdGVHZk5raHVScnRkTEdkbG9MTDNJV01iSG0tTDV6QXdDWWNYaE9DMUc3aUR6eVRzUWFCZkVPdlowdV8tWkFybS1PTEpKZlpaUVhJVzEybTFJOTJWcThHTWpjRmlXdm9aLVRIcnpMLTRqVl9GNlp3SVJQZ2xwaXVVTDl4TnhjWUpvenNFVFVZdGhhODRmRUUwM0E4MUdnN0RsX2hKWXBuOVRuZVU5TDBzLThSbkdKck1Zb2lYRDVPeDN5R1Q0ZkZRTzN4ZVRldFlhRDJ2XzNQY29fOFBkdzJBU3VNd29La2NnZkNoS0EzZHZBek1BbHoxRkNnRXh0OHVicDVPVWs5THZtNVJ4NXZJZjZ5a1hPNlJUb0ZoNW1Bb2YwdkREU25jenR1T0hHTVFiOS1ITVlnR1FCV2IyQmhGcGpmQ1FkRzlpczdmMlB5U0luZW5kc1I5LXRPV2hmVFJMb1VnRlU3VDBwRGd4UUtXalVXY09XNThEQkZNc3hxSEhvMFR4QmU1Q2FKb3JsY2NiOGE2LXRJMmR5RFVZSjd5N3pDQ29maC1CRkQ2OEZmZXRoeGEzZ053VmNFQ2NwMWtIbldzYmdmSVNoX19SVkpxVDhmb3ZQU3NPSFZNSlhUcXliVFhMQzUxak83enk1QXFHM0ZXX3JJWnRzRVRseUx6Qm9wUUkycDVNZHJNakJxM0NLVjh0QUpZXzFSRTFKbXBZSlViWXBVR244NjdXMURwVkw3WWZVV3Vhay1UUEszVHVBLmh3dGtibzBkNVRocVZndEFkS2xlemM5Q0I3MVdjOHpkZ1FXdUs0am4wRDA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "693", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:04 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=179;da_age=2836;rd_age=6030;brd_age=15864;ra_notif_age=529;da_notif_age=3361;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "64585104-2b60-4a44-a1d0-25cac516bdce" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "693", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:04 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=179;da_age=2836;rd_age=6030;brd_age=15864;ra_notif_age=529;da_notif_age=3361;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a51a9c2c-4821-427c-8210-e280ecfcbd5a" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key%21@%23$%25/backup?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "private", - "Content-Length": "3420", - "Content-Type": "text/html; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:04 GMT", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff" - }, - "ResponseBody": [ - "\u003C!DOCTYPE html\u003E\r\n", - "\u003Chtml\u003E\r\n", - " \u003Chead\u003E\r\n", - " \u003Ctitle\u003ERuntime Error\u003C/title\u003E\r\n", - " \u003Cmeta name=\u0022viewport\u0022 content=\u0022width=device-width\u0022 /\u003E\r\n", - " \u003Cstyle\u003E\r\n", - " body {font-family:\u0022Verdana\u0022;font-weight:normal;font-size: .7em;color:black;} \r\n", - " p {font-family:\u0022Verdana\u0022;font-weight:normal;color:black;margin-top: -5px}\r\n", - " b {font-family:\u0022Verdana\u0022;font-weight:bold;color:black;margin-top: -5px}\r\n", - " H1 { font-family:\u0022Verdana\u0022;font-weight:normal;font-size:18pt;color:red }\r\n", - " H2 { font-family:\u0022Verdana\u0022;font-weight:normal;font-size:14pt;color:maroon }\r\n", - " pre {font-family:\u0022Consolas\u0022,\u0022Lucida Console\u0022,Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}\r\n", - " .marker {font-weight: bold; color: black;text-decoration: none;}\r\n", - " .version {color: gray;}\r\n", - " .error {margin-bottom: 10px;}\r\n", - " .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }\r\n", - " @media screen and (max-width: 639px) {\r\n", - " pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }\r\n", - " }\r\n", - " @media screen and (max-width: 479px) {\r\n", - " pre { width: 280px; }\r\n", - " }\r\n", - " \u003C/style\u003E\r\n", - " \u003C/head\u003E\r\n", - "\r\n", - " \u003Cbody bgcolor=\u0022white\u0022\u003E\r\n", - "\r\n", - " \u003Cspan\u003E\u003CH1\u003EServer Error in \u0027/\u0027 Application.\u003Chr width=100% size=1 color=silver\u003E\u003C/H1\u003E\r\n", - "\r\n", - " \u003Ch2\u003E \u003Ci\u003ERuntime Error\u003C/i\u003E \u003C/h2\u003E\u003C/span\u003E\r\n", - "\r\n", - " \u003Cfont face=\u0022Arial, Helvetica, Geneva, SunSans-Regular, sans-serif \u0022\u003E\r\n", - "\r\n", - " \u003Cb\u003E Description: \u003C/b\u003EAn application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.\r\n", - " \u003Cbr\u003E\u003Cbr\u003E\r\n", - "\r\n", - " \u003Cb\u003EDetails:\u003C/b\u003E To enable the details of this specific error message to be viewable on remote machines, please create a \u0026lt;customErrors\u0026gt; tag within a \u0026quot;web.config\u0026quot; configuration file located in the root directory of the current web application. This \u0026lt;customErrors\u0026gt; tag should then have its \u0026quot;mode\u0026quot; attribute set to \u0026quot;Off\u0026quot;.\u003Cbr\u003E\u003Cbr\u003E\r\n", - "\r\n", - " \u003Ctable width=100% bgcolor=\u0022#ffffcc\u0022\u003E\r\n", - " \u003Ctr\u003E\r\n", - " \u003Ctd\u003E\r\n", - " \u003Ccode\u003E\u003Cpre\u003E\r\n", - "\r\n", - "\u0026lt;!-- Web.Config Configuration File --\u0026gt;\r\n", - "\r\n", - "\u0026lt;configuration\u0026gt;\r\n", - " \u0026lt;system.web\u0026gt;\r\n", - " \u0026lt;customErrors mode=\u0026quot;Off\u0026quot;/\u0026gt;\r\n", - " \u0026lt;/system.web\u0026gt;\r\n", - "\u0026lt;/configuration\u0026gt;\u003C/pre\u003E\u003C/code\u003E\r\n", - "\r\n", - " \u003C/td\u003E\r\n", - " \u003C/tr\u003E\r\n", - " \u003C/table\u003E\r\n", - "\r\n", - " \u003Cbr\u003E\r\n", - "\r\n", - " \u003Cb\u003ENotes:\u003C/b\u003E The current error page you are seeing can be replaced by a custom error page by modifying the \u0026quot;defaultRedirect\u0026quot; attribute of the application\u0026#39;s \u0026lt;customErrors\u0026gt; configuration tag to point to a custom error page URL.\u003Cbr\u003E\u003Cbr\u003E\r\n", - "\r\n", - " \u003Ctable width=100% bgcolor=\u0022#ffffcc\u0022\u003E\r\n", - " \u003Ctr\u003E\r\n", - " \u003Ctd\u003E\r\n", - " \u003Ccode\u003E\u003Cpre\u003E\r\n", - "\r\n", - "\u0026lt;!-- Web.Config Configuration File --\u0026gt;\r\n", - "\r\n", - "\u0026lt;configuration\u0026gt;\r\n", - " \u0026lt;system.web\u0026gt;\r\n", - " \u0026lt;customErrors mode=\u0026quot;RemoteOnly\u0026quot; defaultRedirect=\u0026quot;mycustompage.htm\u0026quot;/\u0026gt;\r\n", - " \u0026lt;/system.web\u0026gt;\r\n", - "\u0026lt;/configuration\u0026gt;\u003C/pre\u003E\u003C/code\u003E\r\n", - "\r\n", - " \u003C/td\u003E\r\n", - " \u003C/tr\u003E\r\n", - " \u003C/table\u003E\r\n", - "\r\n", - " \u003Cbr\u003E\r\n", - "\r\n", - " \u003C/body\u003E\r\n", - "\u003C/html\u003E\r\n" - ] - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/restore?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "28", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "value": "ZG9lc25vdGV4aXN0" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "78", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:04 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=179;da_age=2836;rd_age=6030;brd_age=15865;ra_notif_age=529;da_notif_age=3361;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "bbd7d30a-5079-4b3c-b214-b17d4937bf39" - }, - "ResponseBody": { - "error": { - "code": "Malformed backup blob", - "message": "Backup blob is corrupt." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/backup-key564789157?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:04 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=179;da_age=2836;rd_age=6030;brd_age=15865;ra_notif_age=529;da_notif_age=3361;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "abb1864c-b55e-4a24-bbcd-d9b771e0fe88" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157", - "deletedDate": 1652820485, - "scheduledPurgeDate": 1653425285, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "87", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:04 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=179;da_age=2836;rd_age=6030;brd_age=15865;ra_notif_age=530;da_notif_age=3361;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "dd22a459-ea4e-4005-a3a1-e93355c9ed0d" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: backup-key564789157" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:48:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=180;da_age=2837;rd_age=6031;brd_age=15866;ra_notif_age=531;da_notif_age=3363;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "136e5c20-ebf6-4d87-99db-daed7d7c137f" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157", - "deletedDate": 1652820485, - "scheduledPurgeDate": 1653425285, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/backup-key564789157/7e00d10ab67b4bf0ad4abc0c5627fb16", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "rlAqyi_aMVsbwVl95JK6n2mDY_6ce0noCvn5DlIw4jcudndoNDwnojr7PkuMzxNu5lTwXcD2ePtuBaeHOyD2mX7Y9sWjp5DHlVVhf9Z1D5mKzSRYDgPnku2zVHR9Nr9aDqB8TT9MuNmM-mekCmL27szlXlnuEDsJ_1ma5qIKmnQ6BSH8Fx_KioLrDiEkvOCENCOsW1atyOxmalPSWzrW7-uYs65LEpn5Gz_3rmFqKjkL9fhilrLInzIf3ZCt6FpPkmNCbGDJkWPFS-DsOU4CRJGNAd0pcdZLni1EbULJvs01wgflwfKASeF-dUMJ_euk7GN8Pz8Eyx65j_c0pcptUQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820422, - "updated": 1652820422, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/backup-key564789157?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:48:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=180;da_age=2837;rd_age=6032;brd_age=15866;ra_notif_age=531;da_notif_age=3363;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1ee81e65-2b81-46db-8c8e-8a665dcf05ae" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestBackupRestore/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestBackupRestore/KV.json new file mode 100644 index 000000000000..739443fb8e90 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestBackupRestore/KV.json @@ -0,0 +1,492 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/testbackuprestore750667021/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:21 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "6ed45242-6330-445d-8b93-265b88e69192" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/testbackuprestore750667021/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "700", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:22 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=0;da_age=6445;rd_age=6445;brd_age=22932;ra_notif_age=290;dec_lev=3;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "859a22d5-0c4f-4742-b965-f202194ee092" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w-mbabhO44_b0tOjANZb0txfHJsA6al9n9xnQ6Z4PwW6cLNsXLN9HJmQA7OESv96HlPs3D3ekjryO4HwqS1DhahCXvB8t3dBmtI-kJfZMwOii8ziwDOIMD45qCkZsdAK5WiGOHbdYfd7xi-zP7uzF0TZDCW8k1y9BkC6gpW4Aq7Ks8cnyBPBUWsQ_s3VItweHfS5Kh6ggcFZmS0uICn7FGWB_AZ0iBne4BaAgCaITOSe0bWixp63-z6J8n1Tefd8unn6GI6S5RiCHFpnMT1bSp8mm3G_yCBPBJlVIpjdfQzcuEEB_IaxS5GK0X6u8oFkcOu94rru7PhiFfM8o2IRXQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testbackuprestore750667021/backup?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "9191", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:22 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=6445;rd_age=6445;brd_age=22932;ra_notif_age=290;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "aa62718f-87a6-42d5-8152-864e8116254e" + }, + "ResponseBody": { + "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUptWWpsbU5HTmlaaTB6WWpsaExUUXdZekF0T1RkaVlpMHhZMkl5TXpkaFltRTFPVE1pTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuTlQzX1dubFUyM2EtSDg3VGkwU3pQakxVc2RIZHdwTG96TnZoUjFlRVA0Rk5rSFRsdmZRelNTUzVkU19iV3pSY181Zm1sWVF0NTNfTUFYanhYZnVOV2NXeGh5YUoxWExIYkx3VVhTVzBlVmh4ZWFvdUNnMXNhbXNjVnJkVkNkQThGd0JpZ3RzRjVsR0xVcEFtUFc1dEJHZ3l1ZU1XVVNrYWlRWlpFa0hOZWhBMDVNNHBwa2tZUlZwVy1VTlNyQ3NQRy1PT2YwMjRuREVhZVcwcXNaTC1wZDZ2aC1XRVBtQkNlcTdjLVJKMm02RkdES290dTRSV2lBY210TUt2RGd1ck9wa2xiZGNoalRyejN4SkE5TXB6NGJpLWZTNHJSN1FvNFhJMXFfUW1yVzZYcTRjUFdHM19XT1pVbzEyRF9SUVVMX0toWk9wMGtwbms1cllIV1gwNFFRLjh3M2RHeVZBcVhFZHBqUDNsN3Yyd1EuLW1QNDVmcVhFbDM4ODZGVERrQ0JlMVNyemVpSkR2WEdqTFhmWDNHdTk0ZXVjRDg1SlNpblZXMEdiY2xmckF3cDVHYXFFZl9NZ2dWM19Kc25jRC1aSE1UM0M5T0trTExCTnRkWjF0T3JLeWVQMU5DXzBBU01SajU5NUppaENIa3RfMXFwcmpDd1lRQW8tcnJFVFptSkZITXI3T0V6d3plZ0RyME9TNUdfOFdaWDdXeldzQjJscUJHX0kxcnFvMmpKTlc1ekJJWTZMdFIwM3BTYmxLNldLNUs2N2JyVFl2aTZmZV9NbWRpaTB5WjR2dUd6akYwTG1CVWRuV3ljOEVfc1R5RTBsSXgxdHJMcDBscUxlMWhqTmJJVXBWMHhGa1hINmhEU0tZdl9Nc2JHOVkzOG56OFNUd01rT2RFdFRCZXBrTmRzVE9TNndoY2FrYVlaOW9DVS1BY1NVM2p2ekFidWFjNy1mempxTWhRSU5jLThzYURUdjBDcUp3aXoxekRWME9JMXlMVWpsazlKRWk0dzRReng5a0tkWV9tLWcxbW9kZ2d5dzhmSVNwWFpfQnkybjQ5VzEtVkIwNnNrblNDcEJIVjhWdDRBV2R3ZFNzSlpQTHJMU2gtZXU2TFhENVM3SGFEMjlTQll6ekF2cllKa3NXdEhHYzFNTDJ1RE5iREZvaEFMeVlqSmVPYUJlNWRtcXgtSUxUN1c2NnZkS1VQN0JwdGVGclRiMDQ3MUNiYTBBbG41RmxXU0xWR1ViaHFEclpUeXBUZVMxM3kwOGJ5VWN1b1JRdk9wVThudm8zalVpdHBRa3h2NWJialRxVVF6M0hMd2JFdmp6c0dmWHZFaFBXR0V2V1lYbFdILWNLaGM2ZVFqaDl5bVVZVHhlaEo1Vno4UEVwR0REVkhDN1k1eFpWNlJyV2oyR1FjR3NrVGdoMGhHLTU3SHdhSF9keUlFQzNvYzlnMGJ5R0NyZzhiNm12cjBtQzZWOFVZWDdOQTBTM2ZGeV9uRWxGM3FEblduSVNyakRzUHFuVEh5cXcyd1c2ZGotdHA5ZmxqNm4wTl9JYVA5Sml5Y2xKVHpkeDNaNUhtR3VvaHRHT09rTVZPZnJyX2dNRVJuWkotNGRsaDBuOTFxdHNpdUJySVNMWU9BTFZtNFhzRkZ5NmRsTFZEU3FTZVg3V3pzOHMzdHJocWJCbU5yX0lsSC03Q0NNd21EZXdUQVJVQ0VxdzY4WmxtWmMxWEtvOExuYmt0THVfY2hZUUlYYWJselQxVjNMQTA5eXFIcHQzZjkxd0E5ajY4d3U1VzBoODlDaHpwaWVaM09tdnJlVE9WYnMtZVZRY2hQZzFHajVYeDFVRDdvUUpJdXRQVXNtb2h2bnNkTjJJTUZNM3lPa2xSMnR3NklxbkpJQ1Z0MkhCckFHbVlwOHRRbGNOLU44eGtQZHhjOTVyYVlOanQ5cnhWbHFNRmtxWjVMZS1WMUFwM3Bic2JQQVowQi01V3VhNnc1MXFfZ3FfZHdXbGpMXzZDWFVtN0g3Q19LWEpsOFk2Z2t2ZXpDakhPTVotWmNlTWprUklvRkIycWpESE54VzBWNzU3bk52RTZYVkRwdzg4S29tMk9NVTJlQmpHVjRPSnRFNHQwTFkyVjl1Mm9QS0tZY0p6MUNHYmxDcENEaUI4dm5UMm5NRXpMczFKSl9fdFctd29yMGczaVJaQTJkQkpLam9weEwzdXJVTjVoQ3pMaEJvVnpyTnhRSlBlRGJIQWFkVHE1YnozQkE0aEJTUE9EV2hlN2dqZDRQYXB5WXpNZWctYl9FbEJrdm02bXdvQ19xU19rbWp0WU80d19HdlJPY3QySHpNMWpBTTVZSHNiVFVXYVRZbEZiYUZVZmp1bnVpbmY0amd3cnAxbkhxcEJKWUU1M3RuYmRGNWwxOEJlQS1TR3dFWUNtbzRUOTVYdjdmZ1BET3J2UDJfdVd0cGZTWkdyZXhJX2tRMnpwRHhOVFYyM2ZfRDFPaldLSUYwZUc4NjJ6NmxFX0xkc1NzYzJYVVJZLXd5TXE4aHIxQnlkRzlMc0V4ZWhRRzJUN1Fab1ZxZ0dtVjBzX2VLUFMxSHhoUm5sbDVWTmhPbDMxOG50VEVlMC0yRG03dUJQM19uVVNEMzE2d0NsanVRZnlyZXFIZThYelR4eGlHY2h4a2hnSFdGTnY3dmdmVXNHVENrYTBkSVBQRm9Yelc4ZUxGV1V0WmloYkpBa3doaHRPSWZLLUNxc0hyUllKb05NZWFqaDVjRmRqSTczc1hPaTQ2S0Z4MGlMb1F6SVlOV0dDakt5V3FNWE9NTEZLaGZ6RWVRblBwUlJwYS14VVF4UldrN1J4RGFvaFJpSXNSYUZmRVdQMV9ldzExVVlaUWlsTjBKZGJiU1l2NkIzNDN4bWRQYmdISzhqR2otX2t5SDRCb0lYT19QS2xVOFVRbkU3MFI5YjZVSjdiX0xZUzI2Tk9xZkxIb2ZUbG05MTFWWEZFYTRjRU5EemN0Q2JrR2stQk5mU1M1Ri1GUFlaVVAzSElhODZvQXRlRDhfVEVaVXZyVjI5RVZGeEJIVTBCY3pwRGczaUNMNTJoX0JOWUwzT0JVckx4bVVsVTdFWDctbjFXWVREelk0Yktic2QwSlFtOE12bUd1RnAxMUtlaFY4T1JTbUU5MEQzaWx5QzJJYWpFYUd1MGhucmdYeWlQR05BVG1LLUdHMktRdE1CWTlIUThranVVUzFHVzN2WFg3WWFndWNjOGFaejZhWTZvNi01cjVYT0JRQ2owaENnYjZTd3lhVExLdVQ2UVZmSlItVzJoRXFqSnpSSlZvNmVWQldfRWF5R2pFYTFBckRRN3Nyc3NWMEluRTBJZkVnemJILWdTd0xsUHN5U3NaNUJNN1FWWEJVbGlldlpCNjE2V2hPVWVKcHYteFh4eDMtcF92aHN1UHdWZ1JxZXNJYUtfN1ZjYkdvZGE1OUxKODhFZU9yMkE1cHhFOTdfUEJwa0EzX0NXck1zbWFGbWhlSFNsblNwTkp5Mzh3TlFDOURoTVh0V1JmSUlyNTI5cUs1NGVTbHJ3TkI3dVpIT3NVZlRUSnRnT1dOQkxRU25INzlhYjNGeW01UHJVWUdUa0NsRDl0Q0hKV0pvTjlKUnA0cDQ1Sm9zbTJpVGMxbk5FZnd6M1Y4a1l1VjVGMGFUSEdOZWVyc0dkNllUcEF0anN1OWxRMFdydGk0UHB4ckM1VlY3QmxCeTI2VV8zRTZ4NTl5WndyQ0Y1WURRYUpQeUVzWHFFOUxQNlZka3BiVXotczJZMEZUZFFua3JVSXRiTHdXLW5fMjF6ZG9rV1ZqOUEzSVRyNFJ2MDBMR2ZxVTVLZlpQWDFYMlJMVHlobWlmejc5OHZncU9ZTDNvSm5OTVRtU0s0aG1EaFV6ZmJSOEZXalhTNHFLdTFUNEZuZ1pIQUYyZHJhc0ZHQ1NBeG10YVh0UWU2Mm1zWmNRQjRvcFBzV1dMc2JyT0ItM3BWOEdZNmRzSDNSTlhjQk5CQnNtRUhQX3Zqb3ltT0VXd0ZlZzhVRUsxMTg0ZF9fc1dkSU5wX2xxQ2dJTEtMb0pUUTZFdXExZG5TNUs2VEk3ZGFBRjRsZHQ0WW5QQk5kXzFkaXkyNlIyZWNHb1lSWHgyeE1DQjE4OVRlZGxLWEFjS0xuSnI1M2hjWG1ySF9BM0xWdFg1LTZFS0lVUTJpZFJhcVZNbVVHZHh5OGw4aVoycERoS2N0UWV6eU42QWNxSnNTZE50SkVTSnJWUTBzSjRqQm1ndGVOWUg0NzRxLTJrN2pubjdJVEswcU1WZE56SjFjclhHaHdZb0JvWDc2Q2FBNjZCNGdfd1ZlY2tBMGtPVzdzN05YeTl3S0Z1WTZodGQyRnZ0R2Jac1h6aExKUFVlR2t5Vkxzb1J3STZKUTBRTmxDMXdSclowWV9lclY5RUFVRl9SVzlsV1hSV19tcDIzemUwWVhDb291V0dvTUdHTmVWZUpBWjg4MEdrMm9yVjRVbVRjS1hYV2UwWkYtOUpmMkVDOFB2ekdRN2I3UEYwbHlkcmFNZUgxeGFLTTh1a0U3TUxTWUR5Qk9jdkFlbTBGSW83UTM0aHAxMnoyOW1OMHk0TzNpTl90bWRCQ2s0OUJtUXdsd1ZXSmpSRVpHcTlueW1qZ293UjV6TDZnSUFmTjhtTWwybzRRQnZSeDVmRnFhQ19xSnpnYU9Na2t0RnpMSXJwTTJMQVZlbUJxb0pDQ0lEVzlPUVY2UkN3aWhNdk9KRGtBY0Q4OHJxMENHYVlLOUNmX2h6OVhlWk5JdGNnanVuTkpPa0kydWtKZllmNFhSWmZRUGhHVXNsMGFQWlVIWndTbmZyMmxXd045QXJMLUk0dGkxYU9GUWdzZVFpVkdXVzBUREFfRmFOck5xUGFLcG8xZl91eXJVTHZ3dW9pMUJZY0JhR3BTWk9QemF6ZVJQbTI3OTRBc0dsRS00TGVmN3gxamV2ZlJwbTViV29oZXMxZEZJU19GSzVoTThSVS1BUFpQTFc5ZmwyTlI3cWZ0NjJ6Y21aNi1rMGZtbFQ3VUUtQVdYQ05UbzZwUmc0Y0V0Y1hiR0w4UkNSUDh2empzYUVmM0d1TlMyOGl4RjZBZDhIOUZlUTVEbmpzcjdhdG9fUXhTYnZKWXJFdGllME5ybWl1NHNNMG9BOGw1bV9QNG9mY2ZJN0kweDE1Sl9LUWVUbWF1VEpuc2s2bEhNSzZESFlLa0Q5Z3ZJZ3BObDJqQTNxaXVIMW9HYU1BUVhjRlo1SThvU2Q3YjZoVy1HS0FwWVcxR1dYbmk5Y19OOWw0bmJzbGxSdExidGx1TnN4ZE1QYXhITmxRWFZ4NnljS3l5RVVlSHc1WW1VR3dZcWZxdVlwR0pUbWxpTDJ4Qk9TVTRnUDBWTXVoT3BJMXNFMEhGVnhqeVJjaVZtOUJXQmcydlNqSVl4dDRMb0xiSzFTZkZIaVotQjh5aHhuMlVQazVmWEdQQ3dYc3d3Z2hjanJDUi1qNXR5ZHdxSk1JSnpTRDVCZ1JFQWJ2OTJyRFVaT1pyMWJLS1Y1TlM2V1dsYVJQLW9lemhxd3d1RFg3RXlWakFDTzlWSTNZVnk1R1lRLVVmRlotRDBqZHI1ZU93QWhMRjE3VG1MNGUzdy1GaFhvQ0Y2NldGbjkzSnU2QTZaRVpfekFKMGFienVpc29GN2F1WHhySkotQVp0M0tqZG1NS3pjU2FmLS1oYVYyOHhhbTJKRzZTZ1pYMzZKTDZsRlV5NDY1cEotRDVjTDFqdWp4UHVYY20xWlhTOVVSVFNwOE5Ea3dhTHdDRkpEMWJlbVRGeWFEdjNQdjRsUUc2YWJrRG51ay1rZFpNcTBWSVRodk1UU3NnSW1hREE5d0ZVSGNHUnJ3YjJqbzloVDR1Ym50Rk1veV9uMFpZbE1EM09ZMmMzRkRFUXNLaHZMVEFucDl4Y25XRDhpSkdLLVhOYVJja2lxNmdJVHNHR1hOd19aMHd2Z2RzbmE0M2ExWEVqWUpVWGNVM3l6cmJGSnhJNXExWDFoUUpvdnIta1diSEJ0MktBTWtma2x3dENEdW8xUE01MnlUOWNEMGZNLW1xRGhVcEtWYkZuZnJvMEt1a3FVSWdrMnBPRlVNNklvMjJMbk84dEVUSmtPTW9lS2ZMUnJ6Q2M2WEwzWjRkeGpqTTNaaUFyWi1mNU1QR2pzRk9YblpIUmswN2xqU1NpYldkVDRKY3RVUUd3eU5lWVRMLTVvN2xLZ0RBc3F3VUFxWkJvS3ZpSnd0UkYzSWZZZENxYXJUN2tpQU5jeUpta21PUndMdnF6aEs3YmppOUNuUHZXdWFwd0NzaElkQzJtdENfM2hqclpwV0FveFZXeTlYMzFIMVhzbC15VUFJZUFqYUlfUjNRdTVNdWFvQU5NajQ5djRZNzhpeFkxRFdoUGt6VEJRdFlkdVd6R3YzZ3dscng1ZEE2Y1lTeHk5OVJpcWFXV2RxQ19pTl80czdxa1NManFvTzA0akZZSmVNWEVWZjkwRmFsNnlqb3R6dGVxYjJ4MDV3UUdJU1B2UEJKZFNoUHRHRjFoMV8tdkRuLVpaMTc1aVEwY2M4REVsdmswOFFrRE56b2o5YWx5elRmZm9Fb2ozeXhvSHVtaE1OZDBwTmdvRTNlR2N0T2s4RFZEN1hVZTF0TUVBRUZRN29Ccnd6WjJyM1FkckY4SF9jRzRyVllad2ZqWGFneVhxVDQyRXdVYVhOTWF5UVNXbWkwODg3Rzdld0U4aWFTX1J0Njg0b3FsdkJ1R3pTb0wtbV81djg1d2xXVWdwOFJ5ZEVmcGNpalFzVW42NU5iRkl4SU9IMkQ5ZUd6b0syM2d5MzdVLUNkbi1LOGQ4NWI0cGpvdkcwRldJY0JnZmFzaXdWYmgyZUJJazVackswaU1HWUVqWHY2aVNweFVEZXRJcld0Z0lhYkRiX1liM05jXy1xMnlEMTRTaEdfUlFHZEQtUTF6UUplTVF5S2g2RFJEM0dBb0RMa3FJZmFweWV0b1dOSy1tbzNPWFRYekFXekZQNmlINmpLWFo4YmVlZ0xXaXhfMlJBeEJObnNLQlR0VV9oWUtrbHNZNld5RUlfS0E4THJvSklETm9WTThjOWI3RkpOSkFaMU1nd19wU0dVODdjMmRJYmhOaEZ4aTlNbmtsZUJ4Y21mTm1YQ3BqTThkUWk2UEFNUm8xcjU0Nk5wNzF1WWRVUGt5dDZ6QmhmWFNPeHEwSVBIbklwbXNxckJ4Ynp6WEJaRXJGVXBaQkpHaWlMMDh4R016QmNOeHBkYUFCNXlYcGpPT0RmRnNqNno3RkxyeG9vQVEwT3NMUWQySmRWYnhZT0VzdHl5MHVyRDdEX2JKcG00R1ZNUVBpZjZIb3N2NUU2ME1kMUdDWnRFR093NVFTalVHTGp2WDdScWdBaTZoOWpnb1dzLWtiWjg0TmQxRkx6YkkwV1VRYkFqNFd1R2dkVERleDBsQ1Z3RjBudTFJWjh5R0cyck9sWFpudkdMTGtDeHQxbG9xY0NtNl9GSjFTQ09ubGRyank0M0x6YjFxSk84aFJXQlNwb0JaU2R0ODJQN3paUzVsS0N2bHh5djlvNXBBLThiQTJaUUJVVXRFQlVxcjVQWUZIal96Tkt2UjE0TzI1ZDZaLWZQRUZkMW5QelFxUEd1VnA1VW9YeXctWEVJeG5JSnFPSkVNVktOeDk3T0ZmTXh1NXN5eVJUazJPeHFwRmxUWjAwQnRvZjZEeFBDNHAxRllaOHJoZkl0WFAxd2hhckNfVnRXZFVNTm8zUE9wVV9NaF9fQlpVWDY5bVV4UXNJcTBTV2ZFenk2RTlXb3pMUk9GU2lNNGRmWXJpQnhXRU5zSVE1Umh0SHVmZktsRjZaa0M2M3VqMlFGdGxFUVlLZjkzaEtDY3dJVUEzNWxTSjZfS1VSZVNFOHNReXlXRmI3cTdKTVp6WXNCaUZrRFB0UEtSamRjMFJKV0ttcS1HR0xRWTFXeGVMY0p2QjhEREVTVy1XNUtnWHJGekp5R1duSTFIVkZGbVpySGxNSHliMFlhSTd4NVJxWkxhR202S3dNV3E3U3VaRVlPR29xdlVYTFQwdE8wUmpYc0hHMVpBUUVHUUhnNDVvejFsNlN0MV9XU2NNM3QtNWlKTGNJcVpVdVZGa1RNbVBTRHVBTFItMlRxRk5ldGVyRndJUGoxNDVjRjNvUUFaTDZhZEdueGNTeWxJU3BWUDA1WFNaSzJsbFdzejN1Szh5RTU4dlFKcUl1UDhRX09keS1FbHhjbF8zV0lYVUhIRWhDNWdYNUN4ekJRUUxQNjh6UVdvekRlVjRhbnBZLXZoeHd2SUxYTVY3MF9Iei1QaGhUX1BMQkp4Y2tpMXhRVldDMnNDcFhrSnM5SVNqWGk4RDJIU3E4QkpCN1lrcVNmRUl6U24zS3pxQWxjTWRTMVROVXB1SktfdGQ3UHREZlZ6c2hXajhxQ2E1WGgzM3YtYnZNOFpiTU1xSV9vMndrdWdjU3I1VFlkd2NVTG9vMUZJZkNBLU9YZGZxVjBqV0NLbWwzMi1VWnU1R016NmpJYi0yMXV6Qi1HNWlBRmhRTjZvcVpPLXNld3dhSk1QLV9qVUFHSGV4TXl6LXNsaUtsYW9ONG9hUVNnNFhfblpZSHJqNXUzeHRiVmk0WGpPUHppMGE5cWx0Mi04dXF2a0JQNEVRMEJMUnBxb1NhUnVfdjFMNERuT0ZQMjJLcXJKRGFpRnkwM3o4RVA1NUxPTVk1MUZiZWxyX3kwXzRxVngtUVI1V3VfS1l1cHZtWVcyMW50SG83dHU4VFdpTFF6bllHT2FHN3h6MjU2aU1GVk1zY2UtRFdwM3c2ZkYxRGcyeWVzeV9BX0FZbUZpUDdBQWZ1ZlVzLlhkWmRmdTFNU3BfOU41Nm54WUhQbG1VOTdsc1AyQ1lhODdvNkx1bWxIVnc" + } + }, + { + "RequestUri": "https://fakevault/keys/testbackuprestore750667021?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "845", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:23 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=6445;rd_age=6445;brd_age=22933;ra_notif_age=291;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a5f4d372-ddb6-42af-8af6-281d6e5c0bf2" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testbackuprestore750667021", + "deletedDate": 1656356364, + "scheduledPurgeDate": 1656961164, + "key": { + "kid": "https://fakevault/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w-mbabhO44_b0tOjANZb0txfHJsA6al9n9xnQ6Z4PwW6cLNsXLN9HJmQA7OESv96HlPs3D3ekjryO4HwqS1DhahCXvB8t3dBmtI-kJfZMwOii8ziwDOIMD45qCkZsdAK5WiGOHbdYfd7xi-zP7uzF0TZDCW8k1y9BkC6gpW4Aq7Ks8cnyBPBUWsQ_s3VItweHfS5Kh6ggcFZmS0uICn7FGWB_AZ0iBne4BaAgCaITOSe0bWixp63-z6J8n1Tefd8unn6GI6S5RiCHFpnMT1bSp8mm3G_yCBPBJlVIpjdfQzcuEEB_IaxS5GK0X6u8oFkcOu94rru7PhiFfM8o2IRXQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/testbackuprestore750667021?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 404, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "94", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:23 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=6446;rd_age=6446;brd_age=22933;ra_notif_age=291;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "6dac70e8-64a1-490a-ab09-81a58aa03504" + }, + "ResponseBody": { + "error": { + "code": "KeyNotFound", + "message": "Deleted Key not found: testbackuprestore750667021" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/testbackuprestore750667021?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "845", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:33 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=6456;rd_age=6456;brd_age=22943;ra_notif_age=301;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "690c7343-a703-4dbe-acd1-fc86346d9e72" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testbackuprestore750667021", + "deletedDate": 1656356364, + "scheduledPurgeDate": 1656961164, + "key": { + "kid": "https://fakevault/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w-mbabhO44_b0tOjANZb0txfHJsA6al9n9xnQ6Z4PwW6cLNsXLN9HJmQA7OESv96HlPs3D3ekjryO4HwqS1DhahCXvB8t3dBmtI-kJfZMwOii8ziwDOIMD45qCkZsdAK5WiGOHbdYfd7xi-zP7uzF0TZDCW8k1y9BkC6gpW4Aq7Ks8cnyBPBUWsQ_s3VItweHfS5Kh6ggcFZmS0uICn7FGWB_AZ0iBne4BaAgCaITOSe0bWixp63-z6J8n1Tefd8unn6GI6S5RiCHFpnMT1bSp8mm3G_yCBPBJlVIpjdfQzcuEEB_IaxS5GK0X6u8oFkcOu94rru7PhiFfM8o2IRXQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/testbackuprestore750667021?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 204, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Date": "Mon, 27 Jun 2022 18:59:34 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=6456;rd_age=6456;brd_age=22944;ra_notif_age=302;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "4670bac5-42d8-422c-b0ec-ec863173693b" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakevault/keys/restore?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "9191", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUptWWpsbU5HTmlaaTB6WWpsaExUUXdZekF0T1RkaVlpMHhZMkl5TXpkaFltRTFPVE1pTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuTlQzX1dubFUyM2EtSDg3VGkwU3pQakxVc2RIZHdwTG96TnZoUjFlRVA0Rk5rSFRsdmZRelNTUzVkU19iV3pSY181Zm1sWVF0NTNfTUFYanhYZnVOV2NXeGh5YUoxWExIYkx3VVhTVzBlVmh4ZWFvdUNnMXNhbXNjVnJkVkNkQThGd0JpZ3RzRjVsR0xVcEFtUFc1dEJHZ3l1ZU1XVVNrYWlRWlpFa0hOZWhBMDVNNHBwa2tZUlZwVy1VTlNyQ3NQRy1PT2YwMjRuREVhZVcwcXNaTC1wZDZ2aC1XRVBtQkNlcTdjLVJKMm02RkdES290dTRSV2lBY210TUt2RGd1ck9wa2xiZGNoalRyejN4SkE5TXB6NGJpLWZTNHJSN1FvNFhJMXFfUW1yVzZYcTRjUFdHM19XT1pVbzEyRF9SUVVMX0toWk9wMGtwbms1cllIV1gwNFFRLjh3M2RHeVZBcVhFZHBqUDNsN3Yyd1EuLW1QNDVmcVhFbDM4ODZGVERrQ0JlMVNyemVpSkR2WEdqTFhmWDNHdTk0ZXVjRDg1SlNpblZXMEdiY2xmckF3cDVHYXFFZl9NZ2dWM19Kc25jRC1aSE1UM0M5T0trTExCTnRkWjF0T3JLeWVQMU5DXzBBU01SajU5NUppaENIa3RfMXFwcmpDd1lRQW8tcnJFVFptSkZITXI3T0V6d3plZ0RyME9TNUdfOFdaWDdXeldzQjJscUJHX0kxcnFvMmpKTlc1ekJJWTZMdFIwM3BTYmxLNldLNUs2N2JyVFl2aTZmZV9NbWRpaTB5WjR2dUd6akYwTG1CVWRuV3ljOEVfc1R5RTBsSXgxdHJMcDBscUxlMWhqTmJJVXBWMHhGa1hINmhEU0tZdl9Nc2JHOVkzOG56OFNUd01rT2RFdFRCZXBrTmRzVE9TNndoY2FrYVlaOW9DVS1BY1NVM2p2ekFidWFjNy1mempxTWhRSU5jLThzYURUdjBDcUp3aXoxekRWME9JMXlMVWpsazlKRWk0dzRReng5a0tkWV9tLWcxbW9kZ2d5dzhmSVNwWFpfQnkybjQ5VzEtVkIwNnNrblNDcEJIVjhWdDRBV2R3ZFNzSlpQTHJMU2gtZXU2TFhENVM3SGFEMjlTQll6ekF2cllKa3NXdEhHYzFNTDJ1RE5iREZvaEFMeVlqSmVPYUJlNWRtcXgtSUxUN1c2NnZkS1VQN0JwdGVGclRiMDQ3MUNiYTBBbG41RmxXU0xWR1ViaHFEclpUeXBUZVMxM3kwOGJ5VWN1b1JRdk9wVThudm8zalVpdHBRa3h2NWJialRxVVF6M0hMd2JFdmp6c0dmWHZFaFBXR0V2V1lYbFdILWNLaGM2ZVFqaDl5bVVZVHhlaEo1Vno4UEVwR0REVkhDN1k1eFpWNlJyV2oyR1FjR3NrVGdoMGhHLTU3SHdhSF9keUlFQzNvYzlnMGJ5R0NyZzhiNm12cjBtQzZWOFVZWDdOQTBTM2ZGeV9uRWxGM3FEblduSVNyakRzUHFuVEh5cXcyd1c2ZGotdHA5ZmxqNm4wTl9JYVA5Sml5Y2xKVHpkeDNaNUhtR3VvaHRHT09rTVZPZnJyX2dNRVJuWkotNGRsaDBuOTFxdHNpdUJySVNMWU9BTFZtNFhzRkZ5NmRsTFZEU3FTZVg3V3pzOHMzdHJocWJCbU5yX0lsSC03Q0NNd21EZXdUQVJVQ0VxdzY4WmxtWmMxWEtvOExuYmt0THVfY2hZUUlYYWJselQxVjNMQTA5eXFIcHQzZjkxd0E5ajY4d3U1VzBoODlDaHpwaWVaM09tdnJlVE9WYnMtZVZRY2hQZzFHajVYeDFVRDdvUUpJdXRQVXNtb2h2bnNkTjJJTUZNM3lPa2xSMnR3NklxbkpJQ1Z0MkhCckFHbVlwOHRRbGNOLU44eGtQZHhjOTVyYVlOanQ5cnhWbHFNRmtxWjVMZS1WMUFwM3Bic2JQQVowQi01V3VhNnc1MXFfZ3FfZHdXbGpMXzZDWFVtN0g3Q19LWEpsOFk2Z2t2ZXpDakhPTVotWmNlTWprUklvRkIycWpESE54VzBWNzU3bk52RTZYVkRwdzg4S29tMk9NVTJlQmpHVjRPSnRFNHQwTFkyVjl1Mm9QS0tZY0p6MUNHYmxDcENEaUI4dm5UMm5NRXpMczFKSl9fdFctd29yMGczaVJaQTJkQkpLam9weEwzdXJVTjVoQ3pMaEJvVnpyTnhRSlBlRGJIQWFkVHE1YnozQkE0aEJTUE9EV2hlN2dqZDRQYXB5WXpNZWctYl9FbEJrdm02bXdvQ19xU19rbWp0WU80d19HdlJPY3QySHpNMWpBTTVZSHNiVFVXYVRZbEZiYUZVZmp1bnVpbmY0amd3cnAxbkhxcEJKWUU1M3RuYmRGNWwxOEJlQS1TR3dFWUNtbzRUOTVYdjdmZ1BET3J2UDJfdVd0cGZTWkdyZXhJX2tRMnpwRHhOVFYyM2ZfRDFPaldLSUYwZUc4NjJ6NmxFX0xkc1NzYzJYVVJZLXd5TXE4aHIxQnlkRzlMc0V4ZWhRRzJUN1Fab1ZxZ0dtVjBzX2VLUFMxSHhoUm5sbDVWTmhPbDMxOG50VEVlMC0yRG03dUJQM19uVVNEMzE2d0NsanVRZnlyZXFIZThYelR4eGlHY2h4a2hnSFdGTnY3dmdmVXNHVENrYTBkSVBQRm9Yelc4ZUxGV1V0WmloYkpBa3doaHRPSWZLLUNxc0hyUllKb05NZWFqaDVjRmRqSTczc1hPaTQ2S0Z4MGlMb1F6SVlOV0dDakt5V3FNWE9NTEZLaGZ6RWVRblBwUlJwYS14VVF4UldrN1J4RGFvaFJpSXNSYUZmRVdQMV9ldzExVVlaUWlsTjBKZGJiU1l2NkIzNDN4bWRQYmdISzhqR2otX2t5SDRCb0lYT19QS2xVOFVRbkU3MFI5YjZVSjdiX0xZUzI2Tk9xZkxIb2ZUbG05MTFWWEZFYTRjRU5EemN0Q2JrR2stQk5mU1M1Ri1GUFlaVVAzSElhODZvQXRlRDhfVEVaVXZyVjI5RVZGeEJIVTBCY3pwRGczaUNMNTJoX0JOWUwzT0JVckx4bVVsVTdFWDctbjFXWVREelk0Yktic2QwSlFtOE12bUd1RnAxMUtlaFY4T1JTbUU5MEQzaWx5QzJJYWpFYUd1MGhucmdYeWlQR05BVG1LLUdHMktRdE1CWTlIUThranVVUzFHVzN2WFg3WWFndWNjOGFaejZhWTZvNi01cjVYT0JRQ2owaENnYjZTd3lhVExLdVQ2UVZmSlItVzJoRXFqSnpSSlZvNmVWQldfRWF5R2pFYTFBckRRN3Nyc3NWMEluRTBJZkVnemJILWdTd0xsUHN5U3NaNUJNN1FWWEJVbGlldlpCNjE2V2hPVWVKcHYteFh4eDMtcF92aHN1UHdWZ1JxZXNJYUtfN1ZjYkdvZGE1OUxKODhFZU9yMkE1cHhFOTdfUEJwa0EzX0NXck1zbWFGbWhlSFNsblNwTkp5Mzh3TlFDOURoTVh0V1JmSUlyNTI5cUs1NGVTbHJ3TkI3dVpIT3NVZlRUSnRnT1dOQkxRU25INzlhYjNGeW01UHJVWUdUa0NsRDl0Q0hKV0pvTjlKUnA0cDQ1Sm9zbTJpVGMxbk5FZnd6M1Y4a1l1VjVGMGFUSEdOZWVyc0dkNllUcEF0anN1OWxRMFdydGk0UHB4ckM1VlY3QmxCeTI2VV8zRTZ4NTl5WndyQ0Y1WURRYUpQeUVzWHFFOUxQNlZka3BiVXotczJZMEZUZFFua3JVSXRiTHdXLW5fMjF6ZG9rV1ZqOUEzSVRyNFJ2MDBMR2ZxVTVLZlpQWDFYMlJMVHlobWlmejc5OHZncU9ZTDNvSm5OTVRtU0s0aG1EaFV6ZmJSOEZXalhTNHFLdTFUNEZuZ1pIQUYyZHJhc0ZHQ1NBeG10YVh0UWU2Mm1zWmNRQjRvcFBzV1dMc2JyT0ItM3BWOEdZNmRzSDNSTlhjQk5CQnNtRUhQX3Zqb3ltT0VXd0ZlZzhVRUsxMTg0ZF9fc1dkSU5wX2xxQ2dJTEtMb0pUUTZFdXExZG5TNUs2VEk3ZGFBRjRsZHQ0WW5QQk5kXzFkaXkyNlIyZWNHb1lSWHgyeE1DQjE4OVRlZGxLWEFjS0xuSnI1M2hjWG1ySF9BM0xWdFg1LTZFS0lVUTJpZFJhcVZNbVVHZHh5OGw4aVoycERoS2N0UWV6eU42QWNxSnNTZE50SkVTSnJWUTBzSjRqQm1ndGVOWUg0NzRxLTJrN2pubjdJVEswcU1WZE56SjFjclhHaHdZb0JvWDc2Q2FBNjZCNGdfd1ZlY2tBMGtPVzdzN05YeTl3S0Z1WTZodGQyRnZ0R2Jac1h6aExKUFVlR2t5Vkxzb1J3STZKUTBRTmxDMXdSclowWV9lclY5RUFVRl9SVzlsV1hSV19tcDIzemUwWVhDb291V0dvTUdHTmVWZUpBWjg4MEdrMm9yVjRVbVRjS1hYV2UwWkYtOUpmMkVDOFB2ekdRN2I3UEYwbHlkcmFNZUgxeGFLTTh1a0U3TUxTWUR5Qk9jdkFlbTBGSW83UTM0aHAxMnoyOW1OMHk0TzNpTl90bWRCQ2s0OUJtUXdsd1ZXSmpSRVpHcTlueW1qZ293UjV6TDZnSUFmTjhtTWwybzRRQnZSeDVmRnFhQ19xSnpnYU9Na2t0RnpMSXJwTTJMQVZlbUJxb0pDQ0lEVzlPUVY2UkN3aWhNdk9KRGtBY0Q4OHJxMENHYVlLOUNmX2h6OVhlWk5JdGNnanVuTkpPa0kydWtKZllmNFhSWmZRUGhHVXNsMGFQWlVIWndTbmZyMmxXd045QXJMLUk0dGkxYU9GUWdzZVFpVkdXVzBUREFfRmFOck5xUGFLcG8xZl91eXJVTHZ3dW9pMUJZY0JhR3BTWk9QemF6ZVJQbTI3OTRBc0dsRS00TGVmN3gxamV2ZlJwbTViV29oZXMxZEZJU19GSzVoTThSVS1BUFpQTFc5ZmwyTlI3cWZ0NjJ6Y21aNi1rMGZtbFQ3VUUtQVdYQ05UbzZwUmc0Y0V0Y1hiR0w4UkNSUDh2empzYUVmM0d1TlMyOGl4RjZBZDhIOUZlUTVEbmpzcjdhdG9fUXhTYnZKWXJFdGllME5ybWl1NHNNMG9BOGw1bV9QNG9mY2ZJN0kweDE1Sl9LUWVUbWF1VEpuc2s2bEhNSzZESFlLa0Q5Z3ZJZ3BObDJqQTNxaXVIMW9HYU1BUVhjRlo1SThvU2Q3YjZoVy1HS0FwWVcxR1dYbmk5Y19OOWw0bmJzbGxSdExidGx1TnN4ZE1QYXhITmxRWFZ4NnljS3l5RVVlSHc1WW1VR3dZcWZxdVlwR0pUbWxpTDJ4Qk9TVTRnUDBWTXVoT3BJMXNFMEhGVnhqeVJjaVZtOUJXQmcydlNqSVl4dDRMb0xiSzFTZkZIaVotQjh5aHhuMlVQazVmWEdQQ3dYc3d3Z2hjanJDUi1qNXR5ZHdxSk1JSnpTRDVCZ1JFQWJ2OTJyRFVaT1pyMWJLS1Y1TlM2V1dsYVJQLW9lemhxd3d1RFg3RXlWakFDTzlWSTNZVnk1R1lRLVVmRlotRDBqZHI1ZU93QWhMRjE3VG1MNGUzdy1GaFhvQ0Y2NldGbjkzSnU2QTZaRVpfekFKMGFienVpc29GN2F1WHhySkotQVp0M0tqZG1NS3pjU2FmLS1oYVYyOHhhbTJKRzZTZ1pYMzZKTDZsRlV5NDY1cEotRDVjTDFqdWp4UHVYY20xWlhTOVVSVFNwOE5Ea3dhTHdDRkpEMWJlbVRGeWFEdjNQdjRsUUc2YWJrRG51ay1rZFpNcTBWSVRodk1UU3NnSW1hREE5d0ZVSGNHUnJ3YjJqbzloVDR1Ym50Rk1veV9uMFpZbE1EM09ZMmMzRkRFUXNLaHZMVEFucDl4Y25XRDhpSkdLLVhOYVJja2lxNmdJVHNHR1hOd19aMHd2Z2RzbmE0M2ExWEVqWUpVWGNVM3l6cmJGSnhJNXExWDFoUUpvdnIta1diSEJ0MktBTWtma2x3dENEdW8xUE01MnlUOWNEMGZNLW1xRGhVcEtWYkZuZnJvMEt1a3FVSWdrMnBPRlVNNklvMjJMbk84dEVUSmtPTW9lS2ZMUnJ6Q2M2WEwzWjRkeGpqTTNaaUFyWi1mNU1QR2pzRk9YblpIUmswN2xqU1NpYldkVDRKY3RVUUd3eU5lWVRMLTVvN2xLZ0RBc3F3VUFxWkJvS3ZpSnd0UkYzSWZZZENxYXJUN2tpQU5jeUpta21PUndMdnF6aEs3YmppOUNuUHZXdWFwd0NzaElkQzJtdENfM2hqclpwV0FveFZXeTlYMzFIMVhzbC15VUFJZUFqYUlfUjNRdTVNdWFvQU5NajQ5djRZNzhpeFkxRFdoUGt6VEJRdFlkdVd6R3YzZ3dscng1ZEE2Y1lTeHk5OVJpcWFXV2RxQ19pTl80czdxa1NManFvTzA0akZZSmVNWEVWZjkwRmFsNnlqb3R6dGVxYjJ4MDV3UUdJU1B2UEJKZFNoUHRHRjFoMV8tdkRuLVpaMTc1aVEwY2M4REVsdmswOFFrRE56b2o5YWx5elRmZm9Fb2ozeXhvSHVtaE1OZDBwTmdvRTNlR2N0T2s4RFZEN1hVZTF0TUVBRUZRN29Ccnd6WjJyM1FkckY4SF9jRzRyVllad2ZqWGFneVhxVDQyRXdVYVhOTWF5UVNXbWkwODg3Rzdld0U4aWFTX1J0Njg0b3FsdkJ1R3pTb0wtbV81djg1d2xXVWdwOFJ5ZEVmcGNpalFzVW42NU5iRkl4SU9IMkQ5ZUd6b0syM2d5MzdVLUNkbi1LOGQ4NWI0cGpvdkcwRldJY0JnZmFzaXdWYmgyZUJJazVackswaU1HWUVqWHY2aVNweFVEZXRJcld0Z0lhYkRiX1liM05jXy1xMnlEMTRTaEdfUlFHZEQtUTF6UUplTVF5S2g2RFJEM0dBb0RMa3FJZmFweWV0b1dOSy1tbzNPWFRYekFXekZQNmlINmpLWFo4YmVlZ0xXaXhfMlJBeEJObnNLQlR0VV9oWUtrbHNZNld5RUlfS0E4THJvSklETm9WTThjOWI3RkpOSkFaMU1nd19wU0dVODdjMmRJYmhOaEZ4aTlNbmtsZUJ4Y21mTm1YQ3BqTThkUWk2UEFNUm8xcjU0Nk5wNzF1WWRVUGt5dDZ6QmhmWFNPeHEwSVBIbklwbXNxckJ4Ynp6WEJaRXJGVXBaQkpHaWlMMDh4R016QmNOeHBkYUFCNXlYcGpPT0RmRnNqNno3RkxyeG9vQVEwT3NMUWQySmRWYnhZT0VzdHl5MHVyRDdEX2JKcG00R1ZNUVBpZjZIb3N2NUU2ME1kMUdDWnRFR093NVFTalVHTGp2WDdScWdBaTZoOWpnb1dzLWtiWjg0TmQxRkx6YkkwV1VRYkFqNFd1R2dkVERleDBsQ1Z3RjBudTFJWjh5R0cyck9sWFpudkdMTGtDeHQxbG9xY0NtNl9GSjFTQ09ubGRyank0M0x6YjFxSk84aFJXQlNwb0JaU2R0ODJQN3paUzVsS0N2bHh5djlvNXBBLThiQTJaUUJVVXRFQlVxcjVQWUZIal96Tkt2UjE0TzI1ZDZaLWZQRUZkMW5QelFxUEd1VnA1VW9YeXctWEVJeG5JSnFPSkVNVktOeDk3T0ZmTXh1NXN5eVJUazJPeHFwRmxUWjAwQnRvZjZEeFBDNHAxRllaOHJoZkl0WFAxd2hhckNfVnRXZFVNTm8zUE9wVV9NaF9fQlpVWDY5bVV4UXNJcTBTV2ZFenk2RTlXb3pMUk9GU2lNNGRmWXJpQnhXRU5zSVE1Umh0SHVmZktsRjZaa0M2M3VqMlFGdGxFUVlLZjkzaEtDY3dJVUEzNWxTSjZfS1VSZVNFOHNReXlXRmI3cTdKTVp6WXNCaUZrRFB0UEtSamRjMFJKV0ttcS1HR0xRWTFXeGVMY0p2QjhEREVTVy1XNUtnWHJGekp5R1duSTFIVkZGbVpySGxNSHliMFlhSTd4NVJxWkxhR202S3dNV3E3U3VaRVlPR29xdlVYTFQwdE8wUmpYc0hHMVpBUUVHUUhnNDVvejFsNlN0MV9XU2NNM3QtNWlKTGNJcVpVdVZGa1RNbVBTRHVBTFItMlRxRk5ldGVyRndJUGoxNDVjRjNvUUFaTDZhZEdueGNTeWxJU3BWUDA1WFNaSzJsbFdzejN1Szh5RTU4dlFKcUl1UDhRX09keS1FbHhjbF8zV0lYVUhIRWhDNWdYNUN4ekJRUUxQNjh6UVdvekRlVjRhbnBZLXZoeHd2SUxYTVY3MF9Iei1QaGhUX1BMQkp4Y2tpMXhRVldDMnNDcFhrSnM5SVNqWGk4RDJIU3E4QkpCN1lrcVNmRUl6U24zS3pxQWxjTWRTMVROVXB1SktfdGQ3UHREZlZ6c2hXajhxQ2E1WGgzM3YtYnZNOFpiTU1xSV9vMndrdWdjU3I1VFlkd2NVTG9vMUZJZkNBLU9YZGZxVjBqV0NLbWwzMi1VWnU1R016NmpJYi0yMXV6Qi1HNWlBRmhRTjZvcVpPLXNld3dhSk1QLV9qVUFHSGV4TXl6LXNsaUtsYW9ONG9hUVNnNFhfblpZSHJqNXUzeHRiVmk0WGpPUHppMGE5cWx0Mi04dXF2a0JQNEVRMEJMUnBxb1NhUnVfdjFMNERuT0ZQMjJLcXJKRGFpRnkwM3o4RVA1NUxPTVk1MUZiZWxyX3kwXzRxVngtUVI1V3VfS1l1cHZtWVcyMW50SG83dHU4VFdpTFF6bllHT2FHN3h6MjU2aU1GVk1zY2UtRFdwM3c2ZkYxRGcyeWVzeV9BX0FZbUZpUDdBQWZ1ZlVzLlhkWmRmdTFNU3BfOU41Nm54WUhQbG1VOTdsc1AyQ1lhODdvNkx1bWxIVnc" + }, + "StatusCode": 409, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "618", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:34 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=6457;rd_age=6457;brd_age=22944;ra_notif_age=302;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "90c6ef74-eea1-47d7-98b2-936fc3f1cb29" + }, + "ResponseBody": { + "error": { + "code": "Conflict", + "message": "There was a conflict restoring the key \u0027https://fake.vault.azure.net/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224\u0027. This can happen if either: a second key with the same name was created after the first key was deleted; thus trying to restore a key whose name is already in use. To fix this, rename the second key to something else so that the restore works. The second probable cause of this exception is when multiple operations are performed in parallel against the key. To avoid this error, perform operations against a key in a sequential manner." + } + } + }, + { + "RequestUri": "https://fakevault/keys/restore?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "9191", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "value": "JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUptWWpsbU5HTmlaaTB6WWpsaExUUXdZekF0T1RkaVlpMHhZMkl5TXpkaFltRTFPVE1pTENKaGJHY2lPaUpTVTBFdFQwRkZVQzB5TlRZaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJbjAuTlQzX1dubFUyM2EtSDg3VGkwU3pQakxVc2RIZHdwTG96TnZoUjFlRVA0Rk5rSFRsdmZRelNTUzVkU19iV3pSY181Zm1sWVF0NTNfTUFYanhYZnVOV2NXeGh5YUoxWExIYkx3VVhTVzBlVmh4ZWFvdUNnMXNhbXNjVnJkVkNkQThGd0JpZ3RzRjVsR0xVcEFtUFc1dEJHZ3l1ZU1XVVNrYWlRWlpFa0hOZWhBMDVNNHBwa2tZUlZwVy1VTlNyQ3NQRy1PT2YwMjRuREVhZVcwcXNaTC1wZDZ2aC1XRVBtQkNlcTdjLVJKMm02RkdES290dTRSV2lBY210TUt2RGd1ck9wa2xiZGNoalRyejN4SkE5TXB6NGJpLWZTNHJSN1FvNFhJMXFfUW1yVzZYcTRjUFdHM19XT1pVbzEyRF9SUVVMX0toWk9wMGtwbms1cllIV1gwNFFRLjh3M2RHeVZBcVhFZHBqUDNsN3Yyd1EuLW1QNDVmcVhFbDM4ODZGVERrQ0JlMVNyemVpSkR2WEdqTFhmWDNHdTk0ZXVjRDg1SlNpblZXMEdiY2xmckF3cDVHYXFFZl9NZ2dWM19Kc25jRC1aSE1UM0M5T0trTExCTnRkWjF0T3JLeWVQMU5DXzBBU01SajU5NUppaENIa3RfMXFwcmpDd1lRQW8tcnJFVFptSkZITXI3T0V6d3plZ0RyME9TNUdfOFdaWDdXeldzQjJscUJHX0kxcnFvMmpKTlc1ekJJWTZMdFIwM3BTYmxLNldLNUs2N2JyVFl2aTZmZV9NbWRpaTB5WjR2dUd6akYwTG1CVWRuV3ljOEVfc1R5RTBsSXgxdHJMcDBscUxlMWhqTmJJVXBWMHhGa1hINmhEU0tZdl9Nc2JHOVkzOG56OFNUd01rT2RFdFRCZXBrTmRzVE9TNndoY2FrYVlaOW9DVS1BY1NVM2p2ekFidWFjNy1mempxTWhRSU5jLThzYURUdjBDcUp3aXoxekRWME9JMXlMVWpsazlKRWk0dzRReng5a0tkWV9tLWcxbW9kZ2d5dzhmSVNwWFpfQnkybjQ5VzEtVkIwNnNrblNDcEJIVjhWdDRBV2R3ZFNzSlpQTHJMU2gtZXU2TFhENVM3SGFEMjlTQll6ekF2cllKa3NXdEhHYzFNTDJ1RE5iREZvaEFMeVlqSmVPYUJlNWRtcXgtSUxUN1c2NnZkS1VQN0JwdGVGclRiMDQ3MUNiYTBBbG41RmxXU0xWR1ViaHFEclpUeXBUZVMxM3kwOGJ5VWN1b1JRdk9wVThudm8zalVpdHBRa3h2NWJialRxVVF6M0hMd2JFdmp6c0dmWHZFaFBXR0V2V1lYbFdILWNLaGM2ZVFqaDl5bVVZVHhlaEo1Vno4UEVwR0REVkhDN1k1eFpWNlJyV2oyR1FjR3NrVGdoMGhHLTU3SHdhSF9keUlFQzNvYzlnMGJ5R0NyZzhiNm12cjBtQzZWOFVZWDdOQTBTM2ZGeV9uRWxGM3FEblduSVNyakRzUHFuVEh5cXcyd1c2ZGotdHA5ZmxqNm4wTl9JYVA5Sml5Y2xKVHpkeDNaNUhtR3VvaHRHT09rTVZPZnJyX2dNRVJuWkotNGRsaDBuOTFxdHNpdUJySVNMWU9BTFZtNFhzRkZ5NmRsTFZEU3FTZVg3V3pzOHMzdHJocWJCbU5yX0lsSC03Q0NNd21EZXdUQVJVQ0VxdzY4WmxtWmMxWEtvOExuYmt0THVfY2hZUUlYYWJselQxVjNMQTA5eXFIcHQzZjkxd0E5ajY4d3U1VzBoODlDaHpwaWVaM09tdnJlVE9WYnMtZVZRY2hQZzFHajVYeDFVRDdvUUpJdXRQVXNtb2h2bnNkTjJJTUZNM3lPa2xSMnR3NklxbkpJQ1Z0MkhCckFHbVlwOHRRbGNOLU44eGtQZHhjOTVyYVlOanQ5cnhWbHFNRmtxWjVMZS1WMUFwM3Bic2JQQVowQi01V3VhNnc1MXFfZ3FfZHdXbGpMXzZDWFVtN0g3Q19LWEpsOFk2Z2t2ZXpDakhPTVotWmNlTWprUklvRkIycWpESE54VzBWNzU3bk52RTZYVkRwdzg4S29tMk9NVTJlQmpHVjRPSnRFNHQwTFkyVjl1Mm9QS0tZY0p6MUNHYmxDcENEaUI4dm5UMm5NRXpMczFKSl9fdFctd29yMGczaVJaQTJkQkpLam9weEwzdXJVTjVoQ3pMaEJvVnpyTnhRSlBlRGJIQWFkVHE1YnozQkE0aEJTUE9EV2hlN2dqZDRQYXB5WXpNZWctYl9FbEJrdm02bXdvQ19xU19rbWp0WU80d19HdlJPY3QySHpNMWpBTTVZSHNiVFVXYVRZbEZiYUZVZmp1bnVpbmY0amd3cnAxbkhxcEJKWUU1M3RuYmRGNWwxOEJlQS1TR3dFWUNtbzRUOTVYdjdmZ1BET3J2UDJfdVd0cGZTWkdyZXhJX2tRMnpwRHhOVFYyM2ZfRDFPaldLSUYwZUc4NjJ6NmxFX0xkc1NzYzJYVVJZLXd5TXE4aHIxQnlkRzlMc0V4ZWhRRzJUN1Fab1ZxZ0dtVjBzX2VLUFMxSHhoUm5sbDVWTmhPbDMxOG50VEVlMC0yRG03dUJQM19uVVNEMzE2d0NsanVRZnlyZXFIZThYelR4eGlHY2h4a2hnSFdGTnY3dmdmVXNHVENrYTBkSVBQRm9Yelc4ZUxGV1V0WmloYkpBa3doaHRPSWZLLUNxc0hyUllKb05NZWFqaDVjRmRqSTczc1hPaTQ2S0Z4MGlMb1F6SVlOV0dDakt5V3FNWE9NTEZLaGZ6RWVRblBwUlJwYS14VVF4UldrN1J4RGFvaFJpSXNSYUZmRVdQMV9ldzExVVlaUWlsTjBKZGJiU1l2NkIzNDN4bWRQYmdISzhqR2otX2t5SDRCb0lYT19QS2xVOFVRbkU3MFI5YjZVSjdiX0xZUzI2Tk9xZkxIb2ZUbG05MTFWWEZFYTRjRU5EemN0Q2JrR2stQk5mU1M1Ri1GUFlaVVAzSElhODZvQXRlRDhfVEVaVXZyVjI5RVZGeEJIVTBCY3pwRGczaUNMNTJoX0JOWUwzT0JVckx4bVVsVTdFWDctbjFXWVREelk0Yktic2QwSlFtOE12bUd1RnAxMUtlaFY4T1JTbUU5MEQzaWx5QzJJYWpFYUd1MGhucmdYeWlQR05BVG1LLUdHMktRdE1CWTlIUThranVVUzFHVzN2WFg3WWFndWNjOGFaejZhWTZvNi01cjVYT0JRQ2owaENnYjZTd3lhVExLdVQ2UVZmSlItVzJoRXFqSnpSSlZvNmVWQldfRWF5R2pFYTFBckRRN3Nyc3NWMEluRTBJZkVnemJILWdTd0xsUHN5U3NaNUJNN1FWWEJVbGlldlpCNjE2V2hPVWVKcHYteFh4eDMtcF92aHN1UHdWZ1JxZXNJYUtfN1ZjYkdvZGE1OUxKODhFZU9yMkE1cHhFOTdfUEJwa0EzX0NXck1zbWFGbWhlSFNsblNwTkp5Mzh3TlFDOURoTVh0V1JmSUlyNTI5cUs1NGVTbHJ3TkI3dVpIT3NVZlRUSnRnT1dOQkxRU25INzlhYjNGeW01UHJVWUdUa0NsRDl0Q0hKV0pvTjlKUnA0cDQ1Sm9zbTJpVGMxbk5FZnd6M1Y4a1l1VjVGMGFUSEdOZWVyc0dkNllUcEF0anN1OWxRMFdydGk0UHB4ckM1VlY3QmxCeTI2VV8zRTZ4NTl5WndyQ0Y1WURRYUpQeUVzWHFFOUxQNlZka3BiVXotczJZMEZUZFFua3JVSXRiTHdXLW5fMjF6ZG9rV1ZqOUEzSVRyNFJ2MDBMR2ZxVTVLZlpQWDFYMlJMVHlobWlmejc5OHZncU9ZTDNvSm5OTVRtU0s0aG1EaFV6ZmJSOEZXalhTNHFLdTFUNEZuZ1pIQUYyZHJhc0ZHQ1NBeG10YVh0UWU2Mm1zWmNRQjRvcFBzV1dMc2JyT0ItM3BWOEdZNmRzSDNSTlhjQk5CQnNtRUhQX3Zqb3ltT0VXd0ZlZzhVRUsxMTg0ZF9fc1dkSU5wX2xxQ2dJTEtMb0pUUTZFdXExZG5TNUs2VEk3ZGFBRjRsZHQ0WW5QQk5kXzFkaXkyNlIyZWNHb1lSWHgyeE1DQjE4OVRlZGxLWEFjS0xuSnI1M2hjWG1ySF9BM0xWdFg1LTZFS0lVUTJpZFJhcVZNbVVHZHh5OGw4aVoycERoS2N0UWV6eU42QWNxSnNTZE50SkVTSnJWUTBzSjRqQm1ndGVOWUg0NzRxLTJrN2pubjdJVEswcU1WZE56SjFjclhHaHdZb0JvWDc2Q2FBNjZCNGdfd1ZlY2tBMGtPVzdzN05YeTl3S0Z1WTZodGQyRnZ0R2Jac1h6aExKUFVlR2t5Vkxzb1J3STZKUTBRTmxDMXdSclowWV9lclY5RUFVRl9SVzlsV1hSV19tcDIzemUwWVhDb291V0dvTUdHTmVWZUpBWjg4MEdrMm9yVjRVbVRjS1hYV2UwWkYtOUpmMkVDOFB2ekdRN2I3UEYwbHlkcmFNZUgxeGFLTTh1a0U3TUxTWUR5Qk9jdkFlbTBGSW83UTM0aHAxMnoyOW1OMHk0TzNpTl90bWRCQ2s0OUJtUXdsd1ZXSmpSRVpHcTlueW1qZ293UjV6TDZnSUFmTjhtTWwybzRRQnZSeDVmRnFhQ19xSnpnYU9Na2t0RnpMSXJwTTJMQVZlbUJxb0pDQ0lEVzlPUVY2UkN3aWhNdk9KRGtBY0Q4OHJxMENHYVlLOUNmX2h6OVhlWk5JdGNnanVuTkpPa0kydWtKZllmNFhSWmZRUGhHVXNsMGFQWlVIWndTbmZyMmxXd045QXJMLUk0dGkxYU9GUWdzZVFpVkdXVzBUREFfRmFOck5xUGFLcG8xZl91eXJVTHZ3dW9pMUJZY0JhR3BTWk9QemF6ZVJQbTI3OTRBc0dsRS00TGVmN3gxamV2ZlJwbTViV29oZXMxZEZJU19GSzVoTThSVS1BUFpQTFc5ZmwyTlI3cWZ0NjJ6Y21aNi1rMGZtbFQ3VUUtQVdYQ05UbzZwUmc0Y0V0Y1hiR0w4UkNSUDh2empzYUVmM0d1TlMyOGl4RjZBZDhIOUZlUTVEbmpzcjdhdG9fUXhTYnZKWXJFdGllME5ybWl1NHNNMG9BOGw1bV9QNG9mY2ZJN0kweDE1Sl9LUWVUbWF1VEpuc2s2bEhNSzZESFlLa0Q5Z3ZJZ3BObDJqQTNxaXVIMW9HYU1BUVhjRlo1SThvU2Q3YjZoVy1HS0FwWVcxR1dYbmk5Y19OOWw0bmJzbGxSdExidGx1TnN4ZE1QYXhITmxRWFZ4NnljS3l5RVVlSHc1WW1VR3dZcWZxdVlwR0pUbWxpTDJ4Qk9TVTRnUDBWTXVoT3BJMXNFMEhGVnhqeVJjaVZtOUJXQmcydlNqSVl4dDRMb0xiSzFTZkZIaVotQjh5aHhuMlVQazVmWEdQQ3dYc3d3Z2hjanJDUi1qNXR5ZHdxSk1JSnpTRDVCZ1JFQWJ2OTJyRFVaT1pyMWJLS1Y1TlM2V1dsYVJQLW9lemhxd3d1RFg3RXlWakFDTzlWSTNZVnk1R1lRLVVmRlotRDBqZHI1ZU93QWhMRjE3VG1MNGUzdy1GaFhvQ0Y2NldGbjkzSnU2QTZaRVpfekFKMGFienVpc29GN2F1WHhySkotQVp0M0tqZG1NS3pjU2FmLS1oYVYyOHhhbTJKRzZTZ1pYMzZKTDZsRlV5NDY1cEotRDVjTDFqdWp4UHVYY20xWlhTOVVSVFNwOE5Ea3dhTHdDRkpEMWJlbVRGeWFEdjNQdjRsUUc2YWJrRG51ay1rZFpNcTBWSVRodk1UU3NnSW1hREE5d0ZVSGNHUnJ3YjJqbzloVDR1Ym50Rk1veV9uMFpZbE1EM09ZMmMzRkRFUXNLaHZMVEFucDl4Y25XRDhpSkdLLVhOYVJja2lxNmdJVHNHR1hOd19aMHd2Z2RzbmE0M2ExWEVqWUpVWGNVM3l6cmJGSnhJNXExWDFoUUpvdnIta1diSEJ0MktBTWtma2x3dENEdW8xUE01MnlUOWNEMGZNLW1xRGhVcEtWYkZuZnJvMEt1a3FVSWdrMnBPRlVNNklvMjJMbk84dEVUSmtPTW9lS2ZMUnJ6Q2M2WEwzWjRkeGpqTTNaaUFyWi1mNU1QR2pzRk9YblpIUmswN2xqU1NpYldkVDRKY3RVUUd3eU5lWVRMLTVvN2xLZ0RBc3F3VUFxWkJvS3ZpSnd0UkYzSWZZZENxYXJUN2tpQU5jeUpta21PUndMdnF6aEs3YmppOUNuUHZXdWFwd0NzaElkQzJtdENfM2hqclpwV0FveFZXeTlYMzFIMVhzbC15VUFJZUFqYUlfUjNRdTVNdWFvQU5NajQ5djRZNzhpeFkxRFdoUGt6VEJRdFlkdVd6R3YzZ3dscng1ZEE2Y1lTeHk5OVJpcWFXV2RxQ19pTl80czdxa1NManFvTzA0akZZSmVNWEVWZjkwRmFsNnlqb3R6dGVxYjJ4MDV3UUdJU1B2UEJKZFNoUHRHRjFoMV8tdkRuLVpaMTc1aVEwY2M4REVsdmswOFFrRE56b2o5YWx5elRmZm9Fb2ozeXhvSHVtaE1OZDBwTmdvRTNlR2N0T2s4RFZEN1hVZTF0TUVBRUZRN29Ccnd6WjJyM1FkckY4SF9jRzRyVllad2ZqWGFneVhxVDQyRXdVYVhOTWF5UVNXbWkwODg3Rzdld0U4aWFTX1J0Njg0b3FsdkJ1R3pTb0wtbV81djg1d2xXVWdwOFJ5ZEVmcGNpalFzVW42NU5iRkl4SU9IMkQ5ZUd6b0syM2d5MzdVLUNkbi1LOGQ4NWI0cGpvdkcwRldJY0JnZmFzaXdWYmgyZUJJazVackswaU1HWUVqWHY2aVNweFVEZXRJcld0Z0lhYkRiX1liM05jXy1xMnlEMTRTaEdfUlFHZEQtUTF6UUplTVF5S2g2RFJEM0dBb0RMa3FJZmFweWV0b1dOSy1tbzNPWFRYekFXekZQNmlINmpLWFo4YmVlZ0xXaXhfMlJBeEJObnNLQlR0VV9oWUtrbHNZNld5RUlfS0E4THJvSklETm9WTThjOWI3RkpOSkFaMU1nd19wU0dVODdjMmRJYmhOaEZ4aTlNbmtsZUJ4Y21mTm1YQ3BqTThkUWk2UEFNUm8xcjU0Nk5wNzF1WWRVUGt5dDZ6QmhmWFNPeHEwSVBIbklwbXNxckJ4Ynp6WEJaRXJGVXBaQkpHaWlMMDh4R016QmNOeHBkYUFCNXlYcGpPT0RmRnNqNno3RkxyeG9vQVEwT3NMUWQySmRWYnhZT0VzdHl5MHVyRDdEX2JKcG00R1ZNUVBpZjZIb3N2NUU2ME1kMUdDWnRFR093NVFTalVHTGp2WDdScWdBaTZoOWpnb1dzLWtiWjg0TmQxRkx6YkkwV1VRYkFqNFd1R2dkVERleDBsQ1Z3RjBudTFJWjh5R0cyck9sWFpudkdMTGtDeHQxbG9xY0NtNl9GSjFTQ09ubGRyank0M0x6YjFxSk84aFJXQlNwb0JaU2R0ODJQN3paUzVsS0N2bHh5djlvNXBBLThiQTJaUUJVVXRFQlVxcjVQWUZIal96Tkt2UjE0TzI1ZDZaLWZQRUZkMW5QelFxUEd1VnA1VW9YeXctWEVJeG5JSnFPSkVNVktOeDk3T0ZmTXh1NXN5eVJUazJPeHFwRmxUWjAwQnRvZjZEeFBDNHAxRllaOHJoZkl0WFAxd2hhckNfVnRXZFVNTm8zUE9wVV9NaF9fQlpVWDY5bVV4UXNJcTBTV2ZFenk2RTlXb3pMUk9GU2lNNGRmWXJpQnhXRU5zSVE1Umh0SHVmZktsRjZaa0M2M3VqMlFGdGxFUVlLZjkzaEtDY3dJVUEzNWxTSjZfS1VSZVNFOHNReXlXRmI3cTdKTVp6WXNCaUZrRFB0UEtSamRjMFJKV0ttcS1HR0xRWTFXeGVMY0p2QjhEREVTVy1XNUtnWHJGekp5R1duSTFIVkZGbVpySGxNSHliMFlhSTd4NVJxWkxhR202S3dNV3E3U3VaRVlPR29xdlVYTFQwdE8wUmpYc0hHMVpBUUVHUUhnNDVvejFsNlN0MV9XU2NNM3QtNWlKTGNJcVpVdVZGa1RNbVBTRHVBTFItMlRxRk5ldGVyRndJUGoxNDVjRjNvUUFaTDZhZEdueGNTeWxJU3BWUDA1WFNaSzJsbFdzejN1Szh5RTU4dlFKcUl1UDhRX09keS1FbHhjbF8zV0lYVUhIRWhDNWdYNUN4ekJRUUxQNjh6UVdvekRlVjRhbnBZLXZoeHd2SUxYTVY3MF9Iei1QaGhUX1BMQkp4Y2tpMXhRVldDMnNDcFhrSnM5SVNqWGk4RDJIU3E4QkpCN1lrcVNmRUl6U24zS3pxQWxjTWRTMVROVXB1SktfdGQ3UHREZlZ6c2hXajhxQ2E1WGgzM3YtYnZNOFpiTU1xSV9vMndrdWdjU3I1VFlkd2NVTG9vMUZJZkNBLU9YZGZxVjBqV0NLbWwzMi1VWnU1R016NmpJYi0yMXV6Qi1HNWlBRmhRTjZvcVpPLXNld3dhSk1QLV9qVUFHSGV4TXl6LXNsaUtsYW9ONG9hUVNnNFhfblpZSHJqNXUzeHRiVmk0WGpPUHppMGE5cWx0Mi04dXF2a0JQNEVRMEJMUnBxb1NhUnVfdjFMNERuT0ZQMjJLcXJKRGFpRnkwM3o4RVA1NUxPTVk1MUZiZWxyX3kwXzRxVngtUVI1V3VfS1l1cHZtWVcyMW50SG83dHU4VFdpTFF6bllHT2FHN3h6MjU2aU1GVk1zY2UtRFdwM3c2ZkYxRGcyeWVzeV9BX0FZbUZpUDdBQWZ1ZlVzLlhkWmRmdTFNU3BfOU41Nm54WUhQbG1VOTdsc1AyQ1lhODdvNkx1bWxIVnc" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "700", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:45 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=22;da_age=6467;rd_age=6467;brd_age=22954;ra_notif_age=312;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a77e82c8-99ae-494f-8fc9-c611e01e518d" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w-mbabhO44_b0tOjANZb0txfHJsA6al9n9xnQ6Z4PwW6cLNsXLN9HJmQA7OESv96HlPs3D3ekjryO4HwqS1DhahCXvB8t3dBmtI-kJfZMwOii8ziwDOIMD45qCkZsdAK5WiGOHbdYfd7xi-zP7uzF0TZDCW8k1y9BkC6gpW4Aq7Ks8cnyBPBUWsQ_s3VItweHfS5Kh6ggcFZmS0uICn7FGWB_AZ0iBne4BaAgCaITOSe0bWixp63-z6J8n1Tefd8unn6GI6S5RiCHFpnMT1bSp8mm3G_yCBPBJlVIpjdfQzcuEEB_IaxS5GK0X6u8oFkcOu94rru7PhiFfM8o2IRXQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testbackuprestore750667021/?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "700", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:45 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=6467;rd_age=6467;brd_age=22954;ra_notif_age=312;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "affdc3f0-2960-4885-89c7-524b70565ff6" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w-mbabhO44_b0tOjANZb0txfHJsA6al9n9xnQ6Z4PwW6cLNsXLN9HJmQA7OESv96HlPs3D3ekjryO4HwqS1DhahCXvB8t3dBmtI-kJfZMwOii8ziwDOIMD45qCkZsdAK5WiGOHbdYfd7xi-zP7uzF0TZDCW8k1y9BkC6gpW4Aq7Ks8cnyBPBUWsQ_s3VItweHfS5Kh6ggcFZmS0uICn7FGWB_AZ0iBne4BaAgCaITOSe0bWixp63-z6J8n1Tefd8unn6GI6S5RiCHFpnMT1bSp8mm3G_yCBPBJlVIpjdfQzcuEEB_IaxS5GK0X6u8oFkcOu94rru7PhiFfM8o2IRXQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testbackuprestore750667021?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "845", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 18:59:45 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=6467;rd_age=6467;brd_age=22955;ra_notif_age=313;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "897e0fd1-6fed-4d31-8d19-5632f0c323f5" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testbackuprestore750667021", + "deletedDate": 1656356385, + "scheduledPurgeDate": 1656961185, + "key": { + "kid": "https://fakevault/keys/testbackuprestore750667021/515347f914e1447fb253e41f5436e224", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w-mbabhO44_b0tOjANZb0txfHJsA6al9n9xnQ6Z4PwW6cLNsXLN9HJmQA7OESv96HlPs3D3ekjryO4HwqS1DhahCXvB8t3dBmtI-kJfZMwOii8ziwDOIMD45qCkZsdAK5WiGOHbdYfd7xi-zP7uzF0TZDCW8k1y9BkC6gpW4Aq7Ks8cnyBPBUWsQ_s3VItweHfS5Kh6ggcFZmS0uICn7FGWB_AZ0iBne4BaAgCaITOSe0bWixp63-z6J8n1Tefd8unn6GI6S5RiCHFpnMT1bSp8mm3G_yCBPBJlVIpjdfQzcuEEB_IaxS5GK0X6u8oFkcOu94rru7PhiFfM8o2IRXQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestBackupRestore/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestBackupRestore/MHSM.json new file mode 100644 index 000000000000..b9bd7807df4a --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestBackupRestore/MHSM.json @@ -0,0 +1,398 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/testbackuprestore2485414557/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "50035ea0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/testbackuprestore2485414557/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "729", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "503399bc-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "297" + }, + "ResponseBody": { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testbackuprestore2485414557/594201d6c497427c2ae4e60fa220e511", + "kty": "RSA-HSM", + "n": "jPdt8eTMvHY9fsUlM296YmRmMQxsAOfrfnLQUWPUeDleSetTv-K_NmgsDxHgPo4JKqwuqMA8kHkAbq1NN-ZKMLDqTkxxMRLIHmXOJaVoGoojcxvn3OfLeZ17kar0EdwNiA44eaLDF2tAJxVoopnK9GiY9ke-WfH_AjJM2scdXKZTDKxUv3rsC9Er4YmILMhpprymgMg3s3d5_0uOOcbVOZ9p1OQb--t8YhAP1GAgXM8N5NMlVroUd-1QwiwoestgxN44uLkzHvwvJ3ceHFIq7T0dNByWglsf9vnQqDsYeTQF4ST8owDwKtz4gAESCttCcp_1Wb4H1ztFWeOvDy2lUw" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testbackuprestore2485414557/backup?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "22066", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "506fe8e0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "131" + }, + "ResponseBody": { + "value": "ZXlKaGJHY2lPaUprYVhJaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJaXdpYTJsa0lqb2lZbUZqYTNWd0xYQnliM1JsWTNScGIyNHRhMlY1SW4wLi5Xdll5VXJxR3VKbC1GclRJelF1Y1FRLi1Pc0hSdVhpMl9SakhjNXZRY0RURFhxSldmN1M4LTNXVnpYby1hU1Etdm11MXFfQXNXSlNsSjVTa3BPUFVxOGk4cVQzckxLaHlZc0EwS3JaYUFfVng1NUR4WkUwcFhPLVc4bEY3aVJlQWY0V1lWeFRfdzh1YVV6M2ROaEN5aExVY21XRmJYVUxfRDM4cXF4OHlTN0NhbXQ1endVbGFXSjJtZThFRU1zTUx2TFYyQ0JVX09xMjUydGtXQkRiX2RCbWtYTk42dUVmcU1lNmNrbThWdWMyZjRPNHp4NjhHVnRYZXZQZUdqbDkwR0FEb19iZ3VpYnNFWmtteTdQS19xVHRPdW5OUVdVbFQ3R3FYMFJmQzVtZUg3dlRLRTJZeWVWRE9MNlJIdDhWTlBURVpPNzZsQW85OG00TjZIRnhyNFF0bk15dmZ6OEtIa0o2c3dmeUdIYTd0dmZXWFNFN051clZtdWpwMFM3YlkybmV3R25UYXlPTFBQekEzc25ZelZrZDZjWGh6ZlRhZkVITzRsQ0FzQXlvWWh6MjNvbWZNZDd3QmpPMHNPeWJQcDVtMTdlSVNtV1NaN1dyMXpBWHY4ZUt4aHVWSVl4Y1VTVHlZYkNiSlBicE1EQTJwdVc1N3liUk9xdmdEYm00UTlNZFNXcVZicFZaZldXS0xtRU14V2I4TFNocTBTT2FLTHlMb2ZPN2JZZ1dvMXdJUHRkcjlVV19QVXhzeVRnZ1h4UkJubUVPRS1hMGhkdzd3bHZNdjAxWXF2dmJlMWNBcVd5X3UyYllSVGtkYm1SRDJkRUU1cE1jd2dHdlZINHVBZVkwbGttM0Q1dzVQd2d5ekJ3QXZWWWh2NExZcFJLSkwxTzQ2d1NFS0p2YjhEbVV5Y1hvdWJ2WTcyZ3FWX3VIMWl2eENEbDVLZ2tHWGpoZUVKWkliX0pPaUZTaEswTll3QmtzcWVXMm9DR0doUUFyb3E0d3F4MFBtWEN1amFyQV9fQ05HeVQ1WWo3Z3NpSGw0Y0xWQmNTSm5RVFo0bHh0ZGkxRjliMnhwUVJfd1ZHd1hiZ1hvNGx0VkhGeXAyaXgzb1hwaFpQckFXRTAxU2ZSMzlieUpMWWRMZWV0RmNPN1lONzc4NlhuenFoZWpnSHc4eW9yTVRJbmZTU3k5M3lIRGd4T2ZnRzN0TVA5eGJOUVF4QVdUY1BseWJBSFdnd210SmM3U0dvRll5dUQ3SFVEOTFyUFpkTmtlb2kwX1lOSTFVaFc4N1JoSzVHNXllcF9XV2YyejdvbnFyZVF0TkxxUjByTmZxWnFBNmdveF9QRzVzejIxXzgtekgzODV1WWMtT2gxVEFqSV9Pc1d1Nk9qWXhSdXBITkZZMzBCVl9Fc2syZGJ5ajNUeDdQUkR5TTF3SktvekRwY1R5N3lzek5PNFRNcjIwc19rNDl6UFBPaEh1bjZSanp6Wnp6ZVZDdmZKQVQtMVJnSFRoMXFRTFN1LUhtM25uLW1keFBVTmVRSDMzVjlJM2NCc3JmQkk3TFpncENfNXhlT0JnQmp0aVJJc0VfMUd1eWJvRElyd0VKVFFYWTZGcDVGd1YwVmQ2V0stZTR2UzktM2wxM3Y1NnlxT1lJOGN3SkFSdURWcjFPNnBqeFZ6MDluNXpBaEpFejNpZjlkUk1kaW5wQWVRWUdtLXJ4empzUnJpVTdEZm1zZ2UzdHU5R0d0RWgtNVZfSS1CcWZXZTdTSE45emp2SVVCY1ZuaVluUTJmckVGTk5IbkpVYmdZamRsRmVPeFlWT3VmQlJUQU55aWZLWlF0WUx0cjlsWlZKUVp5a3JkZGVXRERsNldyalViZTlXbVBMaDVkcDJjN3NCWWt4TnNwWWVWYjVCYXpKVGp1S0hOWGltNnVXMjVhN3pKV2hYdnFMUnREeWRhX2FYQkpNSEdFSXZwSWktU2pxTWhkN213dl84TTZhQkJXNDRCQ1ZpLVJiVGNsZE5udnJ2SW5LR3dSRU5RQmZCQkwtM2FIbjQ0TG5iM3FTSVFBM3h0VEs1S1BTWERXVUlxdDdQUVBTQ05QWXZkY0U2VHRCNGxleUt6OWdXUUcxWXNOS0tnWjZERC1xR0VtREVVaDhOZjBmTElyUEkxSXpGaFZWOXNhZHZ0OHV5d1dGMnUyVmdudEFlSWdPSzRYZ05QVDh4NFVxMUwzXzNFRU5RaXIxS2VESkZ4NGtmcnJWTkVtUFpfdnJkN0oteGg5N2NDbkxyOUV1dXAzeC1hOTVDbmtwZ0tKMnRodmxER1ViSkJoUFlfU1hVamlYUHZ1cTZHeXE2RGhJY3V6Um1oZmF6T1dUaUxocTNrZVpzRlBMRTlLaWM3NG42NmhOTl81czBSQzFPQV9xQTAtemlNU3dvb19saGt1elZHdTVkaUhTOF9lNkZKcl9vMlBDb1FBaW5NLVVFMl9QZGVUTURXQm5UNzNXTWdqNVFmaDg3SHVFek1WbWNiVXpoUUN0S3U5eTZweDlDTktyQmhvZUxQemhqUVhNN3diSkZxSGRIZ0I4dEtuX2wweHAzVGFHNlZBRlZ3OHlJYXR5T2Q4cm11bGxHSWlLMUxFOHkwRXNNaDB5LXhsNjJzWHN0LTZGTTVlcjlqb2xtZWlWU0JOUl81aThjaWkzT3RvekdzUVV0c2Y2QlJSU3QxMzNGRzNTYkRwcjIzemZDeFoyeFhSOWk3Tlp0R1g4MnJfM0d0anB2VEVNUlV5QmdfR1U3WVhUbkNpYjRLRWRkcGI4WmFhYl9SSDRJVUpBVWU1cEJWTTBqWDktQjFFSmVST2hXajVhTFZFT0JhMjBxV1lDZ1BfS3RWbHNYX20zRUw3UVBPc1V5SzRFRDF0eG1FdlJWdTRpME9xcDRlb3BVY1VNR1NTZENWX1dfc1ZIN3YxMFczVUJuU0ZmTk9fNXliR1YwRGx6LWVRT1Z4NnpTT0JXUWdydWZlSk9wcG5rRjdNY3pWNVdYMnNXT0lkRjIwU1VEWWI5ZEN1aUNFU2t2WUtxMFVGVUEySG1XUUYyTm9wUWxzeU95SXJERGpUakZGc0IwdlBWdUE2MWhoWTRZTktna3VrWm9tVHNDSGxjRmZOR1pWZXJsY01KOC04dVRkTjlGZVk5Q0VidHVsZndpdGc1RE4tVUpwUXpxa0tuckd0TVJpRG1xY0tHRUY4Z3FsQUIxbnFoTFk1aTJGWTBkQVBEdE1YaEU0cDMzazhKT0RfaUdUZ1lTMWhwcWt0MkJfMFd0TVdnWFJ0NnVkaEo2eUQxU0xUem9XS19tY2RrYTFqdm5YVnF4SVdMSVV2ajlHenkwYi1uSDBZb2M3NmxHSVpIeS1VdTJ2RVdiOUxEdmhBb2F0SDlWTmd4LUN5c2Y2MHJUZlVuNjNOa1FVQUxVWkQtTldVSUVTZUc0Q2tWVkc4UXBPb1g2WFhHSHRBTkZkRWpJUUM3bTBjU1Bsam5ucmVuSmxVY3pWclRXenpYQThKQVBxVDZ2RWEwaWd6eDQzMzF0MmI4eHkyUlpMa0NWU2p6bkw5VGN1V2xoWkJtRFp3X1BnMUxCYjVNbnZ4NWRLSEdmall5aC12Ukc2ZEJFU0pkQmduNkwtdThiSXJFc1RQM1JjOWJHWjVDUFIzQ0YwMy1pSlI0TjdYSnMxaUlMdVoxYkI2eUpib3pkbDdCdkNIVWJTR3VrQmVncnZYTDg5dnJLeGxscmM0Mjc0MExFOWFISzBvanFjX0JTZWtRQ2t0ckV3V05Fd09Ja01tZnF1VjVvVHRrZldGTmpkQkZOZnNsLWo3VHJLcVNZMmE3bUQzeF9iTlNUdVN0djRodUlWQUdiY2s4dWx2eDhsVFR1ZEZCQjdZVnRlT3Zndy10bWpqUTlXa1A5Umh1dkZOOVgyREtSc3pTcEowY0tYNjhwY3FMNkZPQ2VMZ0NHeUxJOWdCeWV6aGNpT3RSWEZIUEswWmlZLVp1X2xPRFZoYV9IcE5MUnJ1NEJFbzliYmpDU0x2ek1zeGNXUktrczUzMnpncjZncFNYZnpBUFlybkZzTkxEYXBUVmdhZkdlMTZPYWNsMXM3NS1HQmJnNVh1T2h2dmNfbjJHeWo0MGhXQ0lwa00zMVhQX01ZWGtxR0hrQy1JTkFETTJ3RkVoNy1TMjJpRnE5RjJhY20xakhwSTdLUjYyNVJ0MlF2MXJlTDlhdjNDZzZMUGs3VG05LUxRRDVFMmdlLXlTaHlXOGRzcTk5UmlfbmNNX2dCanNOY1MyOEZJaUg1eFhSTG92R1RrdV85TGFiYnJYdnE0X0E3em1DWU1JZThkTEZpb2t1cFNTVV9yaTFacjc2X2FrbFZZYzRBNXZ6ay1za3pTREZzbVVFYzg0MGVod1dZbHUzSFMxcUFoYlNHd2RtMzFvZHFBSWR2WGktNzR1cjNxXzliZEE1c0Z6dUNhQTVHZXJramVmaFFmeUtQS080cm0xX3ZJMTlGVWtZeFh5eHREdWVOc1pNOXlxY0VTQmdCNHAzallCak5sbWdJMUFTUzlNMHFYdGhBaWswcGN0SE4xSE96ZGg3SHdudFdUTkJ1SUJQY00tYTZMMGg2alpvRUZUa1ZKMnkzenRJd3lSYmVBQTVQQ05pOExOQUZnUWFwa0JneDgyYmgwTGk1RTF1OWhXYmctM00xUElTUzlzMGdyTTVYdkNjbHlISEROWGludWZXbkZ3TkFQWEN6dHNNNkpqQVJuLWctNlBEdGxGYkJfNUZhdEFBam5JWkZnVDV0ckR1X1ZTZkkyZHExUndvN2lRTnpmTFJnM1cxYUdQcThJcnF5bHVtZUx4WWRiaGRkYm1fcF9wTnF4ZUpPSzFuRFI4dUJtRTA2RFVDSFBJSnBndUIxNW1XeERfVmFaUENRRE1PNzljUnBKbHNWZ1lVUVAxWEFHRnhJT1pCTUhxY1ZYMXR2Rm5oLTh2RFZBRXhVMUxMRTJxYlVZZ1pxalpKclBSNkZ1M3NYakgwZ19jdU5kM1o1LXVBNTl2UDZMOXlSTEN5dnMtYUxCSFRsbEJ3SnRpZWhPWFM0T1F6OXFJckU5OEwyZGZLOERsMUo0X0cyVnVkTmRSM1lodHJhRjFyMlM1VEIxVmw4MHpaLVFqdlppamg4bVhwMXlxM2JjcFE1MHdQLUxqTVdRamZIdV9NcUdRZDlBcUd4NzBxdkwtcldRdGdvam9Fa1lpZVZEd1VxdkdLMXZqYVJvbXJYaU1Rcy05dzl4LUxHSVJ3YmVMNHNvcmZFd2h2ZlNHMEprZjhqMzVpRWVJTEMyRUhJTVM3Tm5zemVxZFRhMFJyTUxfdzgyM0Zia1Y3QUJSSGtfbXFEdHN2anV0MXROTmpBcHBWTjN5b0ZEQWNtUXV4bll3bkhiOEx3am51WjduVHNpMERQNUFYNTZDNzdmWllCRzZHMnZwc1pnNFZPV1Z6Y3ZRT0prcVdlVDlSSjhqRWl4WFZzaV9tV2w0ckdaTTVZX2luUHlkLXEtZ1hjdzRiUWNnaF9KZmhBT21FRTN3Nzd2S3NBNVBmSzJobVhKY2M2cDNQZmJVTG1sdmduZUFNT0s3bnhWaWFKRWZ3ZFFaLUxielk2c2F5ei1VUlVYTVdxeXh2ZmNRUUZ6eUxMdEpsNW5tYWplMFE3OWlvaUVHamwtRThoVFRRQzBLQmVzWVAtaGJwNkxkNURCSkV3Z0hMdElCbzA1YXR6ZWZTcjNNS04yWkVWX1BPMWM3MlhxREkzVzFCajJ5XzVjYWczcnRYeUk2amVlT3BpNktNbnp1NEZwUWZrenZuS2dvTlE0bWc1NzBkbnFsd0poYkQ2bTFSUy1MaEdHU0JxcEw1LU4xZ25qRDZwdzNSSlRLMmFTaUdXS2lweWI3MFh2SFR4RVBDRWRxdWpiY3FuR1BhM01sVWtLWGpKUzluMXdkcEZyaW9GRFpfWDAzMFZkaFYwN0FYSU0tNXJmZkUyM1hHVWhic0tDekxJOE4yc0NfdlM0NzNPQ2Q4WkJxWENISXcxSFJYLXRYaDltb2RRaHhiUXRNNmZBWE9sdGRvVUJEMWJ4WjZid0htT1Z1MmI4cG1pYmszVjlROHFhNWFfT0RhVlJSbmhoUnlVMW1qMGw0X2ZBSWRzd01CbDJsX0s3WmE1VHVrZHlyZ2E2cEo2cElKRHBQeUZfc0FRQ3EyREo1SktPX3ZyckRaVDV2T1lqVHNlM1JLb2xaa2JETDBheDNPUDJBN01hLWd2VkNHbzJnUWpmVnhtVXhsSjJWSDJpLUFRRmVqWnUybWRFYWdXVXlyUTBiRWtZcnhNZXM5MG9fTmdLTENNV3cwVmFNajVCYTlTdnRReUpPRl9JX3U3RnR6dndiMk10UGFXVXdYUGhLSEVGTDhaZ2xyOFhCRGwzWTltbU5MemZyckdjWHUtbHE0RU1rekVvLVVlWnhxVmNQRXI2dGRGMm95YlFtVjRXUVZwc1dCRjRtWlVudzNYOTAyV0EwaEQyYk1TS0I1RmVvZWJCemo0OHhRTGVTSkRPeTNYbGR1eU84U0N4OHAySGhnOGl6MEE0YWtwZmxVMjlpY0NwQjVlSkVLY2ZGU01PSlhMNDlfME50MXZSSzUtWVZ2QU9ONDZkYjVQWWtDeHcxRkFvaXA1NmpXQUtOQ01jcHB6ZFRvUEh5NW1QM05jclhfZ1owWG9aa000eS1FNjBpUkFEdFNkZDhsQnNnR3BIUExQWk9FeEZiRU5DbUlSaGppOHhCamJ6OHE3MEMwSjBMRGRlZEkzNzl2YmI3SlZkLXlhaHBzZzEycWZTM0pQSTNWUWtwajVROU5TNWN5a2ZfY0ViSWRNTlZyMERTRm51RGlWVV94aDRxWm5NbVhvZDAxX2szZnZVZHpZS0dXZFZtaHlKOHAzREY4cFc1NWR5dG5jYXdyT0diaXhDdjhhVDBUMU5UQjdvclVyOTd5aUJLZlhTeFctSmtUWnJNZ1dsMEhhMjg2Y2pfc0p2OG9SdFRNTDBISHNYVkR0azNWUFdvVjRHYnVxOGdhVE5aWnR6TnZZXzRmOXRCbnlrTlk3TElxZWZZNjlhYjVLUHZBQ3pwUFlzT3FvdHZOTDROX3NDdDRNcE1YemloV3dKLVhpZzRPQkotd0N3M3JGRC1SNnJzRW0ydDdpT3l1YlI5MFdOS1pMWmphaV9DRU1nQ01SVGczeExnZHJ5djNhMFFELUdEUEFYQkNPbkdLRzhFT2VDM29tLXlYZXJnbHlWZjlfeXJIY0Q3bVkzaVFVS29VSW5ubFZ3OTBDdF9SaEJkZU1XRmdLT2dRcURuT1p1cGVkV3lsTmsydEtFU01Zb2VRdE9odUhVcmpmMTU0MEtXaFhlQ0J4ZEFYTlV4aDdTMk92cTdTZHVtdzJjZnVoS1lNb3pWaE0wSVVtcWZ1aTMxQ01EcW91S2ZybjlNT3dOdF8zeVJzLVlvc1NGY0JDaE1peUV2b2lKQ2ZkWjRCZXk2VUJkMC1FOEVkUGlsN2piMEdnNVluWkZmT0lFVTc5Z1JTQmdkZXRmQU1BT1F1T3RFMXlVekFyd2RZQWVJZm5ZcWJmQUZrQ2prUkhWVlRrLTNxbmtmeHEwTWlYdGFwNFYwR1pjRGJGSWxyYThFRENfRXhicUZ2WG5TM29pT0pHdDc3Y19KNlRCdEtTQzZzMnhISkRkdGRMZ3hQeHd3M1lzT2MxVkhSam56cjVxaTFQNGFfZHhReVZQNm9qQmJEYjhuLXFnMHFBS2t5U3pLN3lxdER6d0tITmVpSW45T1dVbWF6UEdEeGpSTWxVblpsWFlwUi1peG5LYWs4b2ZtWmhkbldaOVZPaXZrNFpCejZqSUlDWlNINzE5akE0dFM0elBIdE5tWF9pS0d5bEEwblB6TldTVVp2MEdVY0xpNlhkNUhENTFrcGdXS0xWSWRydVQwMU41ZnplcWhmY0RCYTJya24xVGJndjFWc0tSWXkwTVl2UF9KZHRZRnVSOVY4VWZWemRIN1NGNjdPU044VWV1ZXJTSUU3ci1LdkZ4NDNaaklndXhqeGc5NjFiRDlfLXVELVhvQlRJU3YwUm00MnFNbmdDWWJnWDhEN3Jaelg0Qi1UVUI2Q1drSlQxVU5xWS1ZN0RnM0RobW51eG51WmI1NXNCNWNVdXJEUzdmcVFYbjVWUEo5UHBGdW5vdzVDMFRXRmhPeGFHMW5OZ1M5UWwzSUlhUHJ5MnBmdTlpdWNHcm50QXM0THNoNjRZZXZQWnExMDJUU190YkJtVkhNeGI0TEI4N29NWENJc1ZuMm9uUGpXTmgteU1heXdjbjhoZjVFUWRiN0xFSVVMU0JSNURBMEZOanJONmFENHNQS254UGpaTW0yYWVBeG82WHhRU2Z1MGZWbTVpb2lpVUZvYTkwbVBQUWFLVGF0YzZleUp3UG5qaDYycG1xM0lWQUdNbWNjNENHV3JBNVByNXFERDdLQndLejkyY3JBU2l3WW9XX1NTTW1HenBCYk1tM1l4WEMtRG0zaFRTNVYySGo2VFoycWx6YW1SSnN5RGRDZDZueE44T3FoWXNSWHl5eDU3ZmVpUk5BOTlhV0VaM3hQT3FXYklQUXNPbFhkWDd1cjdxUE5tN3hTeklJcUtUSll5cDVTczhEQzFZQ0hNNXJWZ3RucS1qbjZtOVY1UE5nUkd0THhyeVZNaXk0QnFuWTh6Sy1iYWlNb1VFcWl0Tmd3Z0EtUjBkc2hhRGRsUnJ3UHJwOEhiY2RxVlZBZ2RtVVRhZXFhdThkWFo0dnlJaEpoN1F5RG1zdHl3VWFDZUQ4Q09RU3A2V0tlTEE3bUNnZngxYS1fUnhxS0JtM21lYnBta2JEbW1RUUozWXB3WDRqM0JIUWx4bHgwUHhIRmxBdi1UUFRQVlhDVGN4N3FjUUIwZktxb0daQlNRWGx3a2hvZzVPc3l3ekZsbmlXRndiYlU5TUFiUDZFclZDODNQaklEMzIxQ21HZmxxMlRCc0U3M0FpSzBKdDFkdE92dFV4a1BDbnV1Wm53a2ZzLUFwcGN3VHkteXVjQWNmODI4Y2hEekN2cjd0NWdEcjlsX3JOUzJRUHdQUTRtRUVlYnNWR2haVGZ5RzhqenFPUi1UdzFfd3RLTW00ZE5ZR3JScUtLT3BjRU43Y1Z5OWRaTDZRb0pUUmxkU3hILXFfUjV6LTZTTjN1SmFOdzNCQ2tQSUZ3SWpPUFdjQld3M1JURzdUMEtyTjVLek9BU2R4bUs0YWpWcHEzUXViSkkzWGdZaXY3cHh5M01USnZWT0p2NHRZdTlicGdkQ0VNdkNZTTJxd21rRmdwbjN1UHhSanhUeUhkaXBaelpZX3lxeXhiM253akxhXzJmS0IxWnpZejhzWDZoSWRBSGMwMkFGLVRWTjRHZ1FBNU1tcWVOV3FWSTQzMUVZMkRIZWNubFVDa2FuVWNKMWR0UmNPcTBTSndoSk4zSVNTNEV1b3AzWW5raVlvR0xaejQ5MGxCd3JLX0pjdlhIMlU0ajNWQ29HQ3VaQ0RMcmdLdWJJMXcwcWpfS3F0WkQzVG5SQmFXX1duc2VwWDJDWFVKWlZlbHNGaXlmWTNVYmlHaUJ6OUpCcGNHOEtoc1l2c2trNGQyTXA2VndjWUwya05rMnllM3dmNEhfamc3dkhSNnVVVkNYb3ZBamFMVkJUWk5xRFJrSi1HSGZwNWNjbV82eGtKWGYwRTdxZjFIX290NWxlclp6Wkl1ekh6ZmhudGxzckNUcmRwSXN6QzhQWVB5R0dlVnNoUjVjV21xS0xPdEVKWFZwTTRrQzg0eXlUcWN5alAwblNiTXljQm94NzRiLUtSLUpsV25CbFRwSG55eUYxandWcFRRLUVSV0ZCZF8tMEMwUUNSdEZnS25KbERNMEtCblJfeGdYYkQwODVSSEpJS2pjLUw3blpOQi1hMHhwQmprZDVwVkdfZzk3SkNkdWlaWC1FbVpYRUlrUnBZdjRDc0g0clcwVVBDU0U2dTE0S0JJSXAzcE1IVGdCVFZTSTV4Tm5vZE55Q2xEWGRzMk5jcjhoLWVkUkhaS0xJZzBaWW5QcTRlZmxQbUdaR2dEWjVYNWdPZXBpdzk3cUt5a3hDZDQ1TXUyR3plTlF6bWR6NmhNWjRrdXdWRU1WZllEZk9hYV81by00WjVMdGxZb2hacmhMZmpKMGN5eVU0YkJIUFU2bHhYaWhreXZNQk1QaWhpcGQzVVR4SmVabGxaRmhialY0NHhJUkdUM2NpZGV5ek1WcVRvQUFMMXVGQkZDN3JTbkQzcUFhYmlYWTFMWUpDQWFMRUNpMDV0MWVPZGdGNnhvcFFfTlpBS3IzTVpkUDVHTmU4NFFLZ0pyMDlKUW1qRHJBWks4V0pSTjFwemNOU2FMQ1BfMXFSNTRnSmU0aTFVX3FiZHBIajU1eWdjVTdyenB5N2YzMXA3RTd2LVRlMXY3LUJUTTdpcVIwMERrU1lUZEk3UzYzMlhfOEZZYlg1dzNZelBTT0NsRTNkTlNsMW9qUEVUc1FGVmtFa01lRU9rZGMzVlNGY2pyMzdfWHFTQ2M2dHBXMUFKdFNydjc4T19PUUpCQUFkdWFpMG0tekZoSGhSZkZEbmhNR2tpTWltcDJmWDNfeDJ3SEh0S0dRYWtRVG04emhwNmt1ZXE1d2NXUTlsdzdGeVN1QkF6QkxiRnJxRUgzVzJvcmI0dTB0VENFMzREc3RBSU9nQlkyVTVUOVFKV2xLTUMzeFhSdWNKZGpBWFJFdmNoenNOYjRraGZTLTZoQ2lDQU05c2oyek1MdVZVVUJuOXRfT1gxdlItU1ZIV3VVazhSQ2ltTlJqZDdXSm5LcWlCTkp6WkY3dE9GWGYyTk1mcktnTG9rc1JheEV0Mm94eWZPNHpKMVlCMy1RWDM3R0VXbEx6NlUxRGR3V3FLMWdwWXNFanlmSFA2S1Bwd2dseEtUcHVnbndIU2pOaGF4YVZwTVBNanZqcVBPN3FENGxZbkxrLW5zR2R2Z3pKb09ZbWREWGlhQkpVcUlWMDFKa1hVM1FHb1JVZTZNQTJTRjBhRWRRYkdadGYweHg3WHNIcE9POUJIQ3FYemVVLVZNcVhuTWpvQXVXZFVFamVHRS1WWWNjNGo3VFllcUkxVjJNcnI2NGtaa3d4dWZpeXNCZXZXNHpGVXpUbmMwZmNuc3hFTkFNbzVIMExFN25KQW5XUFhsUEVHR3U5NEtYRFV6ZmhLZk9GRTZ3cTNmclFUUEhyal9zUnJ5Z1d5NDNaT25abXAyTjlUX2pTdWtnakZtRWVibWJvYVpLM19yNjBuTnhNVGdkemZaN1dpOXRnUGJ4WVNYcEhvVHUzNGlNd3otVHVhZGFPcUExVWZXcjhaeUtVN3dxZlpjMlBGOGJtZUF2bnhYVVAwTTc3QjZNcWZ2cTNrNVhmQ3I3YVdQVlJuYnFHckwzMFhMdGVCVkU4NDltR3dIWWFMRC1QZWl2RmVqR0JkOTE2eXdRR041MFQ3SWlOSnVJVzhEaU03Vlp4bVZIZVgtcnNJR1EyNEZ6eFdWWnVRdlNmdDdRenpoTU1jNFhFM2YzWDdWMWhCSm9pWlBKZ1lON2VsQ2NmS29VX09lOTBCcGRrRkluMWF4MzhBN0o0TU9PZVlKc0lYM1BjbkE2eGs4ZXJDSmhoQklzUENzQlRwQ0h1RTREaHlBRXZsZ2w5bFd6aDQwNzhnMEtVdTV6dXpNd0o5T0x5aW5oejlIUEVqX1hoQ3RSUHNrMlRVN0JvY0EteS0zUXVvbVhPSGcxMGFtUWxiYktRY3pWT0tGUVFrcUJnenMxVVhNNDRvZEl3Qzlpd1p2ZjlVbjhqUHpHM05vTFVoZjBJcm9PLWFWdFJGN2NoTEZDUV9zNFlCalRqY2ZyWlg1UnBRcHJJdjBzYUx6YUJvbC1hbW9vV21PR1g0Z0NkWXJocG1OWkJYUVRDXzg1R3dVZ1JqOWFyM2dWV1JmUVdrcVd5ZkZscHpUNTVZNU5odzBBYnIxZUNVSE9rdVdSUV9sZkJuMFpxc3V3Mjd4N19EYThFSlhMcU1CMkZISlFlUFhOQ1JQSE9LdzNqaDdvQTJreDQzT3NJeUI2WFhlRkx1MXV2M2FCS2s0Z3JRN2FnRjFhb0V5elFRcGtpaDVRd3FXc3lXOHZEbFdFTjF1TG9VTFlOeUh0RE92YXNzdGRmdW1HTDNwdk9Jc2x1bXBpR29CRUhSNzdrak5VdkZOc3dEbjhoU3NZc0pwQUVUQUd3cjczaWdFOTN2eHo1X2xXLVB3R0thVktZeG50c3NEQjQxamluME5ZSzJ3d3dkdzRtNnlxWVExUHI5SWw4WDFOUF96dzVXMWk4YkNYdGRlbDMtLVVPMnREUDAxQjcyTlhxalRjdUFkS1c5MGhOaXROejFnc19BWGZvWnJrZ3BDdW9UbU0xblNfeXlVMzRqbWFtd2F1eEdiTmVhN2dVWERNRHdZNW1JXzdkWkZwUFpGTDg4UUhiVTlRY0stdVNzOHdOcHY3THNaaC1qMHdjNVdmY0RlSmpYX19VSDhIRG1URjFxRWJ1ZjdRakw0eXB3UHJ6YnVleFZVSWRnVktrLXhLV08tWGJtbmVpaVZtZG5QbDlvWVVJUnB2bGdEOWVKLUVIRXAzalFxbmpsQmptN2FrY1c3eHMwX0JJdmVMOHB5aElHV1pzS1ZRa0pGZDZKLTlVVlhIaGk2elZXaENEUVZVeEFTWXl6X3hCNjBhU3hfX0dVX2tYRmFMdXZaazlQOTllb0x6MWZDdlA3YUQ4TXZHNnMzMjlZYzN3ZjRENFRQVTNZaXFDdV8tN2RaSlpXa1dEU2lRbHEtOHhkT21kRjMwNHdTbWhJMHhxbU9oeDZERExNdjVVQ2s2N0o2WkVodFRNbDNjV1I2VzVwdXZIOFlOMEhEZ1k5cXJfeHdkUTRFQTNRQlNzdEhjNTM4TGcxRHpjR2hDOHIxRy03RUg5S3ZzaUZ0TEY3eDI3UnhFeXhKTkF2XzFsbzV6SGdxTVh0NHBlNTFubk5RMkRudEdwYXlVNUVZdHhUQ1pQbUt4UlVuRkpLM0ZyUGx4anNOT0dXTHZrTFZQR0ExTDFPRzdJMzA0YndSSXg5dkMzSmFmajBXcmF5SWhQU1NSWVNhWlJpdFFNc2VPTy1nRUZoTXFMVjhaVVhfb0R5SHVfa0NEc0Q4d1FJeEZMd3l1RklUUENOWGc1QWVPakM0TEZ3YllzeHVjVHI2MF9ETl9kN3BjcWI0c0ctbFZTZE9KTlF3TzlBclpNMzBIWXZwdzU1TTFrakh4LXRUUXc2VkRWTGk2OERJWVJjRnFudFhyRHV4VTNpNXU4X2FYRjNDamdvUXVPN2FCMlNHNVhkZ0hjUTZ6NWZEZWFHZHl4akNnMEdaQWFUcGpPb2tZOEUzVjlabkNubzJTcXZRZENLUkdMWnlLZDZWbHNMYkpjRWY0cldST0dnQnRXRzE5WTRZTG5RU2MxUmwtLXJuUHByUmZ4QklVaHh5SmRUN0RxV2NOWnNuSG90TWNqYWNLUUZBWGlCOFFKUDQtcWtyZ1BJUkxOTEtuekpzUThTUzRBLVRFTDZUeUlhSDRYSVg4QUIzOC1pb1pkVWNoQmtrMkpCZExvUERMcUlFcExkVmxfYTFyQlRQNVhxMHdaaWQyOXBkV0ZDYWY4QnR3LVBTUU1EZE5GQks0SlNPTUFDVzdFeVNkcDN3cnE0MC0zeW81cWxvMnVMc0NOb3NWaS1nUDVGempLRHU2R0FDR0I3OUluVEdWYjRwMGRVNmJabVNKMnpLZjJWWFpBQWxVWjdzZUJhRkNCdVk3T0lFZC1DZ0YxZWxZWDAtOTdmUm52TENOa3FpLVhHWHdxNkNVYXU4NHRzSlZlVXZOdjVXbDY1SmJ6SVozUjU1aFM0SGFGM0xWUUhTbS1JREpvYWRxWE1fZnpZMWdsR0VBZXNRVXViWGJJZUh3eU03MnBqRGhuTVZKMUtjX0xiRW9rUVFiRDZ5SkxUeUVOUHdkX2REekJwT1RlTzF1OUJ2ekZya2d5U1dWNjRlZ0J6bFN2ZThiR3BMWWNDeXp5NkNCcHBieEt3aGtmYW9ySFQ4UDdrc0VWSWx5anZXRkc5NWZSYWMwNU1KTUJaYkFyMHpUMjVrUFREdi12NnFXSjVPSzQ5VVlmMVFuQ29rZDdVRmdOMHhrTXZMblptM1Y3bkNOeC1tVFEwUVRlNU15ZEU3eHBzcFNMVnIxczJxN0tBNlZwekJVUmlfSHozY29ONVlJYUczM05IbFNaS2tjR0pGQWttaEw3ZlhlYUNMZE1SMUlsY3E1UG1NdGJGSFBFNnp3eUNZRV9IeWkzR0NlUW1pckFrSDE5X2g5ZDIwRUdCS0tLdm4zUVZfQ25jMG0xTkV5SmYtdlpxa3NETVYweWk5U3J4UkplbmJvX29DdWhTWk82VTVSV09fRmdwLWF6a0RZR2E1cm9PNkhsLW9mZm1YaVhfWVlYazJxdjJYei1zMmpucW8tVG9VbFlBYWJycWlhVzY2VDI0ci1JNENTbEt4aTlxMEVOX3VEX0ZOWmRJQVJHUndxR29WbUl2VnRXbUlWbnlqVDlPTHJzTVR4VmhQTnAwTV9ObHVPNTNLbGhvLUp5aldkTHloM1QxXzdlWWczV2dkTGtBaGVicXpjTjJleHBiYmo3ZEYtUUF1clcyTVpnd01CLXQ4cF9CcVlxTWRxTmdUMDdkQUcwYmR1ZmpnWGluNHhtdWRCTFMwdlNTcHNhUm5kQ2s3MmdpNnFWUTFWRmRsVnBnOTVHMFo0aGFDUGFZbkE1SS1lV1JTOE1LV05kQ2dLcWFfOFkteWFnS240YmlHZEV2WG4yMy1hYVIxNHBacWNWWkN4SlZaTk13NXZpZWxteTJfTzFnS3J5MUE4YXV2alJDb0lyTnBnTGxWeFpnb25DY0lDWDRlTklNdG16azhSRURLb1VLTDdGQUQ2cWZJd3dYZUx1c3lSRGdQblVBc1dxdmpkblIwRHlMNlc4dkJoS2tYQ2E1Y1IyQWRHdTFlbFhKZVM2TEJQcXRuODVsX1JyMTFOUXNUb1lqb094MENVTl8xNUJ3S1Judzltbk0zTkhHTFFHeE5PODJrcGdFTFV1T1BNZ0RleVBHTlhVR2loYjFkTlAxX1BaX0JPOURSSkFXRHBmZnBGR09JcTVDa3E1UUYtVjdVSzRkS2tZTEI1eHk1VnVnMHhsaTBZdmlGVXFneHlMTklEcFhiNVBYWTFZQUlWZ1JjM3RTdUtyWkVtY0JKSWpKU1ZfbjNJMFB4Sk1WSi1DdnRlZmZUbk5LSy1wc095MF9YWWw1SUJpaGhOd0JBZXNSUWxDZU9MOHVtSEhYWnZialhpUEpjdnNwQ3FLTmJYTC1TYkNVN1VGZEtTRTZETnFRZkxMTFFoemxxUEhlZHlkNlRLVllxZ0UwLTNkZGdTT1pNczlSSjdmMDh5a29UcDAwVjJCTFV2ZGRIOF9SOFk0VTlqNXhxXzNLeTJVZ1piTDhUcnhxX0REb2JERG9LQjdqYjlVTVBKYkpHcFMzVUZUajBMY01GXzk4cTFIaXdrYlROQ1RodGFtbmtmYlpuNWNrWHAtalRBUkpfbFZRb3hRaVJ2aHBGZlNYbjVZLW5PT2dnaExXdklfcy1pQXA3TVRVcjg2TEJ2cmdKalFYR1A3a21uT0p5UmtibHM5dUNVUWc0TnlKQUQ5R0xieDc3bzIwbW5fY1Vkc3N2TWZKdmREMU5wQ3ZKNVBkbklhblhtM2U3YmE3LWJfYks3Z2ZZXzBGRnF6NmdxYm9CSnhTb3NmZS1DekhrLVFabHQwZlpPak9sVENtd29UWEZhQlFDSkdSaHJXaVVRQ0VnVV9fdi1Uem9WWVRVdEthMWplQzNzd3NHbWFqdWI3alJUZXRLdVdpSmpiZVBhUm9Ed3dEWTVEanBFSVpIdmw1S2xVdU1WVktHRzZHTzJFSFBvczg5NEhOdm5jcklwMUNrWUlMQ2htOE5Ya3doTklPMEt5TUZLOUk4N1BoM2Z4VE5TczJXV2VkVlFZYkZWZ3NYcExiN01MdlFhcURYMFVDcHYzalBJdTgxQ0EyNmZwVl9fc2hYMXNsdjlNNmVMZVJtemRURTZhSU5Nd0xCTGY3OTJpUnBMYldfVndQRUNDYnhNUmtRV2VYSk1rREhHN1pabjBPd0NpcjY0V3dVMm5tNHlfYkp5dy1oUGVHX2lNbm1RX050a05wOEh0d2JSd0EzUE5sUDhITFc5alNpT1FCSERJVjdmLUc1bDFZSGdlNGpYczNwa0E1THRtOEhvWEsxWkFzd3pCWHlSU3otd09BeUpFMk53TVdVNUlSX2NTb3RqNmFjemR3Ri0tZTFqVkJLeFJLQ0Y1dU8ybUdVR3JGMHg2OW5pTUptSXJiZURXbjhfd19uUEl2ckpNSzV2b1QwSW5jYnI1ZG5FenFMN2pBRW54aXdFcnpUQ2cxajVsRjg5UGp6QTQ0OVk4YnFjNTdOM1pGejJ6R0hEOElnQXVCWUtpa0RQS1Ywd1hmaVQ2UkZDbXBkeklRMEtJN3E3cWNHNjJiUW10RUljVzI4Z05lYmMwUXBVMlJDeVREX2xoQUZSaXZDRUROU3ZoZWJQWVRuZjItZGJQcG1WUi1YVG9KVUM1eUxqQ0tCY2FxaEdGT1AybFh4ZDRBaXhxNWlvbzd3QndPa2dFS3RVbF95YmVLWGNITkYzamE2d1NuaWRBcmNoR1VKbk1zQjBDUGNXeDV3ZF80eDVoZlVQVkEyVy1JUjdjTDREU3ZIa2M2QU5Pb1VtV21JRm85RXpZTG5GTU55ZXdJVTAyX0VGU0xwcTRuLWExT05UYXdUU2I1NTQ3VlRRWDJEQW5wNlJ0aXZvaEdtakNpQ212by1rWG1nMlRJclh1bEI3cUxNQ1dfVjdPZjJPQndTcDQtSEtKUk50UUtxX3o3eUpubXl5ajF1cXIwYWZsbXdDcEJNc1lEMnR2c0RjVmpsVmJLS18tNk5fR2t6N09BTHZ5RVpOZGJOR2hPMU15ZXdHdDJldGlWd05rekk2VjNiS0VXcHVuaXBCVlBYSUR3Yi1abmUyMW1PVHVBejlGTHFhSjZEVnlWWkYtUU1XeTNtMUpLVDhJRnhaOFZxTkRrVUpaMkducVdJSVVXeUphZU9rdzJTal9wRWhpWW5IX3VGOUtYZ0h4X0Y3OUV1RENWQWdwdndmb01QRHNfdEoxY1EwUVpFc1hsYTZ0ZWhoQ1JodVFnNXF5cUhIaDdSTHcwa29SZlNXMmcwSjNDRVpOODhTWDhCZlpTbmJDNmlSYnJyTVROR2VZMEZnT283MS01djhyS3hETERnTlhXMDA4WTF4RUI4U1lDUDRyTUJRTDNNVWItWkpXci13ZGd5NlFoaVRuSjJnbWd5RlYzckVlOGxET3dZTVlrR09Fck9ZcEFmanRzZXY4ZzU0dDZhVE9rZlppTDJ6ZDhKM1ptM2w1V3o3aDVfSENDaFZHMjBlTWJtUC1IdVo1YnktcU5ERWFyLTZHbkk2YUtycXA3VjBBRzl0cG5Ga2hLZnIxVjNpZy1mSTh6TkVGWUlRcGlfYkY4aVZpUnFBMzFCZ1ZDZE8tQWRjU2M2R2xxQkItZkxaV3VtUWg4VC1fVXBORU43ZmROMWg1cUdUZGd1cG51WnVHemVtUW80V1pXLS1zcVZxYkdTbU5tWWVIaFVjTGpVb2NfUkRMbnFQZUJ1b2NBdWxFNDhwbWtYYV8zN183VzlINnNZUUMxNlhMNlc2M2ZlcDZzVDJtelhwN0dLTkN1R09HN1hlMWg4VlJmZmVfU3c4bmJ6aFVva0RVUXJ1Mzh3UExkVTUyU0pkWWMwVHFmQlZhTkUwZVlxa1JaemZhdDFGTllDcHA4VUdtWW10cUhCTkFGbHFVYU9COGhDakc4VWpmXzNlTVBYczV5UWl5V2VnSTRsOWp0OTRmN3BTMU13alV0d3FMZEJxb042Sl9fendzYnJGUnYtRU9GRzRWWDdlWmtKSXBqQ0V3UDFiTmZrVUFGeFBsSnJJVlZQMEdITFZyYlM2dmZkYWNhTWplNVZvZ1pKR1p6Y1ZOTUNnLVBnYzJ4ZHplcUNwZVUxQ0dhaFdPSkdRQ0FZcWZMV3JfcVZic2dEa0hiYUYyZElvZ2tBT0l6MXgxN1RjMHdYdUhCWkFwa3VXdlA2S2U3VmNoWHVhTElmazJ1LTE2SlYzYWNtUmRHbWZKZVlpU0xId04wR2xMSWFoSS1xY0hnSVd4N0RnSmJBWHU1b0ktejBhTFFkSmQ1VWZMc21Wa2E4bEVjNzRTdno1NG4wRk1QQUVMOTFib2lmWVA5NXhjN1g2U29Rc2VUUWZES0xoRDRaTl9RSWRTQk5BU2xSSi1hRmljQmlHcV9lY0stalQzTXdnbkFacE1PSFVLX1FtdGhDRl9DUU1CRzgwSkNmUnVHT2FoNFFVSHk3V3Q3bFBCSmRaNExRTkFCM3l0QjJzNE5hYWZXNkV3dEZMT0U4RjBEd2dzTTl2VWlBQTd5VG5LY3dyVzZ3dkhUZ2tjTk5KX3ZKLXpYOVVkaGQ3LWpvUDk3cVEyNFkzQmFqeVZ6b1I2eW9aRzJTc2FseTByUEdpZEJIUEg0X0pwZUY1N2xIYnlyMm5TUEI1b2tBNW9UeGZWM0dwOEhqbnNFM01zSy1NeUxKRmFNQzRfU3cyOVBMZ0Z2ODB3Y2JxbzBBTVBxSHR3YXhmaV94VjQzeEFVczIyUm9OWVZsWXVPbFNSRm9vQ3JxQnRRRzZrSzBGZWs5TzNLY0ZlbTgyQWItWkJxMm42anAxZVpkX0ZfcDFQTTJRSHNQcnVickhxa2R5emRWbWJuaXpNTnVDaExWbE40bVByOHNkRE5fNnhsdTVLNksxNUdvOU9HYXRZaVB5bS1ZY0czQ2xrTFNGWERXVVVzWVVIbXg1WVRnZkZLUExBMnFqbncydTdMMnZ6WWJCUTZmemVWN29fTzNZOFVnbEhBbENtNWxzcHByZDB1S3JfNkZ0TGFocUdnZHc2RkUyMHg3ZXBFTGVfNkdDYkxQdTFwZ2V6QzhFUXRoX0NRZ0JPVGNiX0h5NFZUaDNTVTJPeDJFOUlLa3ZJeG1yc1Y3OWFUX3I0T0Y2ZENvVDRWcVRMZGRlc0ppY3R6MDc5SXlwSWdDV2xhdmJUdk95Rl9VQTljUlF2RzQ0Nk9WQjJpZ21CcFluXzgxN3doOXJNWjNBUEJIX2c1ZTIzMzZDelFTV3JqMHRTN2gxWUxZem9GQ2RfVW5feDlSeG5mQTRfUVRYRnBFVVc1cTcwRldMbFY3Nm94TWFDcmlPNG95eDBfakNpRDJfbmhBenNzR2pMREtEczFhT2I3cC1INzBaYzk0MzEwcXAxT19NUEw2V2VPX21EcE5hTC1ESHg0YlY3a25nNmZ2aVJpN1RUYlp6LW9ldHZIUkpIemxYeWFTekRONU9rTm1HWk03ckFudnZwRS1CVktWeTV4bDB2RGUwTWN5Smh4ek1abERGR1h0bGVRYVl0ZEx6UDYxRmVCbjV1TklmRUdtRVVNS0tYY2tHVHZLU1NON1dvd2hERjVpZE14Wl80MUdKSmJkOGRQU2xFSVJEbDBNX1lFSFU1V19IeEhNSWFLajJVRU5MR3p1N0xVeHVveFVmZzNPejY1RmtLWXptbk1nSWRBMVh3VktLZzFYd0hLMURXQ2JoNDR5d1JiZ1REV2xGTU5XSTJrWXlsQk5hSHhPMHpKMWpMTGl2T1ZiaHdUZFdoS0ZTenEtOVQ5Q2lUS1psc0pXbkxfS21WcE5rYWtrWmtTdVZkSjl0aXFXQkw1TGFXSnlLS29uQktDeDJaeHBKNjhqZGxFY1RESDV1TkNVWmZVa1M5dXJjNTJJZU1kYXZBUGx5VkEyai1OVF9hczAwWmRQMm9UWHlMNm1tRU10c2J6dE9vdW16RS00UWRRU1Y1MWwxaDhBRDBQSXIzM3RNaGdLWGlsWUU0MFhyVWs3WFJmTmE0NmNUckRqTUNvTTU0MHFVNEJmdEpCM2F5QjVFSVBaTUZENnRsRjNQUnlrQmt5Y1kwQklIa190OEl3OGdrWkMzRWxGYjZlSVhWc21DOUh4RThjVkxmTFdpUVplNTBrZVAzcVE5RDEzSlkyOUw4SFdLSGs3WTVVTE1vdkcxak8zWXdoeHVpLVAwdEZEZHpzUHhqWGpKenBydHI5X0lUVk9VWndYUERyakxiVzlYanV3Y05vZ2ZTU2dsSnYzQlZSUk1icm10YklObU55bzdzdDhFcXJRQU9va3UyVVJ3eTBmbEVYWkhOeTVhNkh3WG81VUdiMkUzczBDOFM4SnNDMHhNbkVlOERUcUFES0c0SkFNeWtrZ3NtVGdXd0g0aEtzZHpkclRqQ3dkS0dUWjJEN0JpbWdLelVVSGQzWHRZMWZFYVFwdjlScl9UTUtKajhpc0JmMy1mYnBIY2hOZHZkRy1GTVh3ZWtBdndCWXNBWVo4bWhScHFkNmN2MVRGellVcl9sTmd1bjJVSEI4Z0ZkVW5mT3F6WWlja191X19VN29uUmJLdVhmMVpfbkR3WTdMemQ5bXV4YVNmLUhEUFJUX1J4R1lUWElMSlo0QkMyU0o5Zzc2bTQ4VDMyZnhnRW51bFA1TkRJc3AzeGlKQm5wTVR0VW9QeWxpd09mVlEwRlpkV1ZWYXJNb3UyaGlNd0VENXlOTGwyekpXeFVZYXJOc1U0RnBhWXVoVW9zeEhmT2xFQnMzY2d1aFJFTTR1TE5zYXY0a1kxeDYtUk1YQ2ZEY24xdm5oZWV5S2FGZXY4bk9mbDNVaWFFbzdRRUViMkhtaVBVLUkxakU3NnZlOHFMLWlfc3lVejJsdjhrUzlIa1FuU3Q4MFdCeHRHTEhScXh6d29NQTNWbGNfd0ZCM1ZOWE5uc3dSblJrXzBLZURkYkVpLU0zRzF0WU5IQ0Y1aFBJVE5RRWprYzhMVXEwMnFYZS1hUnliVkk4QlVQd2tXcnZjaUs2NzhCZDh5am9zTmdSZFg3MXNuaHRVQ0UzdFU0RUxqRi11R0RpM2xLMjJLM0I4SVBYNHdXYll2bEF6RGhQbGxGQWhXWjVTYk1JZzJGSGQyWV94QnkwVkJVNTJpb2lZbnpFQVR6VzFyUWpQeUJ3V1U1anl2aHBOLXBpSWtzZk1XMWRGeUFmSjhKdGtyZzFZTE11Ti1TbnFad0tTVUlJZFkzM2hBWG5hVFNES3VfUXBRZkpWRUJJOXF5OGRmcF9LeFFZWTBwSTNtTjZac09pRm9LWmQ5ZUxHWlJtYjR0dDU3N3pEcXJzWUZKeFRNZUF2Tnk0Y2REc0xybm5tYUd4dThGUm56Z2p5WlJ3ZzJLb2l6eE5Vc1ZMX1ROVFlpMTJWVGFfcUhIeXpPWEotX193QklKeGw0eWY1Rnd2UG4tSWNmU20tOWtTZ1B5bVl5SkpSTjVsWG9RNFNsYTl3RUNGdWRpc3dxSkhzU2l5a0N2SDc0eGlwV1BqR2tZaDdDTy04bDRfUEJmRVZTbzBFZUQzSmc1bDlJVTVRZnVuSzhPMHFNZi13by1FYlE0WnQxQkZZT19qVmVYdU1SdlhSX1Q3OVdYemhUNWFsSUo5T2p5VENrTjVCMzZiUkZMUm5LLXJwNzZXSkZXZnZKX2VxQVZ2VjV2TGZWdDZzd21JbGpuTnFidEpIempZeFd5U01mcFpFVS1vSjY5Rlg5RWlEWE42UFp6am9QZWJUMmxhaTA1enJ4SVUwZ2tQb2h0QjZONnNwM0xkZkU4bDFKNW15ckpHUVloMkxqb2VFbXZLM3BhNWtVeG16Rk1zM2lKNm1vUG4zY1UuaG1wYkg2UUUzSlZyMHIxRFNiMUx4QlRicGVHVjEzc0NHcGtQM3ZDV3JBZw" + } + }, + { + "RequestUri": "https://fakemhsm/keys/testbackuprestore2485414557?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "880", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "50987a6c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "82" + }, + "ResponseBody": { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "deletedDate": 1656356387, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testbackuprestore2485414557/594201d6c497427c2ae4e60fa220e511", + "kty": "RSA-HSM", + "n": "jPdt8eTMvHY9fsUlM296YmRmMQxsAOfrfnLQUWPUeDleSetTv-K_NmgsDxHgPo4JKqwuqMA8kHkAbq1NN-ZKMLDqTkxxMRLIHmXOJaVoGoojcxvn3OfLeZ17kar0EdwNiA44eaLDF2tAJxVoopnK9GiY9ke-WfH_AjJM2scdXKZTDKxUv3rsC9Er4YmILMhpprymgMg3s3d5_0uOOcbVOZ9p1OQb--t8YhAP1GAgXM8N5NMlVroUd-1QwiwoestgxN44uLkzHvwvJ3ceHFIq7T0dNByWglsf9vnQqDsYeTQF4ST8owDwKtz4gAESCttCcp_1Wb4H1ztFWeOvDy2lUw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testbackuprestore2485414557", + "scheduledPurgeDate": 1656961187 + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys/testbackuprestore2485414557?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "880", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "50ae996e-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "29" + }, + "ResponseBody": { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "deletedDate": 1656356387, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "encrypt", + "decrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/testbackuprestore2485414557/594201d6c497427c2ae4e60fa220e511", + "kty": "RSA-HSM", + "n": "jPdt8eTMvHY9fsUlM296YmRmMQxsAOfrfnLQUWPUeDleSetTv-K_NmgsDxHgPo4JKqwuqMA8kHkAbq1NN-ZKMLDqTkxxMRLIHmXOJaVoGoojcxvn3OfLeZ17kar0EdwNiA44eaLDF2tAJxVoopnK9GiY9ke-WfH_AjJM2scdXKZTDKxUv3rsC9Er4YmILMhpprymgMg3s3d5_0uOOcbVOZ9p1OQb--t8YhAP1GAgXM8N5NMlVroUd-1QwiwoestgxN44uLkzHvwvJ3ceHFIq7T0dNByWglsf9vnQqDsYeTQF4ST8owDwKtz4gAESCttCcp_1Wb4H1ztFWeOvDy2lUw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testbackuprestore2485414557", + "scheduledPurgeDate": 1656961187 + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys/testbackuprestore2485414557?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 204, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "50bc5d2e-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "93" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/restore?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "22066", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "value": "ZXlKaGJHY2lPaUprYVhJaUxDSmxibU1pT2lKQk1qVTJRMEpETFVoVE5URXlJaXdpYTJsa0lqb2lZbUZqYTNWd0xYQnliM1JsWTNScGIyNHRhMlY1SW4wLi5Xdll5VXJxR3VKbC1GclRJelF1Y1FRLi1Pc0hSdVhpMl9SakhjNXZRY0RURFhxSldmN1M4LTNXVnpYby1hU1Etdm11MXFfQXNXSlNsSjVTa3BPUFVxOGk4cVQzckxLaHlZc0EwS3JaYUFfVng1NUR4WkUwcFhPLVc4bEY3aVJlQWY0V1lWeFRfdzh1YVV6M2ROaEN5aExVY21XRmJYVUxfRDM4cXF4OHlTN0NhbXQ1endVbGFXSjJtZThFRU1zTUx2TFYyQ0JVX09xMjUydGtXQkRiX2RCbWtYTk42dUVmcU1lNmNrbThWdWMyZjRPNHp4NjhHVnRYZXZQZUdqbDkwR0FEb19iZ3VpYnNFWmtteTdQS19xVHRPdW5OUVdVbFQ3R3FYMFJmQzVtZUg3dlRLRTJZeWVWRE9MNlJIdDhWTlBURVpPNzZsQW85OG00TjZIRnhyNFF0bk15dmZ6OEtIa0o2c3dmeUdIYTd0dmZXWFNFN051clZtdWpwMFM3YlkybmV3R25UYXlPTFBQekEzc25ZelZrZDZjWGh6ZlRhZkVITzRsQ0FzQXlvWWh6MjNvbWZNZDd3QmpPMHNPeWJQcDVtMTdlSVNtV1NaN1dyMXpBWHY4ZUt4aHVWSVl4Y1VTVHlZYkNiSlBicE1EQTJwdVc1N3liUk9xdmdEYm00UTlNZFNXcVZicFZaZldXS0xtRU14V2I4TFNocTBTT2FLTHlMb2ZPN2JZZ1dvMXdJUHRkcjlVV19QVXhzeVRnZ1h4UkJubUVPRS1hMGhkdzd3bHZNdjAxWXF2dmJlMWNBcVd5X3UyYllSVGtkYm1SRDJkRUU1cE1jd2dHdlZINHVBZVkwbGttM0Q1dzVQd2d5ekJ3QXZWWWh2NExZcFJLSkwxTzQ2d1NFS0p2YjhEbVV5Y1hvdWJ2WTcyZ3FWX3VIMWl2eENEbDVLZ2tHWGpoZUVKWkliX0pPaUZTaEswTll3QmtzcWVXMm9DR0doUUFyb3E0d3F4MFBtWEN1amFyQV9fQ05HeVQ1WWo3Z3NpSGw0Y0xWQmNTSm5RVFo0bHh0ZGkxRjliMnhwUVJfd1ZHd1hiZ1hvNGx0VkhGeXAyaXgzb1hwaFpQckFXRTAxU2ZSMzlieUpMWWRMZWV0RmNPN1lONzc4NlhuenFoZWpnSHc4eW9yTVRJbmZTU3k5M3lIRGd4T2ZnRzN0TVA5eGJOUVF4QVdUY1BseWJBSFdnd210SmM3U0dvRll5dUQ3SFVEOTFyUFpkTmtlb2kwX1lOSTFVaFc4N1JoSzVHNXllcF9XV2YyejdvbnFyZVF0TkxxUjByTmZxWnFBNmdveF9QRzVzejIxXzgtekgzODV1WWMtT2gxVEFqSV9Pc1d1Nk9qWXhSdXBITkZZMzBCVl9Fc2syZGJ5ajNUeDdQUkR5TTF3SktvekRwY1R5N3lzek5PNFRNcjIwc19rNDl6UFBPaEh1bjZSanp6Wnp6ZVZDdmZKQVQtMVJnSFRoMXFRTFN1LUhtM25uLW1keFBVTmVRSDMzVjlJM2NCc3JmQkk3TFpncENfNXhlT0JnQmp0aVJJc0VfMUd1eWJvRElyd0VKVFFYWTZGcDVGd1YwVmQ2V0stZTR2UzktM2wxM3Y1NnlxT1lJOGN3SkFSdURWcjFPNnBqeFZ6MDluNXpBaEpFejNpZjlkUk1kaW5wQWVRWUdtLXJ4empzUnJpVTdEZm1zZ2UzdHU5R0d0RWgtNVZfSS1CcWZXZTdTSE45emp2SVVCY1ZuaVluUTJmckVGTk5IbkpVYmdZamRsRmVPeFlWT3VmQlJUQU55aWZLWlF0WUx0cjlsWlZKUVp5a3JkZGVXRERsNldyalViZTlXbVBMaDVkcDJjN3NCWWt4TnNwWWVWYjVCYXpKVGp1S0hOWGltNnVXMjVhN3pKV2hYdnFMUnREeWRhX2FYQkpNSEdFSXZwSWktU2pxTWhkN213dl84TTZhQkJXNDRCQ1ZpLVJiVGNsZE5udnJ2SW5LR3dSRU5RQmZCQkwtM2FIbjQ0TG5iM3FTSVFBM3h0VEs1S1BTWERXVUlxdDdQUVBTQ05QWXZkY0U2VHRCNGxleUt6OWdXUUcxWXNOS0tnWjZERC1xR0VtREVVaDhOZjBmTElyUEkxSXpGaFZWOXNhZHZ0OHV5d1dGMnUyVmdudEFlSWdPSzRYZ05QVDh4NFVxMUwzXzNFRU5RaXIxS2VESkZ4NGtmcnJWTkVtUFpfdnJkN0oteGg5N2NDbkxyOUV1dXAzeC1hOTVDbmtwZ0tKMnRodmxER1ViSkJoUFlfU1hVamlYUHZ1cTZHeXE2RGhJY3V6Um1oZmF6T1dUaUxocTNrZVpzRlBMRTlLaWM3NG42NmhOTl81czBSQzFPQV9xQTAtemlNU3dvb19saGt1elZHdTVkaUhTOF9lNkZKcl9vMlBDb1FBaW5NLVVFMl9QZGVUTURXQm5UNzNXTWdqNVFmaDg3SHVFek1WbWNiVXpoUUN0S3U5eTZweDlDTktyQmhvZUxQemhqUVhNN3diSkZxSGRIZ0I4dEtuX2wweHAzVGFHNlZBRlZ3OHlJYXR5T2Q4cm11bGxHSWlLMUxFOHkwRXNNaDB5LXhsNjJzWHN0LTZGTTVlcjlqb2xtZWlWU0JOUl81aThjaWkzT3RvekdzUVV0c2Y2QlJSU3QxMzNGRzNTYkRwcjIzemZDeFoyeFhSOWk3Tlp0R1g4MnJfM0d0anB2VEVNUlV5QmdfR1U3WVhUbkNpYjRLRWRkcGI4WmFhYl9SSDRJVUpBVWU1cEJWTTBqWDktQjFFSmVST2hXajVhTFZFT0JhMjBxV1lDZ1BfS3RWbHNYX20zRUw3UVBPc1V5SzRFRDF0eG1FdlJWdTRpME9xcDRlb3BVY1VNR1NTZENWX1dfc1ZIN3YxMFczVUJuU0ZmTk9fNXliR1YwRGx6LWVRT1Z4NnpTT0JXUWdydWZlSk9wcG5rRjdNY3pWNVdYMnNXT0lkRjIwU1VEWWI5ZEN1aUNFU2t2WUtxMFVGVUEySG1XUUYyTm9wUWxzeU95SXJERGpUakZGc0IwdlBWdUE2MWhoWTRZTktna3VrWm9tVHNDSGxjRmZOR1pWZXJsY01KOC04dVRkTjlGZVk5Q0VidHVsZndpdGc1RE4tVUpwUXpxa0tuckd0TVJpRG1xY0tHRUY4Z3FsQUIxbnFoTFk1aTJGWTBkQVBEdE1YaEU0cDMzazhKT0RfaUdUZ1lTMWhwcWt0MkJfMFd0TVdnWFJ0NnVkaEo2eUQxU0xUem9XS19tY2RrYTFqdm5YVnF4SVdMSVV2ajlHenkwYi1uSDBZb2M3NmxHSVpIeS1VdTJ2RVdiOUxEdmhBb2F0SDlWTmd4LUN5c2Y2MHJUZlVuNjNOa1FVQUxVWkQtTldVSUVTZUc0Q2tWVkc4UXBPb1g2WFhHSHRBTkZkRWpJUUM3bTBjU1Bsam5ucmVuSmxVY3pWclRXenpYQThKQVBxVDZ2RWEwaWd6eDQzMzF0MmI4eHkyUlpMa0NWU2p6bkw5VGN1V2xoWkJtRFp3X1BnMUxCYjVNbnZ4NWRLSEdmall5aC12Ukc2ZEJFU0pkQmduNkwtdThiSXJFc1RQM1JjOWJHWjVDUFIzQ0YwMy1pSlI0TjdYSnMxaUlMdVoxYkI2eUpib3pkbDdCdkNIVWJTR3VrQmVncnZYTDg5dnJLeGxscmM0Mjc0MExFOWFISzBvanFjX0JTZWtRQ2t0ckV3V05Fd09Ja01tZnF1VjVvVHRrZldGTmpkQkZOZnNsLWo3VHJLcVNZMmE3bUQzeF9iTlNUdVN0djRodUlWQUdiY2s4dWx2eDhsVFR1ZEZCQjdZVnRlT3Zndy10bWpqUTlXa1A5Umh1dkZOOVgyREtSc3pTcEowY0tYNjhwY3FMNkZPQ2VMZ0NHeUxJOWdCeWV6aGNpT3RSWEZIUEswWmlZLVp1X2xPRFZoYV9IcE5MUnJ1NEJFbzliYmpDU0x2ek1zeGNXUktrczUzMnpncjZncFNYZnpBUFlybkZzTkxEYXBUVmdhZkdlMTZPYWNsMXM3NS1HQmJnNVh1T2h2dmNfbjJHeWo0MGhXQ0lwa00zMVhQX01ZWGtxR0hrQy1JTkFETTJ3RkVoNy1TMjJpRnE5RjJhY20xakhwSTdLUjYyNVJ0MlF2MXJlTDlhdjNDZzZMUGs3VG05LUxRRDVFMmdlLXlTaHlXOGRzcTk5UmlfbmNNX2dCanNOY1MyOEZJaUg1eFhSTG92R1RrdV85TGFiYnJYdnE0X0E3em1DWU1JZThkTEZpb2t1cFNTVV9yaTFacjc2X2FrbFZZYzRBNXZ6ay1za3pTREZzbVVFYzg0MGVod1dZbHUzSFMxcUFoYlNHd2RtMzFvZHFBSWR2WGktNzR1cjNxXzliZEE1c0Z6dUNhQTVHZXJramVmaFFmeUtQS080cm0xX3ZJMTlGVWtZeFh5eHREdWVOc1pNOXlxY0VTQmdCNHAzallCak5sbWdJMUFTUzlNMHFYdGhBaWswcGN0SE4xSE96ZGg3SHdudFdUTkJ1SUJQY00tYTZMMGg2alpvRUZUa1ZKMnkzenRJd3lSYmVBQTVQQ05pOExOQUZnUWFwa0JneDgyYmgwTGk1RTF1OWhXYmctM00xUElTUzlzMGdyTTVYdkNjbHlISEROWGludWZXbkZ3TkFQWEN6dHNNNkpqQVJuLWctNlBEdGxGYkJfNUZhdEFBam5JWkZnVDV0ckR1X1ZTZkkyZHExUndvN2lRTnpmTFJnM1cxYUdQcThJcnF5bHVtZUx4WWRiaGRkYm1fcF9wTnF4ZUpPSzFuRFI4dUJtRTA2RFVDSFBJSnBndUIxNW1XeERfVmFaUENRRE1PNzljUnBKbHNWZ1lVUVAxWEFHRnhJT1pCTUhxY1ZYMXR2Rm5oLTh2RFZBRXhVMUxMRTJxYlVZZ1pxalpKclBSNkZ1M3NYakgwZ19jdU5kM1o1LXVBNTl2UDZMOXlSTEN5dnMtYUxCSFRsbEJ3SnRpZWhPWFM0T1F6OXFJckU5OEwyZGZLOERsMUo0X0cyVnVkTmRSM1lodHJhRjFyMlM1VEIxVmw4MHpaLVFqdlppamg4bVhwMXlxM2JjcFE1MHdQLUxqTVdRamZIdV9NcUdRZDlBcUd4NzBxdkwtcldRdGdvam9Fa1lpZVZEd1VxdkdLMXZqYVJvbXJYaU1Rcy05dzl4LUxHSVJ3YmVMNHNvcmZFd2h2ZlNHMEprZjhqMzVpRWVJTEMyRUhJTVM3Tm5zemVxZFRhMFJyTUxfdzgyM0Zia1Y3QUJSSGtfbXFEdHN2anV0MXROTmpBcHBWTjN5b0ZEQWNtUXV4bll3bkhiOEx3am51WjduVHNpMERQNUFYNTZDNzdmWllCRzZHMnZwc1pnNFZPV1Z6Y3ZRT0prcVdlVDlSSjhqRWl4WFZzaV9tV2w0ckdaTTVZX2luUHlkLXEtZ1hjdzRiUWNnaF9KZmhBT21FRTN3Nzd2S3NBNVBmSzJobVhKY2M2cDNQZmJVTG1sdmduZUFNT0s3bnhWaWFKRWZ3ZFFaLUxielk2c2F5ei1VUlVYTVdxeXh2ZmNRUUZ6eUxMdEpsNW5tYWplMFE3OWlvaUVHamwtRThoVFRRQzBLQmVzWVAtaGJwNkxkNURCSkV3Z0hMdElCbzA1YXR6ZWZTcjNNS04yWkVWX1BPMWM3MlhxREkzVzFCajJ5XzVjYWczcnRYeUk2amVlT3BpNktNbnp1NEZwUWZrenZuS2dvTlE0bWc1NzBkbnFsd0poYkQ2bTFSUy1MaEdHU0JxcEw1LU4xZ25qRDZwdzNSSlRLMmFTaUdXS2lweWI3MFh2SFR4RVBDRWRxdWpiY3FuR1BhM01sVWtLWGpKUzluMXdkcEZyaW9GRFpfWDAzMFZkaFYwN0FYSU0tNXJmZkUyM1hHVWhic0tDekxJOE4yc0NfdlM0NzNPQ2Q4WkJxWENISXcxSFJYLXRYaDltb2RRaHhiUXRNNmZBWE9sdGRvVUJEMWJ4WjZid0htT1Z1MmI4cG1pYmszVjlROHFhNWFfT0RhVlJSbmhoUnlVMW1qMGw0X2ZBSWRzd01CbDJsX0s3WmE1VHVrZHlyZ2E2cEo2cElKRHBQeUZfc0FRQ3EyREo1SktPX3ZyckRaVDV2T1lqVHNlM1JLb2xaa2JETDBheDNPUDJBN01hLWd2VkNHbzJnUWpmVnhtVXhsSjJWSDJpLUFRRmVqWnUybWRFYWdXVXlyUTBiRWtZcnhNZXM5MG9fTmdLTENNV3cwVmFNajVCYTlTdnRReUpPRl9JX3U3RnR6dndiMk10UGFXVXdYUGhLSEVGTDhaZ2xyOFhCRGwzWTltbU5MemZyckdjWHUtbHE0RU1rekVvLVVlWnhxVmNQRXI2dGRGMm95YlFtVjRXUVZwc1dCRjRtWlVudzNYOTAyV0EwaEQyYk1TS0I1RmVvZWJCemo0OHhRTGVTSkRPeTNYbGR1eU84U0N4OHAySGhnOGl6MEE0YWtwZmxVMjlpY0NwQjVlSkVLY2ZGU01PSlhMNDlfME50MXZSSzUtWVZ2QU9ONDZkYjVQWWtDeHcxRkFvaXA1NmpXQUtOQ01jcHB6ZFRvUEh5NW1QM05jclhfZ1owWG9aa000eS1FNjBpUkFEdFNkZDhsQnNnR3BIUExQWk9FeEZiRU5DbUlSaGppOHhCamJ6OHE3MEMwSjBMRGRlZEkzNzl2YmI3SlZkLXlhaHBzZzEycWZTM0pQSTNWUWtwajVROU5TNWN5a2ZfY0ViSWRNTlZyMERTRm51RGlWVV94aDRxWm5NbVhvZDAxX2szZnZVZHpZS0dXZFZtaHlKOHAzREY4cFc1NWR5dG5jYXdyT0diaXhDdjhhVDBUMU5UQjdvclVyOTd5aUJLZlhTeFctSmtUWnJNZ1dsMEhhMjg2Y2pfc0p2OG9SdFRNTDBISHNYVkR0azNWUFdvVjRHYnVxOGdhVE5aWnR6TnZZXzRmOXRCbnlrTlk3TElxZWZZNjlhYjVLUHZBQ3pwUFlzT3FvdHZOTDROX3NDdDRNcE1YemloV3dKLVhpZzRPQkotd0N3M3JGRC1SNnJzRW0ydDdpT3l1YlI5MFdOS1pMWmphaV9DRU1nQ01SVGczeExnZHJ5djNhMFFELUdEUEFYQkNPbkdLRzhFT2VDM29tLXlYZXJnbHlWZjlfeXJIY0Q3bVkzaVFVS29VSW5ubFZ3OTBDdF9SaEJkZU1XRmdLT2dRcURuT1p1cGVkV3lsTmsydEtFU01Zb2VRdE9odUhVcmpmMTU0MEtXaFhlQ0J4ZEFYTlV4aDdTMk92cTdTZHVtdzJjZnVoS1lNb3pWaE0wSVVtcWZ1aTMxQ01EcW91S2ZybjlNT3dOdF8zeVJzLVlvc1NGY0JDaE1peUV2b2lKQ2ZkWjRCZXk2VUJkMC1FOEVkUGlsN2piMEdnNVluWkZmT0lFVTc5Z1JTQmdkZXRmQU1BT1F1T3RFMXlVekFyd2RZQWVJZm5ZcWJmQUZrQ2prUkhWVlRrLTNxbmtmeHEwTWlYdGFwNFYwR1pjRGJGSWxyYThFRENfRXhicUZ2WG5TM29pT0pHdDc3Y19KNlRCdEtTQzZzMnhISkRkdGRMZ3hQeHd3M1lzT2MxVkhSam56cjVxaTFQNGFfZHhReVZQNm9qQmJEYjhuLXFnMHFBS2t5U3pLN3lxdER6d0tITmVpSW45T1dVbWF6UEdEeGpSTWxVblpsWFlwUi1peG5LYWs4b2ZtWmhkbldaOVZPaXZrNFpCejZqSUlDWlNINzE5akE0dFM0elBIdE5tWF9pS0d5bEEwblB6TldTVVp2MEdVY0xpNlhkNUhENTFrcGdXS0xWSWRydVQwMU41ZnplcWhmY0RCYTJya24xVGJndjFWc0tSWXkwTVl2UF9KZHRZRnVSOVY4VWZWemRIN1NGNjdPU044VWV1ZXJTSUU3ci1LdkZ4NDNaaklndXhqeGc5NjFiRDlfLXVELVhvQlRJU3YwUm00MnFNbmdDWWJnWDhEN3Jaelg0Qi1UVUI2Q1drSlQxVU5xWS1ZN0RnM0RobW51eG51WmI1NXNCNWNVdXJEUzdmcVFYbjVWUEo5UHBGdW5vdzVDMFRXRmhPeGFHMW5OZ1M5UWwzSUlhUHJ5MnBmdTlpdWNHcm50QXM0THNoNjRZZXZQWnExMDJUU190YkJtVkhNeGI0TEI4N29NWENJc1ZuMm9uUGpXTmgteU1heXdjbjhoZjVFUWRiN0xFSVVMU0JSNURBMEZOanJONmFENHNQS254UGpaTW0yYWVBeG82WHhRU2Z1MGZWbTVpb2lpVUZvYTkwbVBQUWFLVGF0YzZleUp3UG5qaDYycG1xM0lWQUdNbWNjNENHV3JBNVByNXFERDdLQndLejkyY3JBU2l3WW9XX1NTTW1HenBCYk1tM1l4WEMtRG0zaFRTNVYySGo2VFoycWx6YW1SSnN5RGRDZDZueE44T3FoWXNSWHl5eDU3ZmVpUk5BOTlhV0VaM3hQT3FXYklQUXNPbFhkWDd1cjdxUE5tN3hTeklJcUtUSll5cDVTczhEQzFZQ0hNNXJWZ3RucS1qbjZtOVY1UE5nUkd0THhyeVZNaXk0QnFuWTh6Sy1iYWlNb1VFcWl0Tmd3Z0EtUjBkc2hhRGRsUnJ3UHJwOEhiY2RxVlZBZ2RtVVRhZXFhdThkWFo0dnlJaEpoN1F5RG1zdHl3VWFDZUQ4Q09RU3A2V0tlTEE3bUNnZngxYS1fUnhxS0JtM21lYnBta2JEbW1RUUozWXB3WDRqM0JIUWx4bHgwUHhIRmxBdi1UUFRQVlhDVGN4N3FjUUIwZktxb0daQlNRWGx3a2hvZzVPc3l3ekZsbmlXRndiYlU5TUFiUDZFclZDODNQaklEMzIxQ21HZmxxMlRCc0U3M0FpSzBKdDFkdE92dFV4a1BDbnV1Wm53a2ZzLUFwcGN3VHkteXVjQWNmODI4Y2hEekN2cjd0NWdEcjlsX3JOUzJRUHdQUTRtRUVlYnNWR2haVGZ5RzhqenFPUi1UdzFfd3RLTW00ZE5ZR3JScUtLT3BjRU43Y1Z5OWRaTDZRb0pUUmxkU3hILXFfUjV6LTZTTjN1SmFOdzNCQ2tQSUZ3SWpPUFdjQld3M1JURzdUMEtyTjVLek9BU2R4bUs0YWpWcHEzUXViSkkzWGdZaXY3cHh5M01USnZWT0p2NHRZdTlicGdkQ0VNdkNZTTJxd21rRmdwbjN1UHhSanhUeUhkaXBaelpZX3lxeXhiM253akxhXzJmS0IxWnpZejhzWDZoSWRBSGMwMkFGLVRWTjRHZ1FBNU1tcWVOV3FWSTQzMUVZMkRIZWNubFVDa2FuVWNKMWR0UmNPcTBTSndoSk4zSVNTNEV1b3AzWW5raVlvR0xaejQ5MGxCd3JLX0pjdlhIMlU0ajNWQ29HQ3VaQ0RMcmdLdWJJMXcwcWpfS3F0WkQzVG5SQmFXX1duc2VwWDJDWFVKWlZlbHNGaXlmWTNVYmlHaUJ6OUpCcGNHOEtoc1l2c2trNGQyTXA2VndjWUwya05rMnllM3dmNEhfamc3dkhSNnVVVkNYb3ZBamFMVkJUWk5xRFJrSi1HSGZwNWNjbV82eGtKWGYwRTdxZjFIX290NWxlclp6Wkl1ekh6ZmhudGxzckNUcmRwSXN6QzhQWVB5R0dlVnNoUjVjV21xS0xPdEVKWFZwTTRrQzg0eXlUcWN5alAwblNiTXljQm94NzRiLUtSLUpsV25CbFRwSG55eUYxandWcFRRLUVSV0ZCZF8tMEMwUUNSdEZnS25KbERNMEtCblJfeGdYYkQwODVSSEpJS2pjLUw3blpOQi1hMHhwQmprZDVwVkdfZzk3SkNkdWlaWC1FbVpYRUlrUnBZdjRDc0g0clcwVVBDU0U2dTE0S0JJSXAzcE1IVGdCVFZTSTV4Tm5vZE55Q2xEWGRzMk5jcjhoLWVkUkhaS0xJZzBaWW5QcTRlZmxQbUdaR2dEWjVYNWdPZXBpdzk3cUt5a3hDZDQ1TXUyR3plTlF6bWR6NmhNWjRrdXdWRU1WZllEZk9hYV81by00WjVMdGxZb2hacmhMZmpKMGN5eVU0YkJIUFU2bHhYaWhreXZNQk1QaWhpcGQzVVR4SmVabGxaRmhialY0NHhJUkdUM2NpZGV5ek1WcVRvQUFMMXVGQkZDN3JTbkQzcUFhYmlYWTFMWUpDQWFMRUNpMDV0MWVPZGdGNnhvcFFfTlpBS3IzTVpkUDVHTmU4NFFLZ0pyMDlKUW1qRHJBWks4V0pSTjFwemNOU2FMQ1BfMXFSNTRnSmU0aTFVX3FiZHBIajU1eWdjVTdyenB5N2YzMXA3RTd2LVRlMXY3LUJUTTdpcVIwMERrU1lUZEk3UzYzMlhfOEZZYlg1dzNZelBTT0NsRTNkTlNsMW9qUEVUc1FGVmtFa01lRU9rZGMzVlNGY2pyMzdfWHFTQ2M2dHBXMUFKdFNydjc4T19PUUpCQUFkdWFpMG0tekZoSGhSZkZEbmhNR2tpTWltcDJmWDNfeDJ3SEh0S0dRYWtRVG04emhwNmt1ZXE1d2NXUTlsdzdGeVN1QkF6QkxiRnJxRUgzVzJvcmI0dTB0VENFMzREc3RBSU9nQlkyVTVUOVFKV2xLTUMzeFhSdWNKZGpBWFJFdmNoenNOYjRraGZTLTZoQ2lDQU05c2oyek1MdVZVVUJuOXRfT1gxdlItU1ZIV3VVazhSQ2ltTlJqZDdXSm5LcWlCTkp6WkY3dE9GWGYyTk1mcktnTG9rc1JheEV0Mm94eWZPNHpKMVlCMy1RWDM3R0VXbEx6NlUxRGR3V3FLMWdwWXNFanlmSFA2S1Bwd2dseEtUcHVnbndIU2pOaGF4YVZwTVBNanZqcVBPN3FENGxZbkxrLW5zR2R2Z3pKb09ZbWREWGlhQkpVcUlWMDFKa1hVM1FHb1JVZTZNQTJTRjBhRWRRYkdadGYweHg3WHNIcE9POUJIQ3FYemVVLVZNcVhuTWpvQXVXZFVFamVHRS1WWWNjNGo3VFllcUkxVjJNcnI2NGtaa3d4dWZpeXNCZXZXNHpGVXpUbmMwZmNuc3hFTkFNbzVIMExFN25KQW5XUFhsUEVHR3U5NEtYRFV6ZmhLZk9GRTZ3cTNmclFUUEhyal9zUnJ5Z1d5NDNaT25abXAyTjlUX2pTdWtnakZtRWVibWJvYVpLM19yNjBuTnhNVGdkemZaN1dpOXRnUGJ4WVNYcEhvVHUzNGlNd3otVHVhZGFPcUExVWZXcjhaeUtVN3dxZlpjMlBGOGJtZUF2bnhYVVAwTTc3QjZNcWZ2cTNrNVhmQ3I3YVdQVlJuYnFHckwzMFhMdGVCVkU4NDltR3dIWWFMRC1QZWl2RmVqR0JkOTE2eXdRR041MFQ3SWlOSnVJVzhEaU03Vlp4bVZIZVgtcnNJR1EyNEZ6eFdWWnVRdlNmdDdRenpoTU1jNFhFM2YzWDdWMWhCSm9pWlBKZ1lON2VsQ2NmS29VX09lOTBCcGRrRkluMWF4MzhBN0o0TU9PZVlKc0lYM1BjbkE2eGs4ZXJDSmhoQklzUENzQlRwQ0h1RTREaHlBRXZsZ2w5bFd6aDQwNzhnMEtVdTV6dXpNd0o5T0x5aW5oejlIUEVqX1hoQ3RSUHNrMlRVN0JvY0EteS0zUXVvbVhPSGcxMGFtUWxiYktRY3pWT0tGUVFrcUJnenMxVVhNNDRvZEl3Qzlpd1p2ZjlVbjhqUHpHM05vTFVoZjBJcm9PLWFWdFJGN2NoTEZDUV9zNFlCalRqY2ZyWlg1UnBRcHJJdjBzYUx6YUJvbC1hbW9vV21PR1g0Z0NkWXJocG1OWkJYUVRDXzg1R3dVZ1JqOWFyM2dWV1JmUVdrcVd5ZkZscHpUNTVZNU5odzBBYnIxZUNVSE9rdVdSUV9sZkJuMFpxc3V3Mjd4N19EYThFSlhMcU1CMkZISlFlUFhOQ1JQSE9LdzNqaDdvQTJreDQzT3NJeUI2WFhlRkx1MXV2M2FCS2s0Z3JRN2FnRjFhb0V5elFRcGtpaDVRd3FXc3lXOHZEbFdFTjF1TG9VTFlOeUh0RE92YXNzdGRmdW1HTDNwdk9Jc2x1bXBpR29CRUhSNzdrak5VdkZOc3dEbjhoU3NZc0pwQUVUQUd3cjczaWdFOTN2eHo1X2xXLVB3R0thVktZeG50c3NEQjQxamluME5ZSzJ3d3dkdzRtNnlxWVExUHI5SWw4WDFOUF96dzVXMWk4YkNYdGRlbDMtLVVPMnREUDAxQjcyTlhxalRjdUFkS1c5MGhOaXROejFnc19BWGZvWnJrZ3BDdW9UbU0xblNfeXlVMzRqbWFtd2F1eEdiTmVhN2dVWERNRHdZNW1JXzdkWkZwUFpGTDg4UUhiVTlRY0stdVNzOHdOcHY3THNaaC1qMHdjNVdmY0RlSmpYX19VSDhIRG1URjFxRWJ1ZjdRakw0eXB3UHJ6YnVleFZVSWRnVktrLXhLV08tWGJtbmVpaVZtZG5QbDlvWVVJUnB2bGdEOWVKLUVIRXAzalFxbmpsQmptN2FrY1c3eHMwX0JJdmVMOHB5aElHV1pzS1ZRa0pGZDZKLTlVVlhIaGk2elZXaENEUVZVeEFTWXl6X3hCNjBhU3hfX0dVX2tYRmFMdXZaazlQOTllb0x6MWZDdlA3YUQ4TXZHNnMzMjlZYzN3ZjRENFRQVTNZaXFDdV8tN2RaSlpXa1dEU2lRbHEtOHhkT21kRjMwNHdTbWhJMHhxbU9oeDZERExNdjVVQ2s2N0o2WkVodFRNbDNjV1I2VzVwdXZIOFlOMEhEZ1k5cXJfeHdkUTRFQTNRQlNzdEhjNTM4TGcxRHpjR2hDOHIxRy03RUg5S3ZzaUZ0TEY3eDI3UnhFeXhKTkF2XzFsbzV6SGdxTVh0NHBlNTFubk5RMkRudEdwYXlVNUVZdHhUQ1pQbUt4UlVuRkpLM0ZyUGx4anNOT0dXTHZrTFZQR0ExTDFPRzdJMzA0YndSSXg5dkMzSmFmajBXcmF5SWhQU1NSWVNhWlJpdFFNc2VPTy1nRUZoTXFMVjhaVVhfb0R5SHVfa0NEc0Q4d1FJeEZMd3l1RklUUENOWGc1QWVPakM0TEZ3YllzeHVjVHI2MF9ETl9kN3BjcWI0c0ctbFZTZE9KTlF3TzlBclpNMzBIWXZwdzU1TTFrakh4LXRUUXc2VkRWTGk2OERJWVJjRnFudFhyRHV4VTNpNXU4X2FYRjNDamdvUXVPN2FCMlNHNVhkZ0hjUTZ6NWZEZWFHZHl4akNnMEdaQWFUcGpPb2tZOEUzVjlabkNubzJTcXZRZENLUkdMWnlLZDZWbHNMYkpjRWY0cldST0dnQnRXRzE5WTRZTG5RU2MxUmwtLXJuUHByUmZ4QklVaHh5SmRUN0RxV2NOWnNuSG90TWNqYWNLUUZBWGlCOFFKUDQtcWtyZ1BJUkxOTEtuekpzUThTUzRBLVRFTDZUeUlhSDRYSVg4QUIzOC1pb1pkVWNoQmtrMkpCZExvUERMcUlFcExkVmxfYTFyQlRQNVhxMHdaaWQyOXBkV0ZDYWY4QnR3LVBTUU1EZE5GQks0SlNPTUFDVzdFeVNkcDN3cnE0MC0zeW81cWxvMnVMc0NOb3NWaS1nUDVGempLRHU2R0FDR0I3OUluVEdWYjRwMGRVNmJabVNKMnpLZjJWWFpBQWxVWjdzZUJhRkNCdVk3T0lFZC1DZ0YxZWxZWDAtOTdmUm52TENOa3FpLVhHWHdxNkNVYXU4NHRzSlZlVXZOdjVXbDY1SmJ6SVozUjU1aFM0SGFGM0xWUUhTbS1JREpvYWRxWE1fZnpZMWdsR0VBZXNRVXViWGJJZUh3eU03MnBqRGhuTVZKMUtjX0xiRW9rUVFiRDZ5SkxUeUVOUHdkX2REekJwT1RlTzF1OUJ2ekZya2d5U1dWNjRlZ0J6bFN2ZThiR3BMWWNDeXp5NkNCcHBieEt3aGtmYW9ySFQ4UDdrc0VWSWx5anZXRkc5NWZSYWMwNU1KTUJaYkFyMHpUMjVrUFREdi12NnFXSjVPSzQ5VVlmMVFuQ29rZDdVRmdOMHhrTXZMblptM1Y3bkNOeC1tVFEwUVRlNU15ZEU3eHBzcFNMVnIxczJxN0tBNlZwekJVUmlfSHozY29ONVlJYUczM05IbFNaS2tjR0pGQWttaEw3ZlhlYUNMZE1SMUlsY3E1UG1NdGJGSFBFNnp3eUNZRV9IeWkzR0NlUW1pckFrSDE5X2g5ZDIwRUdCS0tLdm4zUVZfQ25jMG0xTkV5SmYtdlpxa3NETVYweWk5U3J4UkplbmJvX29DdWhTWk82VTVSV09fRmdwLWF6a0RZR2E1cm9PNkhsLW9mZm1YaVhfWVlYazJxdjJYei1zMmpucW8tVG9VbFlBYWJycWlhVzY2VDI0ci1JNENTbEt4aTlxMEVOX3VEX0ZOWmRJQVJHUndxR29WbUl2VnRXbUlWbnlqVDlPTHJzTVR4VmhQTnAwTV9ObHVPNTNLbGhvLUp5aldkTHloM1QxXzdlWWczV2dkTGtBaGVicXpjTjJleHBiYmo3ZEYtUUF1clcyTVpnd01CLXQ4cF9CcVlxTWRxTmdUMDdkQUcwYmR1ZmpnWGluNHhtdWRCTFMwdlNTcHNhUm5kQ2s3MmdpNnFWUTFWRmRsVnBnOTVHMFo0aGFDUGFZbkE1SS1lV1JTOE1LV05kQ2dLcWFfOFkteWFnS240YmlHZEV2WG4yMy1hYVIxNHBacWNWWkN4SlZaTk13NXZpZWxteTJfTzFnS3J5MUE4YXV2alJDb0lyTnBnTGxWeFpnb25DY0lDWDRlTklNdG16azhSRURLb1VLTDdGQUQ2cWZJd3dYZUx1c3lSRGdQblVBc1dxdmpkblIwRHlMNlc4dkJoS2tYQ2E1Y1IyQWRHdTFlbFhKZVM2TEJQcXRuODVsX1JyMTFOUXNUb1lqb094MENVTl8xNUJ3S1Judzltbk0zTkhHTFFHeE5PODJrcGdFTFV1T1BNZ0RleVBHTlhVR2loYjFkTlAxX1BaX0JPOURSSkFXRHBmZnBGR09JcTVDa3E1UUYtVjdVSzRkS2tZTEI1eHk1VnVnMHhsaTBZdmlGVXFneHlMTklEcFhiNVBYWTFZQUlWZ1JjM3RTdUtyWkVtY0JKSWpKU1ZfbjNJMFB4Sk1WSi1DdnRlZmZUbk5LSy1wc095MF9YWWw1SUJpaGhOd0JBZXNSUWxDZU9MOHVtSEhYWnZialhpUEpjdnNwQ3FLTmJYTC1TYkNVN1VGZEtTRTZETnFRZkxMTFFoemxxUEhlZHlkNlRLVllxZ0UwLTNkZGdTT1pNczlSSjdmMDh5a29UcDAwVjJCTFV2ZGRIOF9SOFk0VTlqNXhxXzNLeTJVZ1piTDhUcnhxX0REb2JERG9LQjdqYjlVTVBKYkpHcFMzVUZUajBMY01GXzk4cTFIaXdrYlROQ1RodGFtbmtmYlpuNWNrWHAtalRBUkpfbFZRb3hRaVJ2aHBGZlNYbjVZLW5PT2dnaExXdklfcy1pQXA3TVRVcjg2TEJ2cmdKalFYR1A3a21uT0p5UmtibHM5dUNVUWc0TnlKQUQ5R0xieDc3bzIwbW5fY1Vkc3N2TWZKdmREMU5wQ3ZKNVBkbklhblhtM2U3YmE3LWJfYks3Z2ZZXzBGRnF6NmdxYm9CSnhTb3NmZS1DekhrLVFabHQwZlpPak9sVENtd29UWEZhQlFDSkdSaHJXaVVRQ0VnVV9fdi1Uem9WWVRVdEthMWplQzNzd3NHbWFqdWI3alJUZXRLdVdpSmpiZVBhUm9Ed3dEWTVEanBFSVpIdmw1S2xVdU1WVktHRzZHTzJFSFBvczg5NEhOdm5jcklwMUNrWUlMQ2htOE5Ya3doTklPMEt5TUZLOUk4N1BoM2Z4VE5TczJXV2VkVlFZYkZWZ3NYcExiN01MdlFhcURYMFVDcHYzalBJdTgxQ0EyNmZwVl9fc2hYMXNsdjlNNmVMZVJtemRURTZhSU5Nd0xCTGY3OTJpUnBMYldfVndQRUNDYnhNUmtRV2VYSk1rREhHN1pabjBPd0NpcjY0V3dVMm5tNHlfYkp5dy1oUGVHX2lNbm1RX050a05wOEh0d2JSd0EzUE5sUDhITFc5alNpT1FCSERJVjdmLUc1bDFZSGdlNGpYczNwa0E1THRtOEhvWEsxWkFzd3pCWHlSU3otd09BeUpFMk53TVdVNUlSX2NTb3RqNmFjemR3Ri0tZTFqVkJLeFJLQ0Y1dU8ybUdVR3JGMHg2OW5pTUptSXJiZURXbjhfd19uUEl2ckpNSzV2b1QwSW5jYnI1ZG5FenFMN2pBRW54aXdFcnpUQ2cxajVsRjg5UGp6QTQ0OVk4YnFjNTdOM1pGejJ6R0hEOElnQXVCWUtpa0RQS1Ywd1hmaVQ2UkZDbXBkeklRMEtJN3E3cWNHNjJiUW10RUljVzI4Z05lYmMwUXBVMlJDeVREX2xoQUZSaXZDRUROU3ZoZWJQWVRuZjItZGJQcG1WUi1YVG9KVUM1eUxqQ0tCY2FxaEdGT1AybFh4ZDRBaXhxNWlvbzd3QndPa2dFS3RVbF95YmVLWGNITkYzamE2d1NuaWRBcmNoR1VKbk1zQjBDUGNXeDV3ZF80eDVoZlVQVkEyVy1JUjdjTDREU3ZIa2M2QU5Pb1VtV21JRm85RXpZTG5GTU55ZXdJVTAyX0VGU0xwcTRuLWExT05UYXdUU2I1NTQ3VlRRWDJEQW5wNlJ0aXZvaEdtakNpQ212by1rWG1nMlRJclh1bEI3cUxNQ1dfVjdPZjJPQndTcDQtSEtKUk50UUtxX3o3eUpubXl5ajF1cXIwYWZsbXdDcEJNc1lEMnR2c0RjVmpsVmJLS18tNk5fR2t6N09BTHZ5RVpOZGJOR2hPMU15ZXdHdDJldGlWd05rekk2VjNiS0VXcHVuaXBCVlBYSUR3Yi1abmUyMW1PVHVBejlGTHFhSjZEVnlWWkYtUU1XeTNtMUpLVDhJRnhaOFZxTkRrVUpaMkducVdJSVVXeUphZU9rdzJTal9wRWhpWW5IX3VGOUtYZ0h4X0Y3OUV1RENWQWdwdndmb01QRHNfdEoxY1EwUVpFc1hsYTZ0ZWhoQ1JodVFnNXF5cUhIaDdSTHcwa29SZlNXMmcwSjNDRVpOODhTWDhCZlpTbmJDNmlSYnJyTVROR2VZMEZnT283MS01djhyS3hETERnTlhXMDA4WTF4RUI4U1lDUDRyTUJRTDNNVWItWkpXci13ZGd5NlFoaVRuSjJnbWd5RlYzckVlOGxET3dZTVlrR09Fck9ZcEFmanRzZXY4ZzU0dDZhVE9rZlppTDJ6ZDhKM1ptM2w1V3o3aDVfSENDaFZHMjBlTWJtUC1IdVo1YnktcU5ERWFyLTZHbkk2YUtycXA3VjBBRzl0cG5Ga2hLZnIxVjNpZy1mSTh6TkVGWUlRcGlfYkY4aVZpUnFBMzFCZ1ZDZE8tQWRjU2M2R2xxQkItZkxaV3VtUWg4VC1fVXBORU43ZmROMWg1cUdUZGd1cG51WnVHemVtUW80V1pXLS1zcVZxYkdTbU5tWWVIaFVjTGpVb2NfUkRMbnFQZUJ1b2NBdWxFNDhwbWtYYV8zN183VzlINnNZUUMxNlhMNlc2M2ZlcDZzVDJtelhwN0dLTkN1R09HN1hlMWg4VlJmZmVfU3c4bmJ6aFVva0RVUXJ1Mzh3UExkVTUyU0pkWWMwVHFmQlZhTkUwZVlxa1JaemZhdDFGTllDcHA4VUdtWW10cUhCTkFGbHFVYU9COGhDakc4VWpmXzNlTVBYczV5UWl5V2VnSTRsOWp0OTRmN3BTMU13alV0d3FMZEJxb042Sl9fendzYnJGUnYtRU9GRzRWWDdlWmtKSXBqQ0V3UDFiTmZrVUFGeFBsSnJJVlZQMEdITFZyYlM2dmZkYWNhTWplNVZvZ1pKR1p6Y1ZOTUNnLVBnYzJ4ZHplcUNwZVUxQ0dhaFdPSkdRQ0FZcWZMV3JfcVZic2dEa0hiYUYyZElvZ2tBT0l6MXgxN1RjMHdYdUhCWkFwa3VXdlA2S2U3VmNoWHVhTElmazJ1LTE2SlYzYWNtUmRHbWZKZVlpU0xId04wR2xMSWFoSS1xY0hnSVd4N0RnSmJBWHU1b0ktejBhTFFkSmQ1VWZMc21Wa2E4bEVjNzRTdno1NG4wRk1QQUVMOTFib2lmWVA5NXhjN1g2U29Rc2VUUWZES0xoRDRaTl9RSWRTQk5BU2xSSi1hRmljQmlHcV9lY0stalQzTXdnbkFacE1PSFVLX1FtdGhDRl9DUU1CRzgwSkNmUnVHT2FoNFFVSHk3V3Q3bFBCSmRaNExRTkFCM3l0QjJzNE5hYWZXNkV3dEZMT0U4RjBEd2dzTTl2VWlBQTd5VG5LY3dyVzZ3dkhUZ2tjTk5KX3ZKLXpYOVVkaGQ3LWpvUDk3cVEyNFkzQmFqeVZ6b1I2eW9aRzJTc2FseTByUEdpZEJIUEg0X0pwZUY1N2xIYnlyMm5TUEI1b2tBNW9UeGZWM0dwOEhqbnNFM01zSy1NeUxKRmFNQzRfU3cyOVBMZ0Z2ODB3Y2JxbzBBTVBxSHR3YXhmaV94VjQzeEFVczIyUm9OWVZsWXVPbFNSRm9vQ3JxQnRRRzZrSzBGZWs5TzNLY0ZlbTgyQWItWkJxMm42anAxZVpkX0ZfcDFQTTJRSHNQcnVickhxa2R5emRWbWJuaXpNTnVDaExWbE40bVByOHNkRE5fNnhsdTVLNksxNUdvOU9HYXRZaVB5bS1ZY0czQ2xrTFNGWERXVVVzWVVIbXg1WVRnZkZLUExBMnFqbncydTdMMnZ6WWJCUTZmemVWN29fTzNZOFVnbEhBbENtNWxzcHByZDB1S3JfNkZ0TGFocUdnZHc2RkUyMHg3ZXBFTGVfNkdDYkxQdTFwZ2V6QzhFUXRoX0NRZ0JPVGNiX0h5NFZUaDNTVTJPeDJFOUlLa3ZJeG1yc1Y3OWFUX3I0T0Y2ZENvVDRWcVRMZGRlc0ppY3R6MDc5SXlwSWdDV2xhdmJUdk95Rl9VQTljUlF2RzQ0Nk9WQjJpZ21CcFluXzgxN3doOXJNWjNBUEJIX2c1ZTIzMzZDelFTV3JqMHRTN2gxWUxZem9GQ2RfVW5feDlSeG5mQTRfUVRYRnBFVVc1cTcwRldMbFY3Nm94TWFDcmlPNG95eDBfakNpRDJfbmhBenNzR2pMREtEczFhT2I3cC1INzBaYzk0MzEwcXAxT19NUEw2V2VPX21EcE5hTC1ESHg0YlY3a25nNmZ2aVJpN1RUYlp6LW9ldHZIUkpIemxYeWFTekRONU9rTm1HWk03ckFudnZwRS1CVktWeTV4bDB2RGUwTWN5Smh4ek1abERGR1h0bGVRYVl0ZEx6UDYxRmVCbjV1TklmRUdtRVVNS0tYY2tHVHZLU1NON1dvd2hERjVpZE14Wl80MUdKSmJkOGRQU2xFSVJEbDBNX1lFSFU1V19IeEhNSWFLajJVRU5MR3p1N0xVeHVveFVmZzNPejY1RmtLWXptbk1nSWRBMVh3VktLZzFYd0hLMURXQ2JoNDR5d1JiZ1REV2xGTU5XSTJrWXlsQk5hSHhPMHpKMWpMTGl2T1ZiaHdUZFdoS0ZTenEtOVQ5Q2lUS1psc0pXbkxfS21WcE5rYWtrWmtTdVZkSjl0aXFXQkw1TGFXSnlLS29uQktDeDJaeHBKNjhqZGxFY1RESDV1TkNVWmZVa1M5dXJjNTJJZU1kYXZBUGx5VkEyai1OVF9hczAwWmRQMm9UWHlMNm1tRU10c2J6dE9vdW16RS00UWRRU1Y1MWwxaDhBRDBQSXIzM3RNaGdLWGlsWUU0MFhyVWs3WFJmTmE0NmNUckRqTUNvTTU0MHFVNEJmdEpCM2F5QjVFSVBaTUZENnRsRjNQUnlrQmt5Y1kwQklIa190OEl3OGdrWkMzRWxGYjZlSVhWc21DOUh4RThjVkxmTFdpUVplNTBrZVAzcVE5RDEzSlkyOUw4SFdLSGs3WTVVTE1vdkcxak8zWXdoeHVpLVAwdEZEZHpzUHhqWGpKenBydHI5X0lUVk9VWndYUERyakxiVzlYanV3Y05vZ2ZTU2dsSnYzQlZSUk1icm10YklObU55bzdzdDhFcXJRQU9va3UyVVJ3eTBmbEVYWkhOeTVhNkh3WG81VUdiMkUzczBDOFM4SnNDMHhNbkVlOERUcUFES0c0SkFNeWtrZ3NtVGdXd0g0aEtzZHpkclRqQ3dkS0dUWjJEN0JpbWdLelVVSGQzWHRZMWZFYVFwdjlScl9UTUtKajhpc0JmMy1mYnBIY2hOZHZkRy1GTVh3ZWtBdndCWXNBWVo4bWhScHFkNmN2MVRGellVcl9sTmd1bjJVSEI4Z0ZkVW5mT3F6WWlja191X19VN29uUmJLdVhmMVpfbkR3WTdMemQ5bXV4YVNmLUhEUFJUX1J4R1lUWElMSlo0QkMyU0o5Zzc2bTQ4VDMyZnhnRW51bFA1TkRJc3AzeGlKQm5wTVR0VW9QeWxpd09mVlEwRlpkV1ZWYXJNb3UyaGlNd0VENXlOTGwyekpXeFVZYXJOc1U0RnBhWXVoVW9zeEhmT2xFQnMzY2d1aFJFTTR1TE5zYXY0a1kxeDYtUk1YQ2ZEY24xdm5oZWV5S2FGZXY4bk9mbDNVaWFFbzdRRUViMkhtaVBVLUkxakU3NnZlOHFMLWlfc3lVejJsdjhrUzlIa1FuU3Q4MFdCeHRHTEhScXh6d29NQTNWbGNfd0ZCM1ZOWE5uc3dSblJrXzBLZURkYkVpLU0zRzF0WU5IQ0Y1aFBJVE5RRWprYzhMVXEwMnFYZS1hUnliVkk4QlVQd2tXcnZjaUs2NzhCZDh5am9zTmdSZFg3MXNuaHRVQ0UzdFU0RUxqRi11R0RpM2xLMjJLM0I4SVBYNHdXYll2bEF6RGhQbGxGQWhXWjVTYk1JZzJGSGQyWV94QnkwVkJVNTJpb2lZbnpFQVR6VzFyUWpQeUJ3V1U1anl2aHBOLXBpSWtzZk1XMWRGeUFmSjhKdGtyZzFZTE11Ti1TbnFad0tTVUlJZFkzM2hBWG5hVFNES3VfUXBRZkpWRUJJOXF5OGRmcF9LeFFZWTBwSTNtTjZac09pRm9LWmQ5ZUxHWlJtYjR0dDU3N3pEcXJzWUZKeFRNZUF2Tnk0Y2REc0xybm5tYUd4dThGUm56Z2p5WlJ3ZzJLb2l6eE5Vc1ZMX1ROVFlpMTJWVGFfcUhIeXpPWEotX193QklKeGw0eWY1Rnd2UG4tSWNmU20tOWtTZ1B5bVl5SkpSTjVsWG9RNFNsYTl3RUNGdWRpc3dxSkhzU2l5a0N2SDc0eGlwV1BqR2tZaDdDTy04bDRfUEJmRVZTbzBFZUQzSmc1bDlJVTVRZnVuSzhPMHFNZi13by1FYlE0WnQxQkZZT19qVmVYdU1SdlhSX1Q3OVdYemhUNWFsSUo5T2p5VENrTjVCMzZiUkZMUm5LLXJwNzZXSkZXZnZKX2VxQVZ2VjV2TGZWdDZzd21JbGpuTnFidEpIempZeFd5U01mcFpFVS1vSjY5Rlg5RWlEWE42UFp6am9QZWJUMmxhaTA1enJ4SVUwZ2tQb2h0QjZONnNwM0xkZkU4bDFKNW15ckpHUVloMkxqb2VFbXZLM3BhNWtVeG16Rk1zM2lKNm1vUG4zY1UuaG1wYkg2UUUzSlZyMHIxRFNiMUx4QlRicGVHVjEzc0NHcGtQM3ZDV3JBZw" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "728", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "50dcdc98-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "50" + }, + "ResponseBody": { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": true, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testbackuprestore2485414557/594201d6c497427c2ae4e60fa220e511", + "kty": "RSA-HSM", + "n": "jPdt8eTMvHY9fsUlM296YmRmMQxsAOfrfnLQUWPUeDleSetTv-K_NmgsDxHgPo4JKqwuqMA8kHkAbq1NN-ZKMLDqTkxxMRLIHmXOJaVoGoojcxvn3OfLeZ17kar0EdwNiA44eaLDF2tAJxVoopnK9GiY9ke-WfH_AjJM2scdXKZTDKxUv3rsC9Er4YmILMhpprymgMg3s3d5_0uOOcbVOZ9p1OQb--t8YhAP1GAgXM8N5NMlVroUd-1QwiwoestgxN44uLkzHvwvJ3ceHFIq7T0dNByWglsf9vnQqDsYeTQF4ST8owDwKtz4gAESCttCcp_1Wb4H1ztFWeOvDy2lUw" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testbackuprestore2485414557/?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "728", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "50edc968-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "13" + }, + "ResponseBody": { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": true, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testbackuprestore2485414557/594201d6c497427c2ae4e60fa220e511", + "kty": "RSA-HSM", + "n": "jPdt8eTMvHY9fsUlM296YmRmMQxsAOfrfnLQUWPUeDleSetTv-K_NmgsDxHgPo4JKqwuqMA8kHkAbq1NN-ZKMLDqTkxxMRLIHmXOJaVoGoojcxvn3OfLeZ17kar0EdwNiA44eaLDF2tAJxVoopnK9GiY9ke-WfH_AjJM2scdXKZTDKxUv3rsC9Er4YmILMhpprymgMg3s3d5_0uOOcbVOZ9p1OQb--t8YhAP1GAgXM8N5NMlVroUd-1QwiwoestgxN44uLkzHvwvJ3ceHFIq7T0dNByWglsf9vnQqDsYeTQF4ST8owDwKtz4gAESCttCcp_1Wb4H1ztFWeOvDy2lUw" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testbackuprestore2485414557?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "879", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "50f96d40-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "74" + }, + "ResponseBody": { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": true, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "deletedDate": 1656356388, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "decrypt", + "encrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/testbackuprestore2485414557/594201d6c497427c2ae4e60fa220e511", + "kty": "RSA-HSM", + "n": "jPdt8eTMvHY9fsUlM296YmRmMQxsAOfrfnLQUWPUeDleSetTv-K_NmgsDxHgPo4JKqwuqMA8kHkAbq1NN-ZKMLDqTkxxMRLIHmXOJaVoGoojcxvn3OfLeZ17kar0EdwNiA44eaLDF2tAJxVoopnK9GiY9ke-WfH_AjJM2scdXKZTDKxUv3rsC9Er4YmILMhpprymgMg3s3d5_0uOOcbVOZ9p1OQb--t8YhAP1GAgXM8N5NMlVroUd-1QwiwoestgxN44uLkzHvwvJ3ceHFIq7T0dNByWglsf9vnQqDsYeTQF4ST8owDwKtz4gAESCttCcp_1Wb4H1ztFWeOvDy2lUw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testbackuprestore2485414557", + "scheduledPurgeDate": 1656961188 + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestBeginDeleteKeyRehydrate.json b/sdk/keyvault/azkeys/testdata/recordings/TestBeginDeleteKeyRehydrate.json deleted file mode 100644 index 56a674f575b6..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestBeginDeleteKeyRehydrate.json +++ /dev/null @@ -1,637 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "49144bd5-9e7e-4f19-ab07-6a8d7f72bc49" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "698", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=1335;rd_age=4529;brd_age=14364;ra_notif_age=510;da_notif_age=1860;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "99ac4447-45d0-4386-b1b9-060ba2eb92fe" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "841", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=1335;rd_age=4529;brd_age=14364;ra_notif_age=510;da_notif_age=1860;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ad0a05f8-6429-48fc-ac7e-515cd1fcb728" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004", - "deletedDate": 1652818984, - "scheduledPurgeDate": 1653423784, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=24;da_age=1335;rd_age=4529;brd_age=14364;ra_notif_age=510;da_notif_age=1860;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "d55e0f66-ef2c-4f6a-8444-8e8f45cd8498" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: rehydrate-poller60869004" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "841", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:05 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=25;da_age=1336;rd_age=4531;brd_age=14365;ra_notif_age=511;da_notif_age=1862;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3e24a83c-cf8f-4134-a380-10399caf7ed1" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004", - "deletedDate": 1652818984, - "scheduledPurgeDate": 1653423784, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "312", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:05 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=25;da_age=1336;rd_age=4531;brd_age=14365;ra_notif_age=511;da_notif_age=1862;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "927a33c8-59a3-4068-b5a9-3827df05a044" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) rehydrate-poller60869004 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004/recover?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "698", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:05 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=25;da_age=1337;rd_age=4531;brd_age=14365;ra_notif_age=511;da_notif_age=1862;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "690f6162-b5eb-4759-a808-d3bf76f15384" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "312", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:05 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=25;da_age=1337;rd_age=4531;brd_age=14365;ra_notif_age=511;da_notif_age=1862;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b3b9d99f-5ca9-426f-bd45-e3600ea5d6c5" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) rehydrate-poller60869004 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "698", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=26;da_age=1338;rd_age=4532;brd_age=14367;ra_notif_age=513;da_notif_age=1863;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "446dc812-360b-4589-86e1-dbeb23ec9cd0" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "698", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=26;da_age=1338;rd_age=4532;brd_age=14367;ra_notif_age=513;da_notif_age=1863;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ceaaa429-0614-4b43-99d1-3fb2d3af2a07" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "841", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=27;da_age=1338;rd_age=4532;brd_age=14367;ra_notif_age=513;da_notif_age=1863;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0ced1a7d-d11c-466e-ab37-7f935a77efe3" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004", - "deletedDate": 1652818987, - "scheduledPurgeDate": 1653423787, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=27;da_age=1338;rd_age=4532;brd_age=14367;ra_notif_age=513;da_notif_age=1863;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "45c2cadc-5b4e-48df-82e5-eb72cbfcedaf" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: rehydrate-poller60869004" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "841", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=28;da_age=1339;rd_age=4534;brd_age=14368;ra_notif_age=514;da_notif_age=1865;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "5d114f51-3dd7-430a-ba1c-fbb6023c6e09" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004", - "deletedDate": 1652818987, - "scheduledPurgeDate": 1653423787, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/rehydrate-poller60869004/e5ff4f726aa145799cf5a747537c899d", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "oMGAbZw5Z6hyiw3R3hdfrXAu88ivkEnGiGHkxl96HUg48PSdRJOOaHs11BP-cl5zRs9gP-rJWV54dY7efUEfq6Lxv1r1mFUSQeevTqiMseqXbGoVh_Uk4MAg0N02KRqMa_EflkQPoJR0mTTkamrczu6TwlSaonyb9r6Q6XUwXtSAxwqCRYxtY_xLO9USuuucPULoSXSdLGpLlpUhrddRigNZOgGr4IbF_onWjcO8cduW8D8SguQ69-ekT5iPbAGWzil1cx2_oITMTpVXUef5enkef40OTyUsH-oKH0SHWdwtrpRZDB6w0Ck4G38khL60Xw50xigv6MzMTIxXRkPzTQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818984, - "updated": 1652818984, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/rehydrate-poller60869004?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:23:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=28;da_age=1339;rd_age=4534;brd_age=14368;ra_notif_age=514;da_notif_age=1865;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e95fda3a-b1c4-4323-a801-7e2425e5f5c6" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesPatchSemantics/NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/EC.json similarity index 60% rename from sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesPatchSemantics/NON-HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestCRUD/EC.json index fd955fce314e..a061ed7f0910 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesPatchSemantics/NON-HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/EC.json @@ -1,7 +1,7 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/create?api-version=7.3", + "RequestUri": "https://fakevault/keys/testcrud2971189930/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", @@ -15,7 +15,7 @@ "Cache-Control": "no-cache", "Content-Length": "97", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:58 GMT", + "Date": "Mon, 27 Jun 2022 19:16:06 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", @@ -23,8 +23,8 @@ "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "8ec2218e-994b-4972-8cde-9c8a9f87aa72" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "e35763a8-162d-455a-83ca-a76dd430b6f3" }, "ResponseBody": { "error": { @@ -34,171 +34,184 @@ } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/create?api-version=7.3", + "RequestUri": "https://fakevault/keys/testcrud2971189930/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "56", + "Content-Length": "99", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { - "key_ops": [ - "verify" - ], + "attributes": { + "exp": 2524611661, + "nbf": 2208992461 + }, + "crv": "P-256K", "kty": "EC", "tags": { - "tag": "value" + "key": "value" } }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "432", + "Content-Length": "461", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:58 GMT", + "Date": "Mon, 27 Jun 2022 19:16:08 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=567;da_age=5967;rd_age=5967;brd_age=5999;ra_notif_age=872;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=0;da_age=7450;rd_age=7450;brd_age=2266;ra_notif_age=32;dec_lev=3;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "f95a29b6-075b-4723-8465-e37059d8172f" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "74db7b54-f8ae-4466-8ce9-614bb9109139" }, "ResponseBody": { "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/e44c3a1dfb8d4bb0972d618f157c840f", + "kid": "https://fakevault/keys/testcrud2971189930/d05bbee4aa134ab4b8c01efcfcdbec84", "kty": "EC", "key_ops": [ + "sign", "verify" ], - "crv": "P-256", - "x": "XkV_8G4UHU-p-GCyZZ03fG60Dwr4NXdEMo83TnMm4zQ", - "y": "yROMnGiaKOFzR58yyVu7Rj52EI80Q7LkYn-v6gtsomo" + "crv": "P-256K", + "x": "_cz7Ss-72JIfSPqcjKPjAurmxtLrhgt0cq3Z2TFMLBA", + "y": "I4M5g7NL6Wio0XlVavk1XJn3ja2CfvIHLN0EtRBBjx4" }, "attributes": { "enabled": true, - "created": 1654558319, - "updated": 1654558319, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357368, + "updated": 1656357368, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", "recoverableDays": 7 }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/?api-version=7.3", - "RequestMethod": "PATCH", + "RequestUri": "https://fakevault/keys/testcrud2971189930/?api-version=7.3", + "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "17", - "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "RequestBody": { - "attributes": {} - }, + "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "432", + "Content-Length": "461", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:58 GMT", + "Date": "Mon, 27 Jun 2022 19:16:08 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=567;da_age=5967;rd_age=5967;brd_age=5999;ra_notif_age=872;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=7450;rd_age=7450;brd_age=2266;ra_notif_age=32;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "87c21fa5-3bd1-4a00-b3d6-6dd26847f076" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a3d5ee54-5da2-4fc3-92cc-713ac9966cc1" }, "ResponseBody": { "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/e44c3a1dfb8d4bb0972d618f157c840f", + "kid": "https://fakevault/keys/testcrud2971189930/d05bbee4aa134ab4b8c01efcfcdbec84", "kty": "EC", "key_ops": [ + "sign", "verify" ], - "crv": "P-256", - "x": "XkV_8G4UHU-p-GCyZZ03fG60Dwr4NXdEMo83TnMm4zQ", - "y": "yROMnGiaKOFzR58yyVu7Rj52EI80Q7LkYn-v6gtsomo" + "crv": "P-256K", + "x": "_cz7Ss-72JIfSPqcjKPjAurmxtLrhgt0cq3Z2TFMLBA", + "y": "I4M5g7NL6Wio0XlVavk1XJn3ja2CfvIHLN0EtRBBjx4" }, "attributes": { "enabled": true, - "created": 1654558319, - "updated": 1654558319, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357368, + "updated": 1656357368, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", "recoverableDays": 7 }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakevault/keys/testcrud2971189930/d05bbee4aa134ab4b8c01efcfcdbec84?api-version=7.3", + "RequestMethod": "PATCH", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", + "Content-Length": "32", + "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "RequestBody": null, + "RequestBody": { + "attributes": { + "enabled": false + } + }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "432", + "Content-Length": "462", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:59 GMT", + "Date": "Mon, 27 Jun 2022 19:16:08 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=567;da_age=5967;rd_age=5967;brd_age=5999;ra_notif_age=873;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=7451;rd_age=7451;brd_age=2266;ra_notif_age=32;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "d709bb43-7489-401f-bfac-326f328b479f" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "47c0cf04-e9f4-4eed-a259-de0344e616eb" }, "ResponseBody": { "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/e44c3a1dfb8d4bb0972d618f157c840f", + "kid": "https://fakevault/keys/testcrud2971189930/d05bbee4aa134ab4b8c01efcfcdbec84", "kty": "EC", "key_ops": [ + "sign", "verify" ], - "crv": "P-256", - "x": "XkV_8G4UHU-p-GCyZZ03fG60Dwr4NXdEMo83TnMm4zQ", - "y": "yROMnGiaKOFzR58yyVu7Rj52EI80Q7LkYn-v6gtsomo" + "crv": "P-256K", + "x": "_cz7Ss-72JIfSPqcjKPjAurmxtLrhgt0cq3Z2TFMLBA", + "y": "I4M5g7NL6Wio0XlVavk1XJn3ja2CfvIHLN0EtRBBjx4" }, "attributes": { - "enabled": true, - "created": 1654558319, - "updated": 1654558319, + "enabled": false, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357368, + "updated": 1656357369, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", "recoverableDays": 7 }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600?api-version=7.3", + "RequestUri": "https://fakevault/keys/testcrud2971189930?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -210,48 +223,51 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "582", + "Content-Length": "599", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:59 GMT", + "Date": "Mon, 27 Jun 2022 19:16:09 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=567;da_age=5968;rd_age=5967;brd_age=5999;ra_notif_age=873;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=7451;rd_age=7451;brd_age=2266;ra_notif_age=32;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "3859155b-f6d8-42bb-afb9-3739f7bf996a" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "706170ed-8e60-4047-9487-ae1b22396a16" }, "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/test-update-semantics1559329600", - "deletedDate": 1654558319, - "scheduledPurgeDate": 1655163119, + "recoveryId": "https://fakevault/deletedkeys/testcrud2971189930", + "deletedDate": 1656357369, + "scheduledPurgeDate": 1656962169, "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/e44c3a1dfb8d4bb0972d618f157c840f", + "kid": "https://fakevault/keys/testcrud2971189930/d05bbee4aa134ab4b8c01efcfcdbec84", "kty": "EC", "key_ops": [ + "sign", "verify" ], - "crv": "P-256", - "x": "XkV_8G4UHU-p-GCyZZ03fG60Dwr4NXdEMo83TnMm4zQ", - "y": "yROMnGiaKOFzR58yyVu7Rj52EI80Q7LkYn-v6gtsomo" + "crv": "P-256K", + "x": "_cz7Ss-72JIfSPqcjKPjAurmxtLrhgt0cq3Z2TFMLBA", + "y": "I4M5g7NL6Wio0XlVavk1XJn3ja2CfvIHLN0EtRBBjx4" }, "attributes": { - "enabled": true, - "created": 1654558319, - "updated": 1654558319, + "enabled": false, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357368, + "updated": 1656357369, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", "recoverableDays": 7 }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/test-update-semantics1559329600?api-version=7.3", + "RequestUri": "https://fakevault/deletedkeys/testcrud2971189930?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", @@ -263,29 +279,29 @@ "StatusCode": 404, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "99", + "Content-Length": "86", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:59 GMT", + "Date": "Mon, 27 Jun 2022 19:16:09 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=568;da_age=5968;rd_age=5968;brd_age=5999;ra_notif_age=873;dec_lev=0;", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=7451;rd_age=7451;brd_age=2267;ra_notif_age=33;dec_lev=0;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "9d978122-d084-4be6-a074-0631a86bc584" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a3e6fb6b-6c9f-435f-823d-3fd8327b644c" }, "ResponseBody": { "error": { "code": "KeyNotFound", - "message": "Deleted Key not found: test-update-semantics1559329600" + "message": "Deleted Key not found: testcrud2971189930" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/test-update-semantics1559329600?api-version=7.3", + "RequestUri": "https://fakevault/deletedkeys/testcrud2971189930?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", @@ -297,48 +313,51 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "582", + "Content-Length": "599", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:32:00 GMT", + "Date": "Mon, 27 Jun 2022 19:16:19 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=569;da_age=5969;rd_age=5969;brd_age=6001;ra_notif_age=874;dec_lev=0;", + "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=7461;rd_age=7461;brd_age=2277;ra_notif_age=43;dec_lev=0;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "08ae8674-8f8c-4dd1-ba3d-0852bbf4191d" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "fc0199c0-124d-4b08-99ba-56f4bb6d3483" }, "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/test-update-semantics1559329600", - "deletedDate": 1654558319, - "scheduledPurgeDate": 1655163119, + "recoveryId": "https://fakevault/deletedkeys/testcrud2971189930", + "deletedDate": 1656357369, + "scheduledPurgeDate": 1656962169, "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/test-update-semantics1559329600/e44c3a1dfb8d4bb0972d618f157c840f", + "kid": "https://fakevault/keys/testcrud2971189930/d05bbee4aa134ab4b8c01efcfcdbec84", "kty": "EC", "key_ops": [ + "sign", "verify" ], - "crv": "P-256", - "x": "XkV_8G4UHU-p-GCyZZ03fG60Dwr4NXdEMo83TnMm4zQ", - "y": "yROMnGiaKOFzR58yyVu7Rj52EI80Q7LkYn-v6gtsomo" + "crv": "P-256K", + "x": "_cz7Ss-72JIfSPqcjKPjAurmxtLrhgt0cq3Z2TFMLBA", + "y": "I4M5g7NL6Wio0XlVavk1XJn3ja2CfvIHLN0EtRBBjx4" }, "attributes": { - "enabled": true, - "created": 1654558319, - "updated": 1654558319, + "enabled": false, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357368, + "updated": 1656357369, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", "recoverableDays": 7 }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/test-update-semantics1559329600?api-version=7.3", + "RequestUri": "https://fakevault/deletedkeys/testcrud2971189930?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -350,17 +369,17 @@ "StatusCode": 204, "ResponseHeaders": { "Cache-Control": "no-cache", - "Date": "Mon, 06 Jun 2022 23:32:01 GMT", + "Date": "Mon, 27 Jun 2022 19:16:19 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=569;da_age=5969;rd_age=5969;brd_age=6001;ra_notif_age=874;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=7461;rd_age=7461;brd_age=2277;ra_notif_age=43;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "3b799a0b-0eb9-41dc-84cc-cca6fb566383" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "0f6a3d4c-65c8-42f4-b1b4-988ef6bcc5d4" }, "ResponseBody": null } diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesPatchSemantics/HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/EC_MHSM.json similarity index 63% rename from sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesPatchSemantics/HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestCRUD/EC_MHSM.json index 86ec2881d6da..a78a7e6b279c 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesPatchSemantics/HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/EC_MHSM.json @@ -1,7 +1,7 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testcrud467594978/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", @@ -20,35 +20,37 @@ "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "ddcad94a-e5f0-11ec-806f-6045bd86d5ca", + "x-ms-request-id": "a7869438-f64d-11ec-bfb4-6045bda27deb", "x-ms-server-latency": "1" }, "ResponseBody": null }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testcrud467594978/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "56", + "Content-Length": "99", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { - "key_ops": [ - "verify" - ], + "attributes": { + "exp": 2524611661, + "nbf": 2208992461 + }, + "crv": "P-256K", "kty": "EC", "tags": { - "tag": "value" + "key": "value" } }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "460", + "Content-Length": "488", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -56,136 +58,147 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "ddefa3f6-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "302" + "x-ms-request-id": "a7c27c46-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "291" }, "ResponseBody": { "attributes": { - "created": 1654558322, + "created": 1656357392, "enabled": true, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558322 + "updated": 1656357392 }, "key": { - "crv": "P-256", + "crv": "P-256K", "key_ops": [ - "verify" + "verify", + "sign" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/b2b61cf30c7d0d6a32ed0f23deaa18e6", + "kid": "https://fakemhsm/keys/testcrud467594978/7bdb464e72df06e411ba9fa1782b2817", "kty": "EC-HSM", - "x": "PqswM1sVkmdBZxX7jRmyOU32CGdOKVSAIovLNy1jtZ0", - "y": "wP9IlIdKG48wsmuKhyUweiCBSckvruH1gPmksoWP6e0" + "x": "jxnB91IzRxD9Z5dBNGoC894xSIa_mYIZ80E3riqNhAU", + "y": "BXwdU4f0vd6YlLm6RPyzEN6Vct7lQI7gTGLHybdBzkU" }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/?api-version=7.3", - "RequestMethod": "PATCH", + "RequestUri": "https://fakemhsm/keys/testcrud467594978/?api-version=7.3", + "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "17", - "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "RequestBody": { - "attributes": {} - }, + "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "460", + "Content-Length": "488", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "de257788-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "181" + "x-ms-request-id": "a803603a-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "96" }, "ResponseBody": { "attributes": { - "created": 1654558322, + "created": 1656357392, "enabled": true, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558322 + "updated": 1656357392 }, "key": { - "crv": "P-256", + "crv": "P-256K", "key_ops": [ + "sign", "verify" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/b2b61cf30c7d0d6a32ed0f23deaa18e6", + "kid": "https://fakemhsm/keys/testcrud467594978/7bdb464e72df06e411ba9fa1782b2817", "kty": "EC-HSM", - "x": "PqswM1sVkmdBZxX7jRmyOU32CGdOKVSAIovLNy1jtZ0", - "y": "wP9IlIdKG48wsmuKhyUweiCBSckvruH1gPmksoWP6e0" + "x": "jxnB91IzRxD9Z5dBNGoC894xSIa_mYIZ80E3riqNhAU", + "y": "BXwdU4f0vd6YlLm6RPyzEN6Vct7lQI7gTGLHybdBzkU" }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakemhsm/keys/testcrud467594978/7bdb464e72df06e411ba9fa1782b2817?api-version=7.3", + "RequestMethod": "PATCH", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", + "Content-Length": "32", + "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "RequestBody": null, + "RequestBody": { + "attributes": { + "enabled": false + } + }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "460", + "Content-Length": "489", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "de4a0a4e-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "13" + "x-ms-request-id": "a81b4f10-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "54" }, "ResponseBody": { "attributes": { - "created": 1654558322, - "enabled": true, + "created": 1656357392, + "enabled": false, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558322 + "updated": 1656357393 }, "key": { - "crv": "P-256", + "crv": "P-256K", "key_ops": [ - "verify" + "verify", + "sign" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/b2b61cf30c7d0d6a32ed0f23deaa18e6", + "kid": "https://fakemhsm/keys/testcrud467594978/7bdb464e72df06e411ba9fa1782b2817", "kty": "EC-HSM", - "x": "PqswM1sVkmdBZxX7jRmyOU32CGdOKVSAIovLNy1jtZ0", - "y": "wP9IlIdKG48wsmuKhyUweiCBSckvruH1gPmksoWP6e0" + "x": "jxnB91IzRxD9Z5dBNGoC894xSIa_mYIZ80E3riqNhAU", + "y": "BXwdU4f0vd6YlLm6RPyzEN6Vct7lQI7gTGLHybdBzkU" }, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testcrud467594978?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -197,7 +210,7 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "615", + "Content-Length": "630", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -205,38 +218,41 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "de54407c-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "68" + "x-ms-request-id": "a82bfb3a-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "75" }, "ResponseBody": { "attributes": { - "created": 1654558322, - "enabled": true, + "created": 1656357392, + "enabled": false, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558322 + "updated": 1656357393 }, - "deletedDate": 1654558322, + "deletedDate": 1656357393, "key": { - "crv": "P-256", + "crv": "P-256K", "key_ops": [ - "verify" + "verify", + "sign" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/b2b61cf30c7d0d6a32ed0f23deaa18e6", + "kid": "https://fakemhsm/keys/testcrud467594978/7bdb464e72df06e411ba9fa1782b2817", "kty": "EC-HSM", - "x": "PqswM1sVkmdBZxX7jRmyOU32CGdOKVSAIovLNy1jtZ0", - "y": "wP9IlIdKG48wsmuKhyUweiCBSckvruH1gPmksoWP6e0" + "x": "jxnB91IzRxD9Z5dBNGoC894xSIa_mYIZ80E3riqNhAU", + "y": "BXwdU4f0vd6YlLm6RPyzEN6Vct7lQI7gTGLHybdBzkU" }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/test-update-semantics2536715674", - "scheduledPurgeDate": 1655163122, + "recoveryId": "https://fakemhsm/deletedkeys/testcrud467594978", + "scheduledPurgeDate": 1656962193, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/test-update-semantics2536715674?api-version=7.3", + "RequestUri": "https://fakemhsm/deletedkeys/testcrud467594978?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", @@ -248,47 +264,50 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "615", + "Content-Length": "630", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220513-1-d979721d-develop", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "de668e8a-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "33" + "x-ms-request-id": "a840b71e-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "48" }, "ResponseBody": { "attributes": { - "created": 1654558322, - "enabled": true, + "created": 1656357392, + "enabled": false, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558322 + "updated": 1656357393 }, - "deletedDate": 1654558322, + "deletedDate": 1656357393, "key": { - "crv": "P-256", + "crv": "P-256K", "key_ops": [ + "sign", "verify" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/test-update-semantics2536715674/b2b61cf30c7d0d6a32ed0f23deaa18e6", + "kid": "https://fakemhsm/keys/testcrud467594978/7bdb464e72df06e411ba9fa1782b2817", "kty": "EC-HSM", - "x": "PqswM1sVkmdBZxX7jRmyOU32CGdOKVSAIovLNy1jtZ0", - "y": "wP9IlIdKG48wsmuKhyUweiCBSckvruH1gPmksoWP6e0" + "x": "jxnB91IzRxD9Z5dBNGoC894xSIa_mYIZ80E3riqNhAU", + "y": "BXwdU4f0vd6YlLm6RPyzEN6Vct7lQI7gTGLHybdBzkU" }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/test-update-semantics2536715674", - "scheduledPurgeDate": 1655163122, + "recoveryId": "https://fakemhsm/deletedkeys/testcrud467594978", + "scheduledPurgeDate": 1656962193, "tags": { - "tag": "value" + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/test-update-semantics2536715674?api-version=7.3", + "RequestUri": "https://fakemhsm/deletedkeys/testcrud467594978?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -308,8 +327,8 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "de739b34-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "107" + "x-ms-request-id": "a85007c8-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "108" }, "ResponseBody": null } diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/RSA.json b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/RSA.json new file mode 100644 index 000000000000..d7d01d1c2a12 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/RSA.json @@ -0,0 +1,404 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/testcrud4141929168/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:19 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "34f4cf67-856e-4776-b8b7-01143da482cf" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/testcrud4141929168/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "125", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "attributes": { + "exp": 2524611661, + "nbf": 2208992461 + }, + "key_size": 2048, + "kty": "RSA", + "public_exponent": 65537, + "tags": { + "key": "value" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "749", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:20 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=7462;rd_age=7462;brd_age=2278;ra_notif_age=44;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "449f9a09-b9ed-4103-98ff-17330242226c" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testcrud4141929168/2a8fe16171a24437a28e1f0f3204af2e", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "nbDDgGcCCzKTBhMGY_yAu9Bi4lqiy19rUMDjBjf2xTe4dn08mXnJpm8Ji0ZqHAfN1PoRMgxLV8feUf52fOlQ9MCoYxQc8T3a2qciJZ75l3RhFI-XblSSs6yj9ome58VTUId8yCC8GDqTXS6Dmg3YYximQyCWQXqVRv2qfsCsEo8N_Wo_SdndBGLB63USf5H15z2hc8xQACaOka2yfXxLAfrr9KqKm3tD6jukQrVaFnrwaFi_oM-DAfnyg0ydHj2pioDWA8I8mP9vL_S7kZggJCYQF2YQ6V3PJsfrCAwCTQahRnn7Zfhbh7Mq3uHRF9CGRtrqatLVpUjLccCKOsjUeQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357380, + "updated": 1656357380, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "key": "value" + } + } + }, + { + "RequestUri": "https://fakevault/keys/testcrud4141929168/?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "749", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:20 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=7462;rd_age=7462;brd_age=2278;ra_notif_age=44;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "e3253e17-ec77-46ec-965f-41290206a808" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testcrud4141929168/2a8fe16171a24437a28e1f0f3204af2e", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "nbDDgGcCCzKTBhMGY_yAu9Bi4lqiy19rUMDjBjf2xTe4dn08mXnJpm8Ji0ZqHAfN1PoRMgxLV8feUf52fOlQ9MCoYxQc8T3a2qciJZ75l3RhFI-XblSSs6yj9ome58VTUId8yCC8GDqTXS6Dmg3YYximQyCWQXqVRv2qfsCsEo8N_Wo_SdndBGLB63USf5H15z2hc8xQACaOka2yfXxLAfrr9KqKm3tD6jukQrVaFnrwaFi_oM-DAfnyg0ydHj2pioDWA8I8mP9vL_S7kZggJCYQF2YQ6V3PJsfrCAwCTQahRnn7Zfhbh7Mq3uHRF9CGRtrqatLVpUjLccCKOsjUeQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357380, + "updated": 1656357380, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "key": "value" + } + } + }, + { + "RequestUri": "https://fakevault/keys/testcrud4141929168/2a8fe16171a24437a28e1f0f3204af2e?api-version=7.3", + "RequestMethod": "PATCH", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "32", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "attributes": { + "enabled": false + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "750", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:20 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=7462;rd_age=7462;brd_age=2278;ra_notif_age=44;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "ecea5801-8d96-457e-8d11-d995e94267ec" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testcrud4141929168/2a8fe16171a24437a28e1f0f3204af2e", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "nbDDgGcCCzKTBhMGY_yAu9Bi4lqiy19rUMDjBjf2xTe4dn08mXnJpm8Ji0ZqHAfN1PoRMgxLV8feUf52fOlQ9MCoYxQc8T3a2qciJZ75l3RhFI-XblSSs6yj9ome58VTUId8yCC8GDqTXS6Dmg3YYximQyCWQXqVRv2qfsCsEo8N_Wo_SdndBGLB63USf5H15z2hc8xQACaOka2yfXxLAfrr9KqKm3tD6jukQrVaFnrwaFi_oM-DAfnyg0ydHj2pioDWA8I8mP9vL_S7kZggJCYQF2YQ6V3PJsfrCAwCTQahRnn7Zfhbh7Mq3uHRF9CGRtrqatLVpUjLccCKOsjUeQ", + "e": "AQAB" + }, + "attributes": { + "enabled": false, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357380, + "updated": 1656357381, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "key": "value" + } + } + }, + { + "RequestUri": "https://fakevault/keys/testcrud4141929168?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "887", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:20 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=7463;rd_age=7463;brd_age=2278;ra_notif_age=44;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "7cb83a86-6b2d-42c6-8734-7060a01e8652" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testcrud4141929168", + "deletedDate": 1656357381, + "scheduledPurgeDate": 1656962181, + "key": { + "kid": "https://fakevault/keys/testcrud4141929168/2a8fe16171a24437a28e1f0f3204af2e", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "nbDDgGcCCzKTBhMGY_yAu9Bi4lqiy19rUMDjBjf2xTe4dn08mXnJpm8Ji0ZqHAfN1PoRMgxLV8feUf52fOlQ9MCoYxQc8T3a2qciJZ75l3RhFI-XblSSs6yj9ome58VTUId8yCC8GDqTXS6Dmg3YYximQyCWQXqVRv2qfsCsEo8N_Wo_SdndBGLB63USf5H15z2hc8xQACaOka2yfXxLAfrr9KqKm3tD6jukQrVaFnrwaFi_oM-DAfnyg0ydHj2pioDWA8I8mP9vL_S7kZggJCYQF2YQ6V3PJsfrCAwCTQahRnn7Zfhbh7Mq3uHRF9CGRtrqatLVpUjLccCKOsjUeQ", + "e": "AQAB" + }, + "attributes": { + "enabled": false, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357380, + "updated": 1656357381, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "key": "value" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/testcrud4141929168?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 404, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "86", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:21 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=7463;rd_age=7463;brd_age=2279;ra_notif_age=45;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "19db450a-c814-41ec-a12b-ac5ae396d035" + }, + "ResponseBody": { + "error": { + "code": "KeyNotFound", + "message": "Deleted Key not found: testcrud4141929168" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/testcrud4141929168?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "887", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:16:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=7473;rd_age=7473;brd_age=2289;ra_notif_age=55;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a7cbc251-c12a-4695-ad6d-4bbd42616aba" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testcrud4141929168", + "deletedDate": 1656357381, + "scheduledPurgeDate": 1656962181, + "key": { + "kid": "https://fakevault/keys/testcrud4141929168/2a8fe16171a24437a28e1f0f3204af2e", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "nbDDgGcCCzKTBhMGY_yAu9Bi4lqiy19rUMDjBjf2xTe4dn08mXnJpm8Ji0ZqHAfN1PoRMgxLV8feUf52fOlQ9MCoYxQc8T3a2qciJZ75l3RhFI-XblSSs6yj9ome58VTUId8yCC8GDqTXS6Dmg3YYximQyCWQXqVRv2qfsCsEo8N_Wo_SdndBGLB63USf5H15z2hc8xQACaOka2yfXxLAfrr9KqKm3tD6jukQrVaFnrwaFi_oM-DAfnyg0ydHj2pioDWA8I8mP9vL_S7kZggJCYQF2YQ6V3PJsfrCAwCTQahRnn7Zfhbh7Mq3uHRF9CGRtrqatLVpUjLccCKOsjUeQ", + "e": "AQAB" + }, + "attributes": { + "enabled": false, + "nbf": 2208992461, + "exp": 2524611661, + "created": 1656357380, + "updated": 1656357381, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "key": "value" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/testcrud4141929168?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 204, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Date": "Mon, 27 Jun 2022 19:16:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=24;da_age=7473;rd_age=7473;brd_age=2289;ra_notif_age=55;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "0f138bd8-c163-4653-bfdc-fda49dae5110" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetKeyRotationPolicy/TestGetKeyRotationPolicy_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/RSA_MHSM.json similarity index 53% rename from sdk/keyvault/azkeys/testdata/recordings/TestGetKeyRotationPolicy/TestGetKeyRotationPolicy_HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestCRUD/RSA_MHSM.json index 28d98e93c33e..f6a17f381978 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetKeyRotationPolicy/TestGetKeyRotationPolicy_HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestCRUD/RSA_MHSM.json @@ -1,14 +1,13 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testcrud2971044356/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { - ":method": "POST", "Accept": "application/json", "Accept-Encoding": "gzip", "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 401, @@ -21,30 +20,38 @@ "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1c195fb2-cd66-11ec-830e-6045bd86d60f", + "x-ms-request-id": "a871df06-f64d-11ec-bfb4-6045bda27deb", "x-ms-server-latency": "0" }, "ResponseBody": null }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testcrud2971044356/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { - ":method": "POST", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "13", + "Content-Length": "125", "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { - "kty": "RSA" + "attributes": { + "exp": 2524611661, + "nbf": 2208992461 + }, + "key_size": 2048, + "kty": "RSA", + "public_exponent": 65537, + "tags": { + "key": "value" + } }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "699", + "Content-Length": "777", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -52,17 +59,19 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1c44f078-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "274" + "x-ms-request-id": "a879db34-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "280" }, "ResponseBody": { "attributes": { - "created": 1651859898, + "created": 1656357394, "enabled": true, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859898 + "updated": 1656357394 }, "key": { "e": "AQAB", @@ -74,61 +83,90 @@ "sign", "verify" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/dd98a2945f3d088988a6581250c8f8b4", + "kid": "https://fakemhsm/keys/testcrud2971044356/032e7e9ee2a242872b9a0bc4a74f4ac5", "kty": "RSA-HSM", - "n": "nqDxsYCytlQmETQTUosVD_Q4VXB5NlVyUTANQAJMKXa8f0zJUP8XDIoM_7NmeOFCKPNF_Ae8m_7miUR211XsTs0eEFQMU9NfKZxPsAyHfa1gFk0KvskSVm874PV4hIUPxBxDY3u0jgD5w_xuDNnK6jH-1p3kTu2a52DRC7r1zpn3_88JGrFPZY2ypB75fuZPnCIkyMzVvUqipClCdkWCYvYyIfnHM_JlCVpSI-cr_hdiSzmsO7NjpdCwI3UZXeV0ETcBWMqdWlo9odJOr15Kj4pnTQd_jjjO3r2wRc8czheEIjS98Yiz1P3BFTerORKY2ujzI44ZcyW5NZy7_ZwcFQ" + "n": "nfU4aWu80mTsInI8uJLk4Eq1JFSFGoBubS3H13BUq1vPpHxzyx3gXwUHmC6xKLGXWmxIv1SJ_SKaerhISonG1j_Mja8laRaSxrOlyVn3_covBtXKSm94QDAGYyyaFWlbE1cjKyvhMj5no5hBkj6UvgxNoZy2uH9ckz1OqrYF2oEWp8Ldl4mMfvJQAePdnWkkj6J2-PbSHUhfQot0SAYTZ-vDe6-eRWrh9cTAX-5APyo8FQ3m9PGvgLlZXxGZ-U4bxnfumZ4RmTpkFyGV05tDZUs1KlQ-V2hkYhdRuYMAdtpSd3ApREROFJa9CH_EErSEhefgn1_hVCGTLFZxjVa6xw" + }, + "tags": { + "key": "value" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/rotationpolicy?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testcrud2971044356/?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { - ":method": "GET", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "64", + "Content-Length": "777", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1c76f8f2-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "159" + "x-ms-request-id": "a8bdfe2c-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "78" }, "ResponseBody": { "attributes": { - "created": 0, - "expiryTime": "", - "updated": 0 + "created": 1656357394, + "enabled": true, + "exp": 2524611661, + "exportable": false, + "nbf": 2208992461, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656357394 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "decrypt", + "encrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/testcrud2971044356/032e7e9ee2a242872b9a0bc4a74f4ac5", + "kty": "RSA-HSM", + "n": "nfU4aWu80mTsInI8uJLk4Eq1JFSFGoBubS3H13BUq1vPpHxzyx3gXwUHmC6xKLGXWmxIv1SJ_SKaerhISonG1j_Mja8laRaSxrOlyVn3_covBtXKSm94QDAGYyyaFWlbE1cjKyvhMj5no5hBkj6UvgxNoZy2uH9ckz1OqrYF2oEWp8Ldl4mMfvJQAePdnWkkj6J2-PbSHUhfQot0SAYTZ-vDe6-eRWrh9cTAX-5APyo8FQ3m9PGvgLlZXxGZ-U4bxnfumZ4RmTpkFyGV05tDZUs1KlQ-V2hkYhdRuYMAdtpSd3ApREROFJa9CH_EErSEhefgn1_hVCGTLFZxjVa6xw" }, - "id": "" + "tags": { + "key": "value" + } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635?api-version=7.3", - "RequestMethod": "DELETE", + "RequestUri": "https://fakemhsm/keys/testcrud2971044356/032e7e9ee2a242872b9a0bc4a74f4ac5?api-version=7.3", + "RequestMethod": "PATCH", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "Content-Length": "32", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "attributes": { + "enabled": false + } }, - "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "820", + "Content-Length": "778", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -136,127 +174,133 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1c96e702-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "75" + "x-ms-request-id": "a8d230cc-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "60" }, "ResponseBody": { "attributes": { - "created": 1651859898, - "enabled": true, + "created": 1656357394, + "enabled": false, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859898 + "updated": 1656357394 }, - "deletedDate": 1651859899, "key": { "e": "AQAB", "key_ops": [ "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", + "verify", "sign", - "verify" + "unwrapKey", + "encrypt", + "decrypt" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/dd98a2945f3d088988a6581250c8f8b4", + "kid": "https://fakemhsm/keys/testcrud2971044356/032e7e9ee2a242872b9a0bc4a74f4ac5", "kty": "RSA-HSM", - "n": "nqDxsYCytlQmETQTUosVD_Q4VXB5NlVyUTANQAJMKXa8f0zJUP8XDIoM_7NmeOFCKPNF_Ae8m_7miUR211XsTs0eEFQMU9NfKZxPsAyHfa1gFk0KvskSVm874PV4hIUPxBxDY3u0jgD5w_xuDNnK6jH-1p3kTu2a52DRC7r1zpn3_88JGrFPZY2ypB75fuZPnCIkyMzVvUqipClCdkWCYvYyIfnHM_JlCVpSI-cr_hdiSzmsO7NjpdCwI3UZXeV0ETcBWMqdWlo9odJOr15Kj4pnTQd_jjjO3r2wRc8czheEIjS98Yiz1P3BFTerORKY2ujzI44ZcyW5NZy7_ZwcFQ" + "n": "nfU4aWu80mTsInI8uJLk4Eq1JFSFGoBubS3H13BUq1vPpHxzyx3gXwUHmC6xKLGXWmxIv1SJ_SKaerhISonG1j_Mja8laRaSxrOlyVn3_covBtXKSm94QDAGYyyaFWlbE1cjKyvhMj5no5hBkj6UvgxNoZy2uH9ckz1OqrYF2oEWp8Ldl4mMfvJQAePdnWkkj6J2-PbSHUhfQot0SAYTZ-vDe6-eRWrh9cTAX-5APyo8FQ3m9PGvgLlZXxGZ-U4bxnfumZ4RmTpkFyGV05tDZUs1KlQ-V2hkYhdRuYMAdtpSd3ApREROFJa9CH_EErSEhefgn1_hVCGTLFZxjVa6xw" }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key4173570635", - "scheduledPurgeDate": 1652464699 + "tags": { + "key": "value" + } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key4173570635?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakemhsm/keys/testcrud2971044356?api-version=7.3", + "RequestMethod": "DELETE", "RequestHeaders": { - ":method": "GET", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "820", + "Content-Length": "920", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1cab1222-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "37" + "x-ms-request-id": "a8e32a8a-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "83" }, "ResponseBody": { "attributes": { - "created": 1651859898, - "enabled": true, + "created": 1656357394, + "enabled": false, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859898 + "updated": 1656357394 }, - "deletedDate": 1651859899, + "deletedDate": 1656357394, "key": { "e": "AQAB", "key_ops": [ - "verify", - "sign", - "unwrapKey", + "wrapKey", "encrypt", "decrypt", - "wrapKey" + "unwrapKey", + "sign", + "verify" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/dd98a2945f3d088988a6581250c8f8b4", + "kid": "https://fakemhsm/keys/testcrud2971044356/032e7e9ee2a242872b9a0bc4a74f4ac5", "kty": "RSA-HSM", - "n": "nqDxsYCytlQmETQTUosVD_Q4VXB5NlVyUTANQAJMKXa8f0zJUP8XDIoM_7NmeOFCKPNF_Ae8m_7miUR211XsTs0eEFQMU9NfKZxPsAyHfa1gFk0KvskSVm874PV4hIUPxBxDY3u0jgD5w_xuDNnK6jH-1p3kTu2a52DRC7r1zpn3_88JGrFPZY2ypB75fuZPnCIkyMzVvUqipClCdkWCYvYyIfnHM_JlCVpSI-cr_hdiSzmsO7NjpdCwI3UZXeV0ETcBWMqdWlo9odJOr15Kj4pnTQd_jjjO3r2wRc8czheEIjS98Yiz1P3BFTerORKY2ujzI44ZcyW5NZy7_ZwcFQ" + "n": "nfU4aWu80mTsInI8uJLk4Eq1JFSFGoBubS3H13BUq1vPpHxzyx3gXwUHmC6xKLGXWmxIv1SJ_SKaerhISonG1j_Mja8laRaSxrOlyVn3_covBtXKSm94QDAGYyyaFWlbE1cjKyvhMj5no5hBkj6UvgxNoZy2uH9ckz1OqrYF2oEWp8Ldl4mMfvJQAePdnWkkj6J2-PbSHUhfQot0SAYTZ-vDe6-eRWrh9cTAX-5APyo8FQ3m9PGvgLlZXxGZ-U4bxnfumZ4RmTpkFyGV05tDZUs1KlQ-V2hkYhdRuYMAdtpSd3ApREROFJa9CH_EErSEhefgn1_hVCGTLFZxjVa6xw" }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key4173570635", - "scheduledPurgeDate": 1652464699 + "recoveryId": "https://fakemhsm/deletedkeys/testcrud2971044356", + "scheduledPurgeDate": 1656962194, + "tags": { + "key": "value" + } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key4173570635?api-version=7.3", + "RequestUri": "https://fakemhsm/deletedkeys/testcrud2971044356?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { - ":method": "GET", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "820", + "Content-Length": "920", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1cb90e04-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "32" + "x-ms-request-id": "a92eff96-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "27" }, "ResponseBody": { "attributes": { - "created": 1651859898, - "enabled": true, + "created": 1656357394, + "enabled": false, + "exp": 2524611661, "exportable": false, + "nbf": 2208992461, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859898 + "updated": 1656357394 }, - "deletedDate": 1651859899, + "deletedDate": 1656357394, "key": { "e": "AQAB", "key_ops": [ @@ -267,22 +311,25 @@ "decrypt", "wrapKey" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key4173570635/dd98a2945f3d088988a6581250c8f8b4", + "kid": "https://fakemhsm/keys/testcrud2971044356/032e7e9ee2a242872b9a0bc4a74f4ac5", "kty": "RSA-HSM", - "n": "nqDxsYCytlQmETQTUosVD_Q4VXB5NlVyUTANQAJMKXa8f0zJUP8XDIoM_7NmeOFCKPNF_Ae8m_7miUR211XsTs0eEFQMU9NfKZxPsAyHfa1gFk0KvskSVm874PV4hIUPxBxDY3u0jgD5w_xuDNnK6jH-1p3kTu2a52DRC7r1zpn3_88JGrFPZY2ypB75fuZPnCIkyMzVvUqipClCdkWCYvYyIfnHM_JlCVpSI-cr_hdiSzmsO7NjpdCwI3UZXeV0ETcBWMqdWlo9odJOr15Kj4pnTQd_jjjO3r2wRc8czheEIjS98Yiz1P3BFTerORKY2ujzI44ZcyW5NZy7_ZwcFQ" + "n": "nfU4aWu80mTsInI8uJLk4Eq1JFSFGoBubS3H13BUq1vPpHxzyx3gXwUHmC6xKLGXWmxIv1SJ_SKaerhISonG1j_Mja8laRaSxrOlyVn3_covBtXKSm94QDAGYyyaFWlbE1cjKyvhMj5no5hBkj6UvgxNoZy2uH9ckz1OqrYF2oEWp8Ldl4mMfvJQAePdnWkkj6J2-PbSHUhfQot0SAYTZ-vDe6-eRWrh9cTAX-5APyo8FQ3m9PGvgLlZXxGZ-U4bxnfumZ4RmTpkFyGV05tDZUs1KlQ-V2hkYhdRuYMAdtpSd3ApREROFJa9CH_EErSEhefgn1_hVCGTLFZxjVa6xw" }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key4173570635", - "scheduledPurgeDate": 1652464699 + "recoveryId": "https://fakemhsm/deletedkeys/testcrud2971044356", + "scheduledPurgeDate": 1656962194, + "tags": { + "key": "value" + } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key4173570635?api-version=7.3", + "RequestUri": "https://fakemhsm/deletedkeys/testcrud2971044356?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 204, @@ -296,8 +343,8 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1cc654ec-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "103" + "x-ms-request-id": "a93bd590-f64d-11ec-bfb4-6045bda27deb", + "x-ms-server-latency": "92" }, "ResponseBody": null } diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestClient_EncryptDecrypt.json b/sdk/keyvault/azkeys/testdata/recordings/TestClient_EncryptDecrypt.json deleted file mode 100644 index 093f02983328..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestClient_EncryptDecrypt.json +++ /dev/null @@ -1,204 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key4012487705/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "f2654128-f8ff-44c6-840e-9059deceff88", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key4012487705/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "22d22073-63cf-49dd-958d-f2e83b3e7e90", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key4012487705/8f0f0686e02f46b9b467c42d95f0e518", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "3KBHDgh2JK1d59dHGs1FarLMPFSp5B1hoq56wLJ3sZNZAIOX0w3iB1aTxnNjtB4l8RohJ6jBKIhZYZgeEEHOs_7FnfXtTf2OJnqaPLN9qt-8txkV16e3Y9iQIWgAOA7cmCoG1zCwSG9xQj9r3zDjEzavgG6gbXe-Zap3D2I5AjgxNQ4-RdOjY01CkZ7mQdqiDyOXFieshLLSpbQgdMmkqfrv8L6HDZNNybbDcuymk3GrN6tNnu3_y_rUbVi1sAulPghoYvbfKkEJCRTmGYeOLSM_oZGL3rJWIJvXSZkFjdC4zRr749BADuHxMJJj-UCE2huKM8MGhGr-fKHADEWQNQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1643132349, - "updated": 1643132349, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key4012487705/encrypt?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "f0cec3e9-b980-404c-9792-ab1aafb3e95b", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key4012487705/encrypt?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "41", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "alg": "RSA-OAEP", - "value": "cGxhaW50ZXh0" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "446", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:09 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "eaf52a22-c691-4541-b84a-db3082262f9d", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "kid": "https://rosebud.vault.azure.net/keys/key4012487705/8f0f0686e02f46b9b467c42d95f0e518", - "value": "JtdlduJMFUOoBVcqAex3idNWWREY1Xxb9zoebHs0GdyRi0F49D0CAf84CBNO7dybqtXEw64LIQKN5FxYZOjBJxZC2xsAOLnsAlT3DDLXlCcv2d3jL4Z6NoqwpPuAysMWb-NFVM2WuFy4CenqFFXI0b7NYOgS-HorIZupND7pefx2TlKhYfLG6DfPfXQCYlenorLyYO1uR46AWEX6MPjbYcRpZSO7lyynlkXgASoT7kI1Cw7X_WH9hE-jJHECki4L_GAPGWeXis33x0Wj078oilaWI2MlECOQLRugvK5YCGKA8prwJdp22iLE3u9YBaqwsnJIR7pkd0-3xjx7T85iqQ" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key4012487705/decrypt?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "371", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "alg": "RSA-OAEP", - "value": "JtdlduJMFUOoBVcqAex3idNWWREY1Xxb9zoebHs0GdyRi0F49D0CAf84CBNO7dybqtXEw64LIQKN5FxYZOjBJxZC2xsAOLnsAlT3DDLXlCcv2d3jL4Z6NoqwpPuAysMWb-NFVM2WuFy4CenqFFXI0b7NYOgS-HorIZupND7pefx2TlKhYfLG6DfPfXQCYlenorLyYO1uR46AWEX6MPjbYcRpZSO7lyynlkXgASoT7kI1Cw7X_WH9hE-jJHECki4L_GAPGWeXis33x0Wj078oilaWI2MlECOQLRugvK5YCGKA8prwJdp22iLE3u9YBaqwsnJIR7pkd0-3xjx7T85iqQ" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "116", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "1b8b2cc1-7b03-45ce-b5c0-f8378157df9b", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "kid": "https://rosebud.vault.azure.net/keys/key4012487705/8f0f0686e02f46b9b467c42d95f0e518", - "value": "cGxhaW50ZXh0" - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestClient_SignVerify.json b/sdk/keyvault/azkeys/testdata/recordings/TestClient_SignVerify.json deleted file mode 100644 index 73a52d669df6..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestClient_SignVerify.json +++ /dev/null @@ -1,204 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1932710079/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "d626cb31-f103-43eb-82ea-d2a642049d7c", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1932710079/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "fa267208-3a3a-40ee-a553-63e2e28c2b81", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1932710079/51c509f946e24f3aa86a25cc2b87c353", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "5t31UI592fLAF_awHoGV4K3Zs0Ws8g9iBaW2uVIabADQVOju1cqB7PtazW9meHZ2GwriB2HhBiCJ6Y77YOz5IewkBTVB6V07_q0aXcC_tuKt-VLX7uixLRpEYo6KrMGYP7SQbo2E63BekXGhlnBlOi-1p5ASF9WLQrIse5VQ-1A_VFoEHltP1pDjlWhimKxVuJ3FOwZexirSMd-6U9ZcqHddPaypyIAO8i8eG_eG5uO_ScjvZWxKlhaboiz5IKLnIcGWvZH_wIqLSjpdPJnoEaNUJMRerBKv8r5wmBfOCHls5f820l9I7HGm1Jec7WINnuRkxNXDx7AMavZwTN592Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1643132351, - "updated": 1643132351, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1932710079/sign?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:12 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "63fb2dfc-a534-45a1-afd3-2d2978405296", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1932710079/sign?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "69", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "alg": "RS256", - "value": "ltYuKr0-Qt5fUDMPuO_ExVmYNSeAd7IemqCzPB3wehw" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "446", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:12 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "4789133a-7038-448b-bb19-200c2c1848b5", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "kid": "https://rosebud.vault.azure.net/keys/key1932710079/51c509f946e24f3aa86a25cc2b87c353", - "value": "sw18sFl9zsoXRKU7B9DO_V-ZDKuTZLUO8rkT5obhh8QemQCvyLJBlKRbm7ndWkjJ-_mbvv8PI2lbzEUt0oN9gZoQeXtJ1OUosqFvRd3UbeJlxa9xSYJ5p_N_VHzRwcZ9_6JxTy17El06Jx4NZBjeHtHgvOHAwzzX2uBCZoRLuxC4_SfQpi6YmXQKtmC6w8OUWMNk25o2W-_veUgF2khPvppCoaRRDiHXMT90zz0pG66RFymeH_dSO7d5MQLG1X1rGaK0fR5yVhG_omjywhYY1vf_JnFI9yJ86wwrs5ie0J3D81LSHwPQqKi1oUO3ublBJGFLuxWsXZsn4Qb9B7AUEA" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1932710079/verify?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "423", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "alg": "RS256", - "digest": "ltYuKr0-Qt5fUDMPuO_ExVmYNSeAd7IemqCzPB3wehw", - "value": "sw18sFl9zsoXRKU7B9DO_V-ZDKuTZLUO8rkT5obhh8QemQCvyLJBlKRbm7ndWkjJ-_mbvv8PI2lbzEUt0oN9gZoQeXtJ1OUosqFvRd3UbeJlxa9xSYJ5p_N_VHzRwcZ9_6JxTy17El06Jx4NZBjeHtHgvOHAwzzX2uBCZoRLuxC4_SfQpi6YmXQKtmC6w8OUWMNk25o2W-_veUgF2khPvppCoaRRDiHXMT90zz0pG66RFymeH_dSO7d5MQLG1X1rGaK0fR5yVhG_omjywhYY1vf_JnFI9yJ86wwrs5ie0J3D81LSHwPQqKi1oUO3ublBJGFLuxWsXZsn4Qb9B7AUEA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "14", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:12 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "c4429f39-35cf-4e45-8adf-52b2290ee8ed", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "value": true - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestClient_WrapUnwrap.json b/sdk/keyvault/azkeys/testdata/recordings/TestClient_WrapUnwrap.json deleted file mode 100644 index 4f5d0da12578..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestClient_WrapUnwrap.json +++ /dev/null @@ -1,204 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2218739472/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "e7ed9150-1827-4df3-80c1-7d3aaca39ba2", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2218739472/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "378b070b-e384-4fdf-9eac-a65934da8f87", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key2218739472/8e19fe752ec64dea8313c98bd0bf09ba", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "tksVwdfpExBkQd5VxDODHrsSsCqBRbpudzEPRiDoaVbOR0V9i13J51ybQNFewo18pDEnuXrprxCARJq4siKgHYhl_mi5zSOUOc_HmqdZU8Btg473E36-Wo-2sQY7i_dY6EpB09Zd17i8hjZl4SH4F0RkRpDnpiQApB5yk4PkQxQIgBH8yuDF1SSiGFeWLNT-kvhElJczvhD1sPftMOb0_kesODXU0CWr98Rckr6RUxMquiRSzCDIjZ5bVjKK4NeU6IqTVMPUnGvIC_MUArbxa_UhklmjQjkcbh-_-x1IAbXMBQ2kxshGM5v7oWmr6dGfxqNW-DDd5EuBbPHkGeqHzQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1643132350, - "updated": 1643132350, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2218739472/wrapkey?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "77ae4172-cd9f-43ec-b9b9-15ebd16ee992", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2218739472/wrapkey?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "296", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "alg": "RSA-OAEP", - "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "446", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "89ce2a2b-00e7-4962-8b86-6990a536d249", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "kid": "https://rosebud.vault.azure.net/keys/key2218739472/8e19fe752ec64dea8313c98bd0bf09ba", - "value": "geMmLb_YD4yvTMflAKMxqmYMNg0P78AQR0-V3_Yj7E9YxBm1WSnwQ6ppeJIb-NXxIt492fNhIsmVfuXZv7DFD5WmqrlCybeaDmLKaE2tq39pUWGIBcKE9lwWV3G5hOuT6621qErVFiPfr8UveDjTmyzaZ_-GSHZE8-zp1qT8ttBNeRmPJ4xBY8c2-8HXWySARbXxbbgh9eAJJSjBe-HqiQb77ejf1xp-nG2Xf76qb2uLj0GA7k4L1WwGEswPo6M0ajFgJAh0JXYjeBRJTVherPfh5FKE9iGrkrn2KH-C2IE3s1LdWjP6QmwUDVknSR_yeLl80b5vVrEVsadQESqZfg" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2218739472/unwrapkey?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "371", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "alg": "RSA-OAEP", - "value": "geMmLb_YD4yvTMflAKMxqmYMNg0P78AQR0-V3_Yj7E9YxBm1WSnwQ6ppeJIb-NXxIt492fNhIsmVfuXZv7DFD5WmqrlCybeaDmLKaE2tq39pUWGIBcKE9lwWV3G5hOuT6621qErVFiPfr8UveDjTmyzaZ_-GSHZE8-zp1qT8ttBNeRmPJ4xBY8c2-8HXWySARbXxbbgh9eAJJSjBe-HqiQb77ejf1xp-nG2Xf76qb2uLj0GA7k4L1WwGEswPo6M0ajFgJAh0JXYjeBRJTVherPfh5FKE9iGrkrn2KH-C2IE3s1LdWjP6QmwUDVknSR_yeLl80b5vVrEVsadQESqZfg" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "371", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 25 Jan 2022 17:39:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus2", - "x-ms-keyvault-service-version": "1.9.264.2", - "x-ms-request-id": "14e51e43-798f-42ca-af78-c2026d105601", - "X-Powered-By": "ASP.NET" - }, - "ResponseBody": { - "kid": "https://rosebud.vault.azure.net/keys/key2218739472/8e19fe752ec64dea8313c98bd0bf09ba", - "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ" - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateECKey/TestCreateECKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCreateECKey/TestCreateECKey_NON-HSM.json deleted file mode 100644 index 4b4b8746deef..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateECKey/TestCreateECKey_NON-HSM.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3984012801/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:47 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a624991b-2fc9-4d5b-9fd4-23ade56b063c" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3984012801/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "12", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "EC" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "398", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:47 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=8;da_age=1319;rd_age=4514;brd_age=14348;ra_notif_age=494;da_notif_age=1845;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "5e3bcccc-859f-4315-9b26-7297315de3a8" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3984012801/5e53317f1a05434589681d74f7397ec2", - "kty": "EC", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256", - "x": "2oYDItWD0zLyEnRfUtTtRaUXFMtI1tL5Bo6XjSk8K6s", - "y": "VY_cH5iTcZwB7n5Tq3MZuxLUfmGxL8Ox_M1HsTOA5VQ" - }, - "attributes": { - "enabled": true, - "created": 1652818968, - "updated": 1652818968, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key%21@%23$/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "12", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "EC" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "95", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:47 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4cfa2c4d-c113-41bb-87e8-fb2f3a88a47a" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "The request URI contains an invalid name: key!@#$" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3984012801?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "530", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:48 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=8;da_age=1320;rd_age=4514;brd_age=14348;ra_notif_age=494;da_notif_age=1845;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "f24f14d0-5954-4441-a636-3eef0dda34f7" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3984012801", - "deletedDate": 1652818968, - "scheduledPurgeDate": 1653423768, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3984012801/5e53317f1a05434589681d74f7397ec2", - "kty": "EC", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256", - "x": "2oYDItWD0zLyEnRfUtTtRaUXFMtI1tL5Bo6XjSk8K6s", - "y": "VY_cH5iTcZwB7n5Tq3MZuxLUfmGxL8Ox_M1HsTOA5VQ" - }, - "attributes": { - "enabled": true, - "created": 1652818968, - "updated": 1652818968, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3984012801?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:48 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=8;da_age=1320;rd_age=4514;brd_age=14349;ra_notif_age=495;da_notif_age=1845;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e5f7a484-a4e4-4487-9ea0-5ebfa9117711" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key3984012801" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3984012801?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "530", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:50 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=9;da_age=1321;rd_age=4515;brd_age=14350;ra_notif_age=496;da_notif_age=1846;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9e58b33c-15d0-4bf8-9438-9bfbfd3fa04a" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3984012801", - "deletedDate": 1652818968, - "scheduledPurgeDate": 1653423768, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3984012801/5e53317f1a05434589681d74f7397ec2", - "kty": "EC", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256", - "x": "2oYDItWD0zLyEnRfUtTtRaUXFMtI1tL5Bo6XjSk8K6s", - "y": "VY_cH5iTcZwB7n5Tq3MZuxLUfmGxL8Ox_M1HsTOA5VQ" - }, - "attributes": { - "enabled": true, - "created": 1652818968, - "updated": 1652818968, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3984012801?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:50 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=10;da_age=1321;rd_age=4515;brd_age=14350;ra_notif_age=496;da_notif_age=1846;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6f2c6cd3-3e2b-4895-8ad8-0c74cc8c4b68" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSA/TestCreateKeyRSA_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSA/TestCreateKeyRSA_HSM.json deleted file mode 100644 index 593c16da12df..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSA/TestCreateKeyRSA_HSM.json +++ /dev/null @@ -1,545 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2103710935/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "f0617c70-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2103710935/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f09b1ab6-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "232" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935/5e8d49f99689441e070281e129843374", - "kty": "RSA-HSM", - "n": "u_mNGIL_DZtXtv2YTi4koCOAP-azXxNIbHQKX5VeJBdnZ4Y8bm4_POvmd8xDQk2ClafoV0Y7NSd0L1ASueUN9wKP0qqb71Xq26JF9vy9HAErbqXeiFfNF60Mm-hvUNAhboSQBye91ytDLOfL6r7H2E5CKUVZG3ncDALV5VCetxTVfBVTzYzeShMyWZcwEAaTJIbVJ0GYM-8qtSSLwzaRRUXg0h-0xGhKXOGUkuwfHGEoca09DVTQv12rOrHvHSFgUvMOUaxILEmW1wKZXYUCxgbE-iYC-UNIIKHQW1b8Zogptz_PWCFkt2xrkVYpE77vRc9eS4QCxzADfhNPn4WapQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2103710935hsm/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "17", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA-HSM" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "719", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f0c95534-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "204" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935hsm/3899b27dc5130d8e0d52874f6c9fdebc", - "kty": "RSA-HSM", - "n": "i2WRYAMiYzp6mFf7tlIUxnJcdd2LuOGLexs9DfccZMqSOlPWfullaN9cLpzy6OzWAXBpZtK18IwAYsect7CZFpnSjqN3Sdq9V5IQzDFWCiFnSXpbwob6Vbxbuh052h1AKA0OtckTFfHYZ_oMWFunctUKUsWXeBJadSaGjdvE58wfbHPOtbHgmnG2dOOTBEtfhEgfaEW-3pduoqFsFmqXfzc4maKqc95VNjdwA3xWtbnE3S-BvCuWLdxZNEiFUsjgtQLtmfbGLFhMSbEZ-Bagf6chEufhz8h0JcVbjBuc24wAs6dMdxRPOjX68vcO_H8syofAvOhnVPRQSIauNLKeMw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2103710935?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f0f33a98-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "148" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "deletedDate": 1643132023, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935/5e8d49f99689441e070281e129843374", - "kty": "RSA-HSM", - "n": "u_mNGIL_DZtXtv2YTi4koCOAP-azXxNIbHQKX5VeJBdnZ4Y8bm4_POvmd8xDQk2ClafoV0Y7NSd0L1ASueUN9wKP0qqb71Xq26JF9vy9HAErbqXeiFfNF60Mm-hvUNAhboSQBye91ytDLOfL6r7H2E5CKUVZG3ncDALV5VCetxTVfBVTzYzeShMyWZcwEAaTJIbVJ0GYM-8qtSSLwzaRRUXg0h-0xGhKXOGUkuwfHGEoca09DVTQv12rOrHvHSFgUvMOUaxILEmW1wKZXYUCxgbE-iYC-UNIIKHQW1b8Zogptz_PWCFkt2xrkVYpE77vRc9eS4QCxzADfhNPn4WapQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2103710935", - "scheduledPurgeDate": 1643736823 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2103710935?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f1144116-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "32" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "deletedDate": 1643132022, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935/5e8d49f99689441e070281e129843374", - "kty": "RSA-HSM", - "n": "u_mNGIL_DZtXtv2YTi4koCOAP-azXxNIbHQKX5VeJBdnZ4Y8bm4_POvmd8xDQk2ClafoV0Y7NSd0L1ASueUN9wKP0qqb71Xq26JF9vy9HAErbqXeiFfNF60Mm-hvUNAhboSQBye91ytDLOfL6r7H2E5CKUVZG3ncDALV5VCetxTVfBVTzYzeShMyWZcwEAaTJIbVJ0GYM-8qtSSLwzaRRUXg0h-0xGhKXOGUkuwfHGEoca09DVTQv12rOrHvHSFgUvMOUaxILEmW1wKZXYUCxgbE-iYC-UNIIKHQW1b8Zogptz_PWCFkt2xrkVYpE77vRc9eS4QCxzADfhNPn4WapQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2103710935", - "scheduledPurgeDate": 1643736822 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2103710935?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f1239d5a-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "30" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "deletedDate": 1643132022, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935/5e8d49f99689441e070281e129843374", - "kty": "RSA-HSM", - "n": "u_mNGIL_DZtXtv2YTi4koCOAP-azXxNIbHQKX5VeJBdnZ4Y8bm4_POvmd8xDQk2ClafoV0Y7NSd0L1ASueUN9wKP0qqb71Xq26JF9vy9HAErbqXeiFfNF60Mm-hvUNAhboSQBye91ytDLOfL6r7H2E5CKUVZG3ncDALV5VCetxTVfBVTzYzeShMyWZcwEAaTJIbVJ0GYM-8qtSSLwzaRRUXg0h-0xGhKXOGUkuwfHGEoca09DVTQv12rOrHvHSFgUvMOUaxILEmW1wKZXYUCxgbE-iYC-UNIIKHQW1b8Zogptz_PWCFkt2xrkVYpE77vRc9eS4QCxzADfhNPn4WapQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2103710935", - "scheduledPurgeDate": 1643736822 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2103710935?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f132b9d4-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "110" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2103710935hsm?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "860", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f14df870-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "148" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "deletedDate": 1643132023, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935hsm/3899b27dc5130d8e0d52874f6c9fdebc", - "kty": "RSA-HSM", - "n": "i2WRYAMiYzp6mFf7tlIUxnJcdd2LuOGLexs9DfccZMqSOlPWfullaN9cLpzy6OzWAXBpZtK18IwAYsect7CZFpnSjqN3Sdq9V5IQzDFWCiFnSXpbwob6Vbxbuh052h1AKA0OtckTFfHYZ_oMWFunctUKUsWXeBJadSaGjdvE58wfbHPOtbHgmnG2dOOTBEtfhEgfaEW-3pduoqFsFmqXfzc4maKqc95VNjdwA3xWtbnE3S-BvCuWLdxZNEiFUsjgtQLtmfbGLFhMSbEZ-Bagf6chEufhz8h0JcVbjBuc24wAs6dMdxRPOjX68vcO_H8syofAvOhnVPRQSIauNLKeMw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2103710935hsm", - "scheduledPurgeDate": 1643736823 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2103710935hsm?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "860", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f16f1ec4-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "24" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "deletedDate": 1643132023, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935hsm/3899b27dc5130d8e0d52874f6c9fdebc", - "kty": "RSA-HSM", - "n": "i2WRYAMiYzp6mFf7tlIUxnJcdd2LuOGLexs9DfccZMqSOlPWfullaN9cLpzy6OzWAXBpZtK18IwAYsect7CZFpnSjqN3Sdq9V5IQzDFWCiFnSXpbwob6Vbxbuh052h1AKA0OtckTFfHYZ_oMWFunctUKUsWXeBJadSaGjdvE58wfbHPOtbHgmnG2dOOTBEtfhEgfaEW-3pduoqFsFmqXfzc4maKqc95VNjdwA3xWtbnE3S-BvCuWLdxZNEiFUsjgtQLtmfbGLFhMSbEZ-Bagf6chEufhz8h0JcVbjBuc24wAs6dMdxRPOjX68vcO_H8syofAvOhnVPRQSIauNLKeMw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2103710935hsm", - "scheduledPurgeDate": 1643736823 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2103710935hsm?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "860", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f17e2824-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "37" - }, - "ResponseBody": { - "attributes": { - "created": 1643132022, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132022 - }, - "deletedDate": 1643132023, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2103710935hsm/3899b27dc5130d8e0d52874f6c9fdebc", - "kty": "RSA-HSM", - "n": "i2WRYAMiYzp6mFf7tlIUxnJcdd2LuOGLexs9DfccZMqSOlPWfullaN9cLpzy6OzWAXBpZtK18IwAYsect7CZFpnSjqN3Sdq9V5IQzDFWCiFnSXpbwob6Vbxbuh052h1AKA0OtckTFfHYZ_oMWFunctUKUsWXeBJadSaGjdvE58wfbHPOtbHgmnG2dOOTBEtfhEgfaEW-3pduoqFsFmqXfzc4maKqc95VNjdwA3xWtbnE3S-BvCuWLdxZNEiFUsjgtQLtmfbGLFhMSbEZ-Bagf6chEufhz8h0JcVbjBuc24wAs6dMdxRPOjX68vcO_H8syofAvOhnVPRQSIauNLKeMw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2103710935hsm", - "scheduledPurgeDate": 1643736823 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2103710935hsm?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f18e2f3a-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "109" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/invalidName%21@%23$/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "128", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "f1a97e70-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "1" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "Invalid key identifier or name (Activity ID: f1a97e70-7e04-11ec-a044-000d3a731e50)" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSA/TestCreateKeyRSA_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSA/TestCreateKeyRSA_NON-HSM.json deleted file mode 100644 index 93f928ad4410..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSA/TestCreateKeyRSA_NON-HSM.json +++ /dev/null @@ -1,530 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3359961573/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:39 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "d2a099cd-0bf0-41e2-a2fc-0570c0624408" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3359961573/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=1312;rd_age=4506;brd_age=14341;ra_notif_age=487;da_notif_age=1837;dec_lev=3;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "8b929813-a71c-4b96-bd99-84783a6e4c3c" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3359961573/086b07a1ea3944668a5eca0581303702", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "0YNGH1z_eG5jDO9951LGTxguE-lhtBb7VfN7rVVlhtVr3m-k_9VEo3cAKzBPGTlCBOLx946RFygCE4Rb0W1_JdF2L0IakpRTMZdWFQLVqz_39P8eL98cqDf-D1sDy0gMalmzM4a-qb-kqywYJhF1tA75hLQkf8mi9Om7j93wEoTNyJuKVfElqkVcnTXX0-6JJkyOnv9AOKt19NDNcRzkIlqhhb8VTosDX_GRsEAVshAyAcjQX04cdXL-FXncddu-B2dbQ64eVUv1AGscmFL-F6ZeEReaT1yDdY8RzKBxD-TZlYBGyGa4KqWNql1dekfQB-MPpfSVSl6z0iijQTYYZQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818961, - "updated": 1652818961, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3359961573hsm/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "17", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA-HSM" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "696", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=1312;rd_age=4507;brd_age=14341;ra_notif_age=487;da_notif_age=1838;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "76fb5b31-25f9-4cd8-9e13-10955145bcfa" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3359961573hsm/48776f752c544446b767e3866648d73f", - "kty": "RSA-HSM", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "4_uTbNem9NqDy2tELE7ecsJBeikzigBOexCSoqPmxr1oJnrqwrYOMaUStMtNT5TRJf17nGp0jQPZeLcGCv86K5-ltS1ostvLav7z2RXHaxqFZ5j7dSMpLv9pJvuB1x__e-3ySV8ccaYroS6S8UsAnRiqscuPhViaF1VKJgHt0yPT-M72zg43zwZKB33htWVkqysYMtzD4Z8z6ZCb0frkRsyjlfa6wpeKDvBwlyLT4APjOTQf3P0QpTeybVr4kzxmbOjYQEX3BDRa_i3kaDMAS11HGNLuP0EYgy-t0lKeVwApGxdamppvbZ9RA2116hItlhTWSu1tRSa-bFgPogysPw", - "e": "AAEAAQ" - }, - "attributes": { - "enabled": true, - "created": 1652818961, - "updated": 1652818961, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3359961573?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=1313;rd_age=4507;brd_age=14342;ra_notif_age=488;da_notif_age=1838;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "f69521fa-b0ed-42c4-aa48-25f106d5b409" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573", - "deletedDate": 1652818962, - "scheduledPurgeDate": 1653423762, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3359961573/086b07a1ea3944668a5eca0581303702", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "0YNGH1z_eG5jDO9951LGTxguE-lhtBb7VfN7rVVlhtVr3m-k_9VEo3cAKzBPGTlCBOLx946RFygCE4Rb0W1_JdF2L0IakpRTMZdWFQLVqz_39P8eL98cqDf-D1sDy0gMalmzM4a-qb-kqywYJhF1tA75hLQkf8mi9Om7j93wEoTNyJuKVfElqkVcnTXX0-6JJkyOnv9AOKt19NDNcRzkIlqhhb8VTosDX_GRsEAVshAyAcjQX04cdXL-FXncddu-B2dbQ64eVUv1AGscmFL-F6ZeEReaT1yDdY8RzKBxD-TZlYBGyGa4KqWNql1dekfQB-MPpfSVSl6z0iijQTYYZQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818961, - "updated": 1652818961, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=2;da_age=1313;rd_age=4507;brd_age=14342;ra_notif_age=488;da_notif_age=1838;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ae028135-5340-4e9c-8281-ec7ddf31ef3e" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key3359961573" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:43 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=1314;rd_age=4508;brd_age=14343;ra_notif_age=489;da_notif_age=1839;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "2ce19142-cedc-4cef-9e78-ed72f9d8a81f" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573", - "deletedDate": 1652818962, - "scheduledPurgeDate": 1653423762, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3359961573/086b07a1ea3944668a5eca0581303702", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "0YNGH1z_eG5jDO9951LGTxguE-lhtBb7VfN7rVVlhtVr3m-k_9VEo3cAKzBPGTlCBOLx946RFygCE4Rb0W1_JdF2L0IakpRTMZdWFQLVqz_39P8eL98cqDf-D1sDy0gMalmzM4a-qb-kqywYJhF1tA75hLQkf8mi9Om7j93wEoTNyJuKVfElqkVcnTXX0-6JJkyOnv9AOKt19NDNcRzkIlqhhb8VTosDX_GRsEAVshAyAcjQX04cdXL-FXncddu-B2dbQ64eVUv1AGscmFL-F6ZeEReaT1yDdY8RzKBxD-TZlYBGyGa4KqWNql1dekfQB-MPpfSVSl6z0iijQTYYZQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818961, - "updated": 1652818961, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:43 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=1314;rd_age=4509;brd_age=14343;ra_notif_age=489;da_notif_age=1840;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "69567881-dc4e-4acb-ab99-aa97a697c502" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3359961573hsm?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:43 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=1315;rd_age=4509;brd_age=14343;ra_notif_age=489;da_notif_age=1840;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6a9f45d1-d406-4755-b902-e82fecd0fc0b" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573hsm", - "deletedDate": 1652818963, - "scheduledPurgeDate": 1653423763, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3359961573hsm/48776f752c544446b767e3866648d73f", - "kty": "RSA-HSM", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "4_uTbNem9NqDy2tELE7ecsJBeikzigBOexCSoqPmxr1oJnrqwrYOMaUStMtNT5TRJf17nGp0jQPZeLcGCv86K5-ltS1ostvLav7z2RXHaxqFZ5j7dSMpLv9pJvuB1x__e-3ySV8ccaYroS6S8UsAnRiqscuPhViaF1VKJgHt0yPT-M72zg43zwZKB33htWVkqysYMtzD4Z8z6ZCb0frkRsyjlfa6wpeKDvBwlyLT4APjOTQf3P0QpTeybVr4kzxmbOjYQEX3BDRa_i3kaDMAS11HGNLuP0EYgy-t0lKeVwApGxdamppvbZ9RA2116hItlhTWSu1tRSa-bFgPogysPw", - "e": "AAEAAQ" - }, - "attributes": { - "enabled": true, - "created": 1652818961, - "updated": 1652818961, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573hsm?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "84", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:43 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=1315;rd_age=4509;brd_age=14343;ra_notif_age=489;da_notif_age=1840;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e7c33e1d-4435-463c-84aa-897222c663cf" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key3359961573hsm" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573hsm?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "831", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:44 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=1316;rd_age=4510;brd_age=14345;ra_notif_age=491;da_notif_age=1841;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1b84e7fa-ae1f-46ec-84f7-f83bcfa64a6d" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573hsm", - "deletedDate": 1652818963, - "scheduledPurgeDate": 1653423763, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3359961573hsm/48776f752c544446b767e3866648d73f", - "kty": "RSA-HSM", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "4_uTbNem9NqDy2tELE7ecsJBeikzigBOexCSoqPmxr1oJnrqwrYOMaUStMtNT5TRJf17nGp0jQPZeLcGCv86K5-ltS1ostvLav7z2RXHaxqFZ5j7dSMpLv9pJvuB1x__e-3ySV8ccaYroS6S8UsAnRiqscuPhViaF1VKJgHt0yPT-M72zg43zwZKB33htWVkqysYMtzD4Z8z6ZCb0frkRsyjlfa6wpeKDvBwlyLT4APjOTQf3P0QpTeybVr4kzxmbOjYQEX3BDRa_i3kaDMAS11HGNLuP0EYgy-t0lKeVwApGxdamppvbZ9RA2116hItlhTWSu1tRSa-bFgPogysPw", - "e": "AAEAAQ" - }, - "attributes": { - "enabled": true, - "created": 1652818961, - "updated": 1652818961, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3359961573hsm?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:44 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=1316;rd_age=4510;brd_age=14345;ra_notif_age=491;da_notif_age=1841;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "dbb9f5bb-9635-43e4-b88e-08d275506476" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/invalidName%21@%23$/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "103", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:44 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4534d51e-a1c2-4adc-b9bd-588c2933f88c" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "The request URI contains an invalid name: invalidName!@#$" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSATags.json b/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSATags.json deleted file mode 100644 index 7d9e81b8ed23..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateKeyRSATags.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3250500751/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:44 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a1d13925-3b59-4f09-aa87-793103c2626f" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3250500751/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "36", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA", - "tags": { - "Tag1": "Val1" - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "710", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:45 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=5;da_age=1317;rd_age=4511;brd_age=14346;ra_notif_age=492;da_notif_age=1842;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e00e6a86-a702-41b2-92fe-6f39dace4a48" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3250500751/f7a3adde8e3349e982c57a188554bcbc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "1a437Kq4tJ49JZuQHR_jOJT8TY8NUDdYOuYQnkKZJqeO7dMl_fRgXwPu2HLsyMeKrPSOz3X9ssHxPSGvUOuxT8Cq-viUxveRd9ZFYIi9sE2JLZMoRrUI0ocFahUZt9s82xXFM8lujBzzXjTdSF1ytgBbZwFte9H9ccvbB-dsuVooWNPlX3fTcoJUsczrcLOyPiLj_MqOqVKSuZCq0KBeghqTOMrMeJIBIR_cbeMU98KSEcCPsF-RNSdWeGWb635nfcA8GIqIwfkgH4gJzy5Qyshb4l50mLPC7L47kK7AmD5gsFh11NOJ4qEG4Rn0lM-zG7pD3aWSg4kWpZwX-QvPyQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818966, - "updated": 1652818966, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": { - "Tag1": "Val1" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3250500751/f7a3adde8e3349e982c57a188554bcbc?api-version=7.3", - "RequestMethod": "PATCH", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "41", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "attributes": { - "enabled": true - }, - "tags": {} - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "697", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:45 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=5;da_age=1317;rd_age=4511;brd_age=14346;ra_notif_age=492;da_notif_age=1842;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0d61bc1e-c2fa-446e-9097-6b2f8f2c5fdb" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3250500751/f7a3adde8e3349e982c57a188554bcbc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "1a437Kq4tJ49JZuQHR_jOJT8TY8NUDdYOuYQnkKZJqeO7dMl_fRgXwPu2HLsyMeKrPSOz3X9ssHxPSGvUOuxT8Cq-viUxveRd9ZFYIi9sE2JLZMoRrUI0ocFahUZt9s82xXFM8lujBzzXjTdSF1ytgBbZwFte9H9ccvbB-dsuVooWNPlX3fTcoJUsczrcLOyPiLj_MqOqVKSuZCq0KBeghqTOMrMeJIBIR_cbeMU98KSEcCPsF-RNSdWeGWb635nfcA8GIqIwfkgH4gJzy5Qyshb4l50mLPC7L47kK7AmD5gsFh11NOJ4qEG4Rn0lM-zG7pD3aWSg4kWpZwX-QvPyQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818966, - "updated": 1652818966, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": {} - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3250500751?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "829", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:45 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=1317;rd_age=4511;brd_age=14346;ra_notif_age=492;da_notif_age=1842;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "afc4f17a-817a-4537-af66-c266168bbc59" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3250500751", - "deletedDate": 1652818966, - "scheduledPurgeDate": 1653423766, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3250500751/f7a3adde8e3349e982c57a188554bcbc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "1a437Kq4tJ49JZuQHR_jOJT8TY8NUDdYOuYQnkKZJqeO7dMl_fRgXwPu2HLsyMeKrPSOz3X9ssHxPSGvUOuxT8Cq-viUxveRd9ZFYIi9sE2JLZMoRrUI0ocFahUZt9s82xXFM8lujBzzXjTdSF1ytgBbZwFte9H9ccvbB-dsuVooWNPlX3fTcoJUsczrcLOyPiLj_MqOqVKSuZCq0KBeghqTOMrMeJIBIR_cbeMU98KSEcCPsF-RNSdWeGWb635nfcA8GIqIwfkgH4gJzy5Qyshb4l50mLPC7L47kK7AmD5gsFh11NOJ4qEG4Rn0lM-zG7pD3aWSg4kWpZwX-QvPyQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818966, - "updated": 1652818966, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": {} - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3250500751?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:45 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=1317;rd_age=4512;brd_age=14346;ra_notif_age=492;da_notif_age=1843;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9e896def-6b19-42ce-af7b-173c4ed45b92" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key3250500751" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3250500751?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "829", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:46 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=7;da_age=1319;rd_age=4513;brd_age=14347;ra_notif_age=493;da_notif_age=1844;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1eda53a2-c81d-48c0-b235-9ffb1c787aae" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3250500751", - "deletedDate": 1652818966, - "scheduledPurgeDate": 1653423766, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3250500751/f7a3adde8e3349e982c57a188554bcbc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "1a437Kq4tJ49JZuQHR_jOJT8TY8NUDdYOuYQnkKZJqeO7dMl_fRgXwPu2HLsyMeKrPSOz3X9ssHxPSGvUOuxT8Cq-viUxveRd9ZFYIi9sE2JLZMoRrUI0ocFahUZt9s82xXFM8lujBzzXjTdSF1ytgBbZwFte9H9ccvbB-dsuVooWNPlX3fTcoJUsczrcLOyPiLj_MqOqVKSuZCq0KBeghqTOMrMeJIBIR_cbeMU98KSEcCPsF-RNSdWeGWb635nfcA8GIqIwfkgH4gJzy5Qyshb4l50mLPC7L47kK7AmD5gsFh11NOJ4qEG4Rn0lM-zG7pD3aWSg4kWpZwX-QvPyQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818966, - "updated": 1652818966, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": {} - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3250500751?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:47 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=7;da_age=1319;rd_age=4513;brd_age=14347;ra_notif_age=493;da_notif_age=1844;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "be2252b1-21a8-4932-b1f7-596cc4341a75" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateOCTKey/TestCreateOCTKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCreateOCTKey/TestCreateOCTKey_HSM.json deleted file mode 100644 index 3c98984565de..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateOCTKey/TestCreateOCTKey_HSM.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key900305795/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "f6adb9ae-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key900305795/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "32", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "key_size": 256, - "kty": "oct-HSM" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "367", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f6f49a2c-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "155" - }, - "ResponseBody": { - "attributes": { - "created": 1643132033, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132033 - }, - "key": { - "key_ops": [ - "deriveKey", - "wrapKey", - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key900305795/41e66f4f46990db42d451f9a3981c0f3", - "kty": "oct-HSM" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key900305795?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "504", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f716f310-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "115" - }, - "ResponseBody": { - "attributes": { - "created": 1643132033, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132033 - }, - "deletedDate": 1643132033, - "key": { - "key_ops": [ - "deriveKey", - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "verify", - "sign" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key900305795/41e66f4f46990db42d451f9a3981c0f3", - "kty": "oct-HSM" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key900305795", - "scheduledPurgeDate": 1643736833 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key900305795?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "504", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f7332c88-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "35" - }, - "ResponseBody": { - "attributes": { - "created": 1643132033, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132033 - }, - "deletedDate": 1643132033, - "key": { - "key_ops": [ - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify", - "wrapKey", - "deriveKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key900305795/41e66f4f46990db42d451f9a3981c0f3", - "kty": "oct-HSM" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key900305795", - "scheduledPurgeDate": 1643736833 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key900305795?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "504", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f7434550-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "29" - }, - "ResponseBody": { - "attributes": { - "created": 1643132033, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132033 - }, - "deletedDate": 1643132033, - "key": { - "key_ops": [ - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify", - "wrapKey", - "deriveKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key900305795/41e66f4f46990db42d451f9a3981c0f3", - "kty": "oct-HSM" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key900305795", - "scheduledPurgeDate": 1643736833 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key900305795?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f755089e-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "108" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateOCTKey/TestCreateOCTKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestCreateOCTKey/TestCreateOCTKey_NON-HSM.json deleted file mode 100644 index 48bd8f76eae9..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateOCTKey/TestCreateOCTKey_NON-HSM.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1263913953/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:50 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ed7618c1-adc8-4f8f-a5cc-1cb5e9add544" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1263913953/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "32", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "key_size": 256, - "kty": "oct-HSM" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "77", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:50 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "522bfec3-80b6-49fb-8516-4a37ecc20570" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "Property has invalid value\r\n" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestDeleteKey/TestDeleteKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestDeleteKey/TestDeleteKey_HSM.json deleted file mode 100644 index 6fabfb5d19c9..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestDeleteKey/TestDeleteKey_HSM.json +++ /dev/null @@ -1,422 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1365154215/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "027ec598-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1365154215/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "02bec92c-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "239" - }, - "ResponseBody": { - "attributes": { - "created": 1643132052, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132052 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1365154215/17ae78e543cb4eb48b40f518e6f4b2ea", - "kty": "RSA-HSM", - "n": "ikzxz_1GjiJ9l_sETWd4-hl-cpzsGmQe7CHqFt9gR_7ww5_Rd5Elq-pMyke2sOCH4HaIbtmxvB5eGT4NTozPJO6idxf5pWNWC5hmcZ2i2RAE3uwOsu-_VELM0gi2C3O5vxbnwuwSSZ6p1OUSHvjJIBiFWoQVm_FIJWLPEChnMc4V0s_pyzJHD6zPUr5IkQug75L4IP_WUyowWQ6_gswrQ8nY3WUzvQ5YObLMWw_AYkFvw9hUaAv3HQt3h6Aoyoi1PzOYmu-bjl_G3PYAv2I7NUdKbEOJaYGlAGOSFV__tk7bSq-rcaxiA_vJlUGMk7XzCMC5ALME0HbKPxv4-6Z0gw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1365154215?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "02edcce0-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "142" - }, - "ResponseBody": { - "attributes": { - "created": 1643132052, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132052 - }, - "deletedDate": 1643132053, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1365154215/17ae78e543cb4eb48b40f518e6f4b2ea", - "kty": "RSA-HSM", - "n": "ikzxz_1GjiJ9l_sETWd4-hl-cpzsGmQe7CHqFt9gR_7ww5_Rd5Elq-pMyke2sOCH4HaIbtmxvB5eGT4NTozPJO6idxf5pWNWC5hmcZ2i2RAE3uwOsu-_VELM0gi2C3O5vxbnwuwSSZ6p1OUSHvjJIBiFWoQVm_FIJWLPEChnMc4V0s_pyzJHD6zPUr5IkQug75L4IP_WUyowWQ6_gswrQ8nY3WUzvQ5YObLMWw_AYkFvw9hUaAv3HQt3h6Aoyoi1PzOYmu-bjl_G3PYAv2I7NUdKbEOJaYGlAGOSFV__tk7bSq-rcaxiA_vJlUGMk7XzCMC5ALME0HbKPxv4-6Z0gw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1365154215", - "scheduledPurgeDate": 1643736853 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1365154215?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "030dbe42-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "28" - }, - "ResponseBody": { - "attributes": { - "created": 1643132052, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132052 - }, - "deletedDate": 1643132053, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1365154215/17ae78e543cb4eb48b40f518e6f4b2ea", - "kty": "RSA-HSM", - "n": "ikzxz_1GjiJ9l_sETWd4-hl-cpzsGmQe7CHqFt9gR_7ww5_Rd5Elq-pMyke2sOCH4HaIbtmxvB5eGT4NTozPJO6idxf5pWNWC5hmcZ2i2RAE3uwOsu-_VELM0gi2C3O5vxbnwuwSSZ6p1OUSHvjJIBiFWoQVm_FIJWLPEChnMc4V0s_pyzJHD6zPUr5IkQug75L4IP_WUyowWQ6_gswrQ8nY3WUzvQ5YObLMWw_AYkFvw9hUaAv3HQt3h6Aoyoi1PzOYmu-bjl_G3PYAv2I7NUdKbEOJaYGlAGOSFV__tk7bSq-rcaxiA_vJlUGMk7XzCMC5ALME0HbKPxv4-6Z0gw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1365154215", - "scheduledPurgeDate": 1643736853 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1365154215?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "031ca34e-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "28" - }, - "ResponseBody": { - "attributes": { - "created": 1643132052, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132052 - }, - "deletedDate": 1643132053, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1365154215/17ae78e543cb4eb48b40f518e6f4b2ea", - "kty": "RSA-HSM", - "n": "ikzxz_1GjiJ9l_sETWd4-hl-cpzsGmQe7CHqFt9gR_7ww5_Rd5Elq-pMyke2sOCH4HaIbtmxvB5eGT4NTozPJO6idxf5pWNWC5hmcZ2i2RAE3uwOsu-_VELM0gi2C3O5vxbnwuwSSZ6p1OUSHvjJIBiFWoQVm_FIJWLPEChnMc4V0s_pyzJHD6zPUr5IkQug75L4IP_WUyowWQ6_gswrQ8nY3WUzvQ5YObLMWw_AYkFvw9hUaAv3HQt3h6Aoyoi1PzOYmu-bjl_G3PYAv2I7NUdKbEOJaYGlAGOSFV__tk7bSq-rcaxiA_vJlUGMk7XzCMC5ALME0HbKPxv4-6Z0gw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1365154215", - "scheduledPurgeDate": 1643736853 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1365154215/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "170", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-request-id": "032b6762-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "15" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/keys/key1365154215 (Activity ID: 032b6762-7e05-11ec-a044-000d3a731e50)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1365154215?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "03384c34-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "104" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1365154215?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "177", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-request-id": "03528d10-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "26" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1365154215 (Activity ID: 03528d10-7e05-11ec-a044-000d3a731e50)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1365154215?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "177", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-request-id": "0360fa8a-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "31" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1365154215 (Activity ID: 0360fa8a-7e05-11ec-a044-000d3a731e50)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/nonexistent?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "168", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "037008a4-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "18" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/keys/nonexistent (Activity ID: 037008a4-7e05-11ec-a044-000d3a731e50)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1365154215?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "170", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "037d22aa-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "15" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/keys/key1365154215 (Activity ID: 037d22aa-7e05-11ec-a044-000d3a731e50)" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestDeleteKey/TestDeleteKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestDeleteKey/TestDeleteKey_NON-HSM.json deleted file mode 100644 index 34f2e44e083b..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestDeleteKey/TestDeleteKey_NON-HSM.json +++ /dev/null @@ -1,439 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2367977013/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:59 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "f7777bba-fb72-4c9e-a39f-5cf6510ebef8" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2367977013/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:01 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=20;da_age=1332;rd_age=4526;brd_age=14361;ra_notif_age=507;da_notif_age=1857;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "fa80b7e8-2107-4d4f-9aa1-ece92b52a53e" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key2367977013/1f81bdc56f514a0f80444a08d856407b", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "z2rieWCQrduUo9GbKyNyOV4K_XyJTAybYI2a9UDxH2t1ZhO_qo1oAeDpe-8PHsxrwh4hj8C8y0QfIU9znz6L4d_Nnyy1aEC7-FiRc6bGpohY16hgbAdC6Zx_7YdSzXNoiEJmyMhSHBB1iIfLsOS3v3D1zs9ZPgZF4LmZckqJZIbniRwdX_bgjhltx_aB3AUBCrL-qydXAkuRjCwAfEgLztiZrvajWKHZS2JoKKIzi22IT856Lwark_bT_tls2F5-VCNudxsF1xVjRdQdO3lBndYvg2cddHjM9wFF7mekhSJcH75XbQcaXQYHeBggaXenOWgg0TGylUjSTmn5rlgVKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818981, - "updated": 1652818981, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2367977013?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:01 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=21;da_age=1332;rd_age=4526;brd_age=14361;ra_notif_age=507;da_notif_age=1857;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "7e942c92-3d90-41d6-ae1b-dfac2cccf991" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013", - "deletedDate": 1652818981, - "scheduledPurgeDate": 1653423781, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key2367977013/1f81bdc56f514a0f80444a08d856407b", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "z2rieWCQrduUo9GbKyNyOV4K_XyJTAybYI2a9UDxH2t1ZhO_qo1oAeDpe-8PHsxrwh4hj8C8y0QfIU9znz6L4d_Nnyy1aEC7-FiRc6bGpohY16hgbAdC6Zx_7YdSzXNoiEJmyMhSHBB1iIfLsOS3v3D1zs9ZPgZF4LmZckqJZIbniRwdX_bgjhltx_aB3AUBCrL-qydXAkuRjCwAfEgLztiZrvajWKHZS2JoKKIzi22IT856Lwark_bT_tls2F5-VCNudxsF1xVjRdQdO3lBndYvg2cddHjM9wFF7mekhSJcH75XbQcaXQYHeBggaXenOWgg0TGylUjSTmn5rlgVKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818981, - "updated": 1652818981, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:01 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=21;da_age=1332;rd_age=4527;brd_age=14361;ra_notif_age=507;da_notif_age=1858;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4cdfc954-c6a2-4e58-b6b2-09dd1688c9d2" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key2367977013" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=22;da_age=1333;rd_age=4528;brd_age=14362;ra_notif_age=508;da_notif_age=1859;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b8f544d2-bd0b-4c88-b18d-ca4452829adb" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013", - "deletedDate": 1652818981, - "scheduledPurgeDate": 1653423781, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key2367977013/1f81bdc56f514a0f80444a08d856407b", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "z2rieWCQrduUo9GbKyNyOV4K_XyJTAybYI2a9UDxH2t1ZhO_qo1oAeDpe-8PHsxrwh4hj8C8y0QfIU9znz6L4d_Nnyy1aEC7-FiRc6bGpohY16hgbAdC6Zx_7YdSzXNoiEJmyMhSHBB1iIfLsOS3v3D1zs9ZPgZF4LmZckqJZIbniRwdX_bgjhltx_aB3AUBCrL-qydXAkuRjCwAfEgLztiZrvajWKHZS2JoKKIzi22IT856Lwark_bT_tls2F5-VCNudxsF1xVjRdQdO3lBndYvg2cddHjM9wFF7mekhSJcH75XbQcaXQYHeBggaXenOWgg0TGylUjSTmn5rlgVKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818981, - "updated": 1652818981, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2367977013/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "301", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=22;da_age=1334;rd_age=4528;brd_age=14362;ra_notif_age=508;da_notif_age=1859;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "fe8d53af-8ba6-41de-86a6-55265f19a1cf" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) key2367977013 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=22;da_age=1334;rd_age=4528;brd_age=14362;ra_notif_age=508;da_notif_age=1859;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "179ddb74-66f9-4e80-965e-ab5460cc4f04" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=22;da_age=1334;rd_age=4528;brd_age=14363;ra_notif_age=509;da_notif_age=1859;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c6784e80-970a-4225-8bab-06853aa56ddf" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key2367977013" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key2367977013?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=22;da_age=1334;rd_age=4528;brd_age=14363;ra_notif_age=509;da_notif_age=1859;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "7ee943d3-7fa0-4236-bedf-d976347c6bca" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key2367977013" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/nonexistent?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "299", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=1334;rd_age=4528;brd_age=14363;ra_notif_age=509;da_notif_age=1859;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "d7179b7a-d500-4787-aedb-afdf4892df65" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) nonexistent was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key2367977013?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "301", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:23:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=23;da_age=1334;rd_age=4528;brd_age=14363;ra_notif_age=509;da_notif_age=1859;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "770719ca-5ec8-49b7-89cb-45d367618a1d" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) key2367977013 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecrypt/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecrypt/KV.json new file mode 100644 index 000000000000..c3d26ec34d73 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecrypt/KV.json @@ -0,0 +1,167 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/key3964649413/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:12 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "3fbbced8-07ef-4eae-a842-f5035a417ed8" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/key3964649413/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "49", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "key_ops": [ + "encrypt", + "decrypt" + ], + "kty": "RSA-HSM" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "655", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:13 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=50;da_age=6495;rd_age=6495;brd_age=22982;ra_notif_age=340;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "d2772f89-f143-4db3-93d4-81024b5e6e11" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/key3964649413/60e8927b630f46e68c1f01ef664c059b", + "kty": "RSA-HSM", + "key_ops": [ + "encrypt", + "decrypt" + ], + "n": "nl7Ay8OuOrYySm1ds7XTGimZzzfxCeYkE7OsuzqLwFl8SXLpjj2Sm1LKBzOGiAfP-kgV6vMTrkuNui3MFUBaLA9nzzJoEGsknsUOb7mS9zF_bNe3BrXtst5tiC4E73SLoLjhxIV-0x6LoOqlrzuRGvosGqX9oFWRguhITUjC_f0Ep4NCXyvgyvCfChA6P2aIKsADeuCeTWAYen-XxKJnTRqFqSPy_bj-lvRf7gOJwNE5udNIRR5yq03QBBtXEw39yTDUb9XLdPDUemCWIPwYBJ8CM78rK8uGfSlzCREkwqfzBMXtI-2xRgocEwogUQImqgdDfXJE5iJf4jnOpQYPEw", + "e": "AAEAAQ" + }, + "attributes": { + "enabled": true, + "created": 1656356413, + "updated": 1656356413, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/key3964649413/60e8927b630f46e68c1f01ef664c059b/encrypt?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP-256", + "value": "cGxhaW50ZXh0" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "448", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:13 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=51;da_age=6495;rd_age=6495;brd_age=22983;ra_notif_age=341;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "372602fe-099c-4817-9adf-656566b45a11" + }, + "ResponseBody": { + "kid": "https://fakevault/keys/key3964649413/60e8927b630f46e68c1f01ef664c059b", + "value": "nXu0fMGHtHZWI6xQCdE-ZrlejtwYKEpQNQe_x7lDDn83ii005j73z7Z7JBMTW-BHevWq9MpbGYt1zYlw5XNy7HloemNGwj34Q1zbY1Z13xJ2nm3Va6GvpQDzi2zZdX-eNWeYq5SeKvxjDaxp7jwYSDWLwLPdj2oEDV1qxE2u-B6vIQ7skgMgNtGEc0nj14z14-msFkdWIJt9z0GhyqxEYitmEE9iiaRh_QRQ1R7Ql9RWXnUQgMQMRaaeWzsP3r3T9_2J7qTrfhdz2xSiMeYB19PryUQyyr9V72mPO4PNJGLPrA_VxoxnKgEO2-GvYKuVmJQ3aeK1GRrdFwheNZGbcA" + } + }, + { + "RequestUri": "https://fakevault/keys/key3964649413//decrypt?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "375", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP-256", + "value": "nXu0fMGHtHZWI6xQCdE-ZrlejtwYKEpQNQe_x7lDDn83ii005j73z7Z7JBMTW-BHevWq9MpbGYt1zYlw5XNy7HloemNGwj34Q1zbY1Z13xJ2nm3Va6GvpQDzi2zZdX-eNWeYq5SeKvxjDaxp7jwYSDWLwLPdj2oEDV1qxE2u-B6vIQ7skgMgNtGEc0nj14z14-msFkdWIJt9z0GhyqxEYitmEE9iiaRh_QRQ1R7Ql9RWXnUQgMQMRaaeWzsP3r3T9_2J7qTrfhdz2xSiMeYB19PryUQyyr9V72mPO4PNJGLPrA_VxoxnKgEO2-GvYKuVmJQ3aeK1GRrdFwheNZGbcA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "118", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:14 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=51;da_age=6496;rd_age=6496;brd_age=22983;ra_notif_age=341;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "b9ec3c9b-0250-48f4-8388-b5e5ad7c9420" + }, + "ResponseBody": { + "kid": "https://fakevault/keys/key3964649413/60e8927b630f46e68c1f01ef664c059b", + "value": "cGxhaW50ZXh0" + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecrypt/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecrypt/MHSM.json new file mode 100644 index 000000000000..d8e7ab626474 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecrypt/MHSM.json @@ -0,0 +1,153 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/key4206922229/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "60ae16be-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/key4206922229/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "49", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "key_ops": [ + "encrypt", + "decrypt" + ], + "kty": "RSA-HSM" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "677", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "60b6a8ce-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "285" + }, + "ResponseBody": { + "attributes": { + "created": 1656356414, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356414 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "encrypt", + "decrypt" + ], + "kid": "https://fakemhsm/keys/key4206922229/2ce6590d3c0700d899785a28faed7daa", + "kty": "RSA-HSM", + "n": "mMayCwr8--WIeNIjWczeeHTs6d1A6Z72CCPDw4BeA5baExbbv7P9-tWw4l3vQI88dArELawTm26fMPVwCC8H6vZTg59FS4O4Sj0Np3ISPaHKtQbIgB3lAYrP9GCtqd0_9HNmRIYZnglxXEE93l4wDhEAhfdsmvK1P8ggz5zBfQjsJ0aKzlgJ2qqKFOKGvx-06QNUdox2R1Y37BvolUuLNXsDCP87Mg4fDFg2k0fmg-yCcN6TlYGqmVphvwG5H8NGgXsd-9vyE8OvasKACsfvO1Hp-3UFTxJR77MoXzCmOj1uINM_sVS-bWHlZUgY-dfT_MqVk5SagGisuJnd_3P0UQ" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/key4206922229/2ce6590d3c0700d899785a28faed7daa/encrypt?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP-256", + "value": "cGxhaW50ZXh0" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "474", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "60fadd46-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "115" + }, + "ResponseBody": { + "alg": "RSA-OAEP-256", + "kid": "https://fakemhsm/keys/key4206922229/2ce6590d3c0700d899785a28faed7daa", + "value": "RlnblFMCiLrpMow8kpI1clBzs4KTaJwW6jaY8v9O6uyARuSX8hhENxOlBtBkzy-k-mJ5ZiNAX_TGl9uqxfPV92sCxvSEGCxlQ5S6zV3VOX6nVgIeFCaSwy0JLe1LBs7ecm5jO1DMtMaPEWZ3D3Rdp6mmtOAlL34YdEgYOslUGMl2ERy1MfyumyjJKkIo_ZrJj7IlYxMehmMUljKX9kuTjbmuK4Se-7a4RyleWLRs-OUT68E1bqrmeV8v37bd_gVYJWjUU5cjY6IV7DcK2E2TJXX4nxSQa8d969N8hhY6mALhGeXCxIKGFxssWlqefPKnPyGx3_G7ZAo6nQ__ZiGBDg" + } + }, + { + "RequestUri": "https://fakemhsm/keys/key4206922229//decrypt?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "375", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP-256", + "value": "RlnblFMCiLrpMow8kpI1clBzs4KTaJwW6jaY8v9O6uyARuSX8hhENxOlBtBkzy-k-mJ5ZiNAX_TGl9uqxfPV92sCxvSEGCxlQ5S6zV3VOX6nVgIeFCaSwy0JLe1LBs7ecm5jO1DMtMaPEWZ3D3Rdp6mmtOAlL34YdEgYOslUGMl2ERy1MfyumyjJKkIo_ZrJj7IlYxMehmMUljKX9kuTjbmuK4Se-7a4RyleWLRs-OUT68E1bqrmeV8v37bd_gVYJWjUU5cjY6IV7DcK2E2TJXX4nxSQa8d969N8hhY6mALhGeXCxIKGFxssWlqefPKnPyGx3_G7ZAo6nQ__ZiGBDg" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "144", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6119f384-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "2" + }, + "ResponseBody": { + "alg": "RSA-OAEP-256", + "kid": "https://fakemhsm/keys/key4206922229/2ce6590d3c0700d899785a28faed7daa", + "value": "cGxhaW50ZXh0" + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecryptSymmetric.json b/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecryptSymmetric.json new file mode 100644 index 000000000000..0f83b5003695 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestEncryptDecryptSymmetric.json @@ -0,0 +1,155 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/key3126998794/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "ba2d282a-f712-11ec-b85d-6045bda27deb", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/key3126998794/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "60", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "key_ops": [ + "encrypt", + "decrypt" + ], + "key_size": 256, + "kty": "oct" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "295", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=131.107.174.196;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "ba667de6-f712-11ec-b85d-6045bda27deb", + "x-ms-server-latency": "181" + }, + "ResponseBody": { + "attributes": { + "created": 1656442035, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656442035 + }, + "key": { + "key_ops": [ + "encrypt", + "decrypt" + ], + "kid": "https://fakemhsm/keys/key3126998794/0936ca53b7a4067439cfdc2536171c5c", + "kty": "oct-HSM" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/key3126998794/0936ca53b7a4067439cfdc2536171c5c/encrypt?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "73", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "A256CBCPAD", + "iv": "MDEyMzQ1Njc4OUFCQ0RFRg", + "value": "cGxhaW50ZXh0" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "160", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=131.107.174.196;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "ba88da6c-f712-11ec-b85d-6045bda27deb", + "x-ms-server-latency": "62" + }, + "ResponseBody": { + "alg": "A256CBCPAD", + "iv": "MDEyMzQ1Njc4OUFCQ0RFRg", + "kid": "https://fakemhsm/keys/key3126998794/0936ca53b7a4067439cfdc2536171c5c", + "value": "TKaJmBWLJPLuuED8gEtw7g" + } + }, + { + "RequestUri": "https://fakemhsm/keys/key3126998794//decrypt?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "83", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "A256CBCPAD", + "iv": "MDEyMzQ1Njc4OUFCQ0RFRg", + "value": "TKaJmBWLJPLuuED8gEtw7g" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "120", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=131.107.174.196;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "ba992ff2-f712-11ec-b85d-6045bda27deb", + "x-ms-server-latency": "2" + }, + "ResponseBody": { + "alg": "A256CBCPAD", + "kid": "https://fakemhsm/keys/key3126998794/0936ca53b7a4067439cfdc2536171c5c", + "value": "cGxhaW50ZXh0" + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetDeletedKey/TestGetDeletedKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetDeletedKey/TestGetDeletedKey_HSM.json deleted file mode 100644 index 9775e0e778cc..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetDeletedKey/TestGetDeletedKey_HSM.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "18a0a660-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "702", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "18d1b016-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "285" - }, - "ResponseBody": { - "attributes": { - "created": 1651859892, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859892 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/468a380efcf7472d2771fc71a867aa18", - "kty": "RSA-HSM", - "n": "qtkhZAas2fyDl7rPiY-TK0eWcnLfTca-fg1EIz2ths76job5z5HVHecfS_K0cWybUqxRA3ltQjXNrg_mE9krvcuh0ATXmeCwbTy0dqp2OJBOsEW4s_a_IGs5Q_L8XW5y5vpYsBQsYpSuDqGhnetkiS2g65zrRRpVzqB0IrGufbd7PRk5Zy6403Xw55Xe58bMPFqAQBM6-f2W5C4dUyin35hZoSomMk0M9Vna8jY87o8QNeG7cM08s1cxIRS_yBOrsHNLf3ycxnXidbiF_QspciYk7IOBT72039epmOcxk-PmnsY33KfNdD43FKrrP-X125oNdGzIVJR-XC8uE7u2BQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "826", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1904f46c-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "196" - }, - "ResponseBody": { - "attributes": { - "created": 1651859892, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859892 - }, - "deletedDate": 1651859893, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/468a380efcf7472d2771fc71a867aa18", - "kty": "RSA-HSM", - "n": "qtkhZAas2fyDl7rPiY-TK0eWcnLfTca-fg1EIz2ths76job5z5HVHecfS_K0cWybUqxRA3ltQjXNrg_mE9krvcuh0ATXmeCwbTy0dqp2OJBOsEW4s_a_IGs5Q_L8XW5y5vpYsBQsYpSuDqGhnetkiS2g65zrRRpVzqB0IrGufbd7PRk5Zy6403Xw55Xe58bMPFqAQBM6-f2W5C4dUyin35hZoSomMk0M9Vna8jY87o8QNeG7cM08s1cxIRS_yBOrsHNLf3ycxnXidbiF_QspciYk7IOBT72039epmOcxk-PmnsY33KfNdD43FKrrP-X125oNdGzIVJR-XC8uE7u2BQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103", - "scheduledPurgeDate": 1652464693 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "826", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "192b8abe-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "37" - }, - "ResponseBody": { - "attributes": { - "created": 1651859892, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859892 - }, - "deletedDate": 1651859893, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/468a380efcf7472d2771fc71a867aa18", - "kty": "RSA-HSM", - "n": "qtkhZAas2fyDl7rPiY-TK0eWcnLfTca-fg1EIz2ths76job5z5HVHecfS_K0cWybUqxRA3ltQjXNrg_mE9krvcuh0ATXmeCwbTy0dqp2OJBOsEW4s_a_IGs5Q_L8XW5y5vpYsBQsYpSuDqGhnetkiS2g65zrRRpVzqB0IrGufbd7PRk5Zy6403Xw55Xe58bMPFqAQBM6-f2W5C4dUyin35hZoSomMk0M9Vna8jY87o8QNeG7cM08s1cxIRS_yBOrsHNLf3ycxnXidbiF_QspciYk7IOBT72039epmOcxk-PmnsY33KfNdD43FKrrP-X125oNdGzIVJR-XC8uE7u2BQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103", - "scheduledPurgeDate": 1652464693 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "826", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "193a1444-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "31" - }, - "ResponseBody": { - "attributes": { - "created": 1651859892, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859892 - }, - "deletedDate": 1651859893, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/468a380efcf7472d2771fc71a867aa18", - "kty": "RSA-HSM", - "n": "qtkhZAas2fyDl7rPiY-TK0eWcnLfTca-fg1EIz2ths76job5z5HVHecfS_K0cWybUqxRA3ltQjXNrg_mE9krvcuh0ATXmeCwbTy0dqp2OJBOsEW4s_a_IGs5Q_L8XW5y5vpYsBQsYpSuDqGhnetkiS2g65zrRRpVzqB0IrGufbd7PRk5Zy6403Xw55Xe58bMPFqAQBM6-f2W5C4dUyin35hZoSomMk0M9Vna8jY87o8QNeG7cM08s1cxIRS_yBOrsHNLf3ycxnXidbiF_QspciYk7IOBT72039epmOcxk-PmnsY33KfNdD43FKrrP-X125oNdGzIVJR-XC8uE7u2BQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103", - "scheduledPurgeDate": 1652464693 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "826", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1ac702b8-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "39" - }, - "ResponseBody": { - "attributes": { - "created": 1651859892, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859892 - }, - "deletedDate": 1651859893, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103/468a380efcf7472d2771fc71a867aa18", - "kty": "RSA-HSM", - "n": "qtkhZAas2fyDl7rPiY-TK0eWcnLfTca-fg1EIz2ths76job5z5HVHecfS_K0cWybUqxRA3ltQjXNrg_mE9krvcuh0ATXmeCwbTy0dqp2OJBOsEW4s_a_IGs5Q_L8XW5y5vpYsBQsYpSuDqGhnetkiS2g65zrRRpVzqB0IrGufbd7PRk5Zy6403Xw55Xe58bMPFqAQBM6-f2W5C4dUyin35hZoSomMk0M9Vna8jY87o8QNeG7cM08s1cxIRS_yBOrsHNLf3ycxnXidbiF_QspciYk7IOBT72039epmOcxk-PmnsY33KfNdD43FKrrP-X125oNdGzIVJR-XC8uE7u2BQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103", - "scheduledPurgeDate": 1652464693 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/keyName122725103?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1ad672c0-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "114" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/keyName122725103?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "156", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1af0b1b2-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "17" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://fakekvurl.managedhsm.azure.net/keys/keyName122725103 (Activity ID: 1af0b1b2-cd66-11ec-830e-6045bd86d60f)" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetDeletedKey/TestGetDeletedKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetDeletedKey/TestGetDeletedKey_NON-HSM.json deleted file mode 100644 index b23720c5df80..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetDeletedKey/TestGetDeletedKey_NON-HSM.json +++ /dev/null @@ -1,355 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/keyName2187501853/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:29 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "22144364-af0a-4e33-a6ff-81dc1c8b149d" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/keyName2187501853/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "691", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:31 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=110;da_age=1422;rd_age=4616;brd_age=14451;ra_notif_age=597;da_notif_age=1947;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0fef217a-cc7b-4032-8a65-6a2b7332b315" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/keyName2187501853/f3ade0f4d8e64c599cc86a0160741170", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "u-PoAvXb4lXSpIvyqYik17TWdfsS-m1X7zqd1Qf6TEYYu4pSiyGBQHPpTvUIUPXn81XyKKLPwFZ1DFwCgIgxX_JOfSlbHJwP-gsdef_TUxGYkpt9oh1Kt7lBzjqgK1M1Idos0tIzhwZeIDsCVrvsD8gIyRZI19OoEY4E99K5yOr-bPIYmy_onP2oFDRG6XpfPtjNA7561s8gkrw9yhesZ1SC8pNBG9ZOslbtPkGQkTCzJMKOZwgsHI_FzYaUfvuGnB_Ooup284F_6qy7tyWlobJ2kl7c4QGvd4sa6fMbgridEu49KU0s3MNsUeC56EI_7BbeEKmhC5iwd9JIIYyvKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819071, - "updated": 1652819071, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/keyName2187501853?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "827", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:31 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=111;da_age=1422;rd_age=4616;brd_age=14451;ra_notif_age=597;da_notif_age=1947;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "074fabbb-1c3f-4f49-b981-9bb6e18dc4db" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853", - "deletedDate": 1652819071, - "scheduledPurgeDate": 1653423871, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/keyName2187501853/f3ade0f4d8e64c599cc86a0160741170", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "u-PoAvXb4lXSpIvyqYik17TWdfsS-m1X7zqd1Qf6TEYYu4pSiyGBQHPpTvUIUPXn81XyKKLPwFZ1DFwCgIgxX_JOfSlbHJwP-gsdef_TUxGYkpt9oh1Kt7lBzjqgK1M1Idos0tIzhwZeIDsCVrvsD8gIyRZI19OoEY4E99K5yOr-bPIYmy_onP2oFDRG6XpfPtjNA7561s8gkrw9yhesZ1SC8pNBG9ZOslbtPkGQkTCzJMKOZwgsHI_FzYaUfvuGnB_Ooup284F_6qy7tyWlobJ2kl7c4QGvd4sa6fMbgridEu49KU0s3MNsUeC56EI_7BbeEKmhC5iwd9JIIYyvKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819071, - "updated": 1652819071, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "85", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:31 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=111;da_age=1422;rd_age=4616;brd_age=14451;ra_notif_age=597;da_notif_age=1947;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4f0ef92b-9d1f-4e9b-a8d3-a4a5c96a4230" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: keyName2187501853" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "827", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:32 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=112;da_age=1423;rd_age=4618;brd_age=14452;ra_notif_age=598;da_notif_age=1949;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c2674308-c999-4cb0-a239-a585a6d7c656" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853", - "deletedDate": 1652819071, - "scheduledPurgeDate": 1653423871, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/keyName2187501853/f3ade0f4d8e64c599cc86a0160741170", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "u-PoAvXb4lXSpIvyqYik17TWdfsS-m1X7zqd1Qf6TEYYu4pSiyGBQHPpTvUIUPXn81XyKKLPwFZ1DFwCgIgxX_JOfSlbHJwP-gsdef_TUxGYkpt9oh1Kt7lBzjqgK1M1Idos0tIzhwZeIDsCVrvsD8gIyRZI19OoEY4E99K5yOr-bPIYmy_onP2oFDRG6XpfPtjNA7561s8gkrw9yhesZ1SC8pNBG9ZOslbtPkGQkTCzJMKOZwgsHI_FzYaUfvuGnB_Ooup284F_6qy7tyWlobJ2kl7c4QGvd4sa6fMbgridEu49KU0s3MNsUeC56EI_7BbeEKmhC5iwd9JIIYyvKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819071, - "updated": 1652819071, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "827", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:32 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=112;da_age=1424;rd_age=4618;brd_age=14452;ra_notif_age=598;da_notif_age=1949;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1e6a07ec-e461-4113-b5b1-5a41d05fa0f2" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853", - "deletedDate": 1652819071, - "scheduledPurgeDate": 1653423871, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/keyName2187501853/f3ade0f4d8e64c599cc86a0160741170", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "u-PoAvXb4lXSpIvyqYik17TWdfsS-m1X7zqd1Qf6TEYYu4pSiyGBQHPpTvUIUPXn81XyKKLPwFZ1DFwCgIgxX_JOfSlbHJwP-gsdef_TUxGYkpt9oh1Kt7lBzjqgK1M1Idos0tIzhwZeIDsCVrvsD8gIyRZI19OoEY4E99K5yOr-bPIYmy_onP2oFDRG6XpfPtjNA7561s8gkrw9yhesZ1SC8pNBG9ZOslbtPkGQkTCzJMKOZwgsHI_FzYaUfvuGnB_Ooup284F_6qy7tyWlobJ2kl7c4QGvd4sa6fMbgridEu49KU0s3MNsUeC56EI_7BbeEKmhC5iwd9JIIYyvKQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819071, - "updated": 1652819071, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/keyName2187501853?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:24:32 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=112;da_age=1424;rd_age=4618;brd_age=14452;ra_notif_age=598;da_notif_age=1949;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "13cc4d1e-0bba-4b86-ae42-b64c41456e34" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/keyName2187501853?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "305", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:32 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=112;da_age=1424;rd_age=4618;brd_age=14453;ra_notif_age=599;da_notif_age=1949;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "aeee2440-4122-439c-8d69-1e1a3b59a4a3" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) keyName2187501853 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetKey/TestGetKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetKey/TestGetKey_HSM.json deleted file mode 100644 index 9f2bb86f5d01..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetKey/TestGetKey_HSM.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1478960915/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "000c8f7a-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1478960915/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "004a3d66-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "204" - }, - "ResponseBody": { - "attributes": { - "created": 1643132048, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132048 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1478960915/a4c85b7c38270eb6373f145d05f5a157", - "kty": "RSA-HSM", - "n": "juHCLu5n8w5IhtNkvGoqCh8jMD5xvo6tR07Bdz0yndm3ShPTvMwW0FZWDlexGT3K5bmpKc2BkXJGop45UjP3Kp_HJqK7WtKdbCS_efdq2HTlz9NBHpwTzHf-pOS_crukm-VZ_2H_CulKix5gZ64WGexZ5TKpWJn6P6TEx1SxJnCTeMqU1eLj1qsIY5bpAgJxgW0Bhup6jr_1u1Q-QB1cAcUMJ29dGbf17kP8Janyepk1gasnrua39NFdRocWYLpS94v4Gq0ha4kzZfDnnT1wJnXAgK3hOYcpQ0fHChq5TVU_KCZVBW7ZsEJBmHjn6sYnT7H310vpl1ZyTV6FEbBCDQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1478960915/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "0073df18-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "64" - }, - "ResponseBody": { - "attributes": { - "created": 1643132048, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132048 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1478960915/a4c85b7c38270eb6373f145d05f5a157", - "kty": "RSA-HSM", - "n": "juHCLu5n8w5IhtNkvGoqCh8jMD5xvo6tR07Bdz0yndm3ShPTvMwW0FZWDlexGT3K5bmpKc2BkXJGop45UjP3Kp_HJqK7WtKdbCS_efdq2HTlz9NBHpwTzHf-pOS_crukm-VZ_2H_CulKix5gZ64WGexZ5TKpWJn6P6TEx1SxJnCTeMqU1eLj1qsIY5bpAgJxgW0Bhup6jr_1u1Q-QB1cAcUMJ29dGbf17kP8Janyepk1gasnrua39NFdRocWYLpS94v4Gq0ha4kzZfDnnT1wJnXAgK3hOYcpQ0fHChq5TVU_KCZVBW7ZsEJBmHjn6sYnT7H310vpl1ZyTV6FEbBCDQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/invalidkey%5B%5D%28%29/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "128", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "008813ca-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "Invalid key identifier or name (Activity ID: 008813ca-7e05-11ec-a044-000d3a731e50)" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetKey/TestGetKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetKey/TestGetKey_NON-HSM.json deleted file mode 100644 index 509ee40a9672..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetKey/TestGetKey_NON-HSM.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key398251057/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:58 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b24be69b-fff4-417c-968e-30cd3058052f" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key398251057/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:59 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=19;da_age=1330;rd_age=4525;brd_age=14359;ra_notif_age=505;da_notif_age=1856;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "48b02b58-ea57-44ac-8fe6-9920b2ee3d8e" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key398251057/0551b3694f7e44909771c5e9aee498d9", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "vXMmDFboPrb5L8f8U90MEFHrmgx0vNTXyFN2I0FCskr5Bm2AApk5vmvpi0zj2JKU_Sm6yPiJ1GCTc9P_maV5Xf0h23rS4TIFSdjpjTfwz5bUntEjSNK0oAKtk_Y0jyKwOsdEBukwVWbrR25VpzwJd0cVFMyxfWbvpWBQCtkJtcy9ExBv9CyYACYpsLd2Wj4QHm5Jp1JgPpt2NmSKpOEe67HVIehlozqiywIGaSPeDN-9kyxj7IDrvafnxd6XrrDyF5qSX7zSfq9v52ISNdRkT_CnrvJ30G3HlI18crWO1Ns4EAO8ODjUiLfQQMBRYL_fLQo-DBI11hAnNaBBibj-zQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818979, - "updated": 1652818979, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key398251057/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:59 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=19;da_age=1331;rd_age=4525;brd_age=14359;ra_notif_age=505;da_notif_age=1856;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "8942f442-fc23-4799-b64e-413641d91238" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key398251057/0551b3694f7e44909771c5e9aee498d9", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "vXMmDFboPrb5L8f8U90MEFHrmgx0vNTXyFN2I0FCskr5Bm2AApk5vmvpi0zj2JKU_Sm6yPiJ1GCTc9P_maV5Xf0h23rS4TIFSdjpjTfwz5bUntEjSNK0oAKtk_Y0jyKwOsdEBukwVWbrR25VpzwJd0cVFMyxfWbvpWBQCtkJtcy9ExBv9CyYACYpsLd2Wj4QHm5Jp1JgPpt2NmSKpOEe67HVIehlozqiywIGaSPeDN-9kyxj7IDrvafnxd6XrrDyF5qSX7zSfq9v52ISNdRkT_CnrvJ30G3HlI18crWO1Ns4EAO8ODjUiLfQQMBRYL_fLQo-DBI11hAnNaBBibj-zQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818979, - "updated": 1652818979, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/invalidkey%5B%5D%28%29/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "102", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:59 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "bb93af34-c1d0-41cf-b835-9dfb1d8aa1e6" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "The request URI contains an invalid name: invalidkey[]()" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetKeyRotationPolicy/TestGetKeyRotationPolicy_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetKeyRotationPolicy/TestGetKeyRotationPolicy_NON-HSM.json deleted file mode 100644 index 78a2a4473534..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetKeyRotationPolicy/TestGetKeyRotationPolicy_NON-HSM.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1507363465/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:35 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "2aa2a979-1015-4776-bd34-9314b8786c1a" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1507363465/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:36 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=116;da_age=1427;rd_age=4621;brd_age=14456;ra_notif_age=602;da_notif_age=1952;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9b177657-d8ea-4770-8469-0602affd4a99" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1507363465/8908c205e8c14d35a3b38411d174d4e6", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "v3OxrU7q8FihRJ1TI_FfcGzFtSBljLDh_IlouvE_n57LFPBSH_A52HzAV1P47wubQuH0MkTfO9fI065NoypOdxGmC-oc5lHagZ51XWKhcFpP76AHvFKi-18HsEdtiVcgNyCQmql_C-vcjD5GVq30iUK0C8zQdoBkKE1CYV-tIp7HGIzQfenk1YJDtkptIqUnC05Xds5zKTWkwhOupehOdLjCwx-XwL2PLudyuste4d_Ywu_9TxSN0CXkhKAIYtlXPgveghwrO53E6hB4Ut6rDkGyDV1LRXDNWrid1WlenjlxwQ7W1C-ek4P2KZR6CQH0Xx5bfZpFNWgv5yGPrgJ9HQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819076, - "updated": 1652819076, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1507363465/rotationpolicy?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "106", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:36 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=116;da_age=1427;rd_age=4622;brd_age=14456;ra_notif_age=602;da_notif_age=1953;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a535cde0-7282-4307-a98c-9b610707499f" - }, - "ResponseBody": { - "lifetimeActions": [ - { - "trigger": { - "timeBeforeExpiry": "P30D" - }, - "action": { - "type": "Notify" - } - } - ], - "attributes": null - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1507363465?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:36 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=116;da_age=1427;rd_age=4622;brd_age=14456;ra_notif_age=602;da_notif_age=1953;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ab0a5bb5-463a-42f3-b908-e7ca06416387" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key1507363465", - "deletedDate": 1652819076, - "scheduledPurgeDate": 1653423876, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1507363465/8908c205e8c14d35a3b38411d174d4e6", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "v3OxrU7q8FihRJ1TI_FfcGzFtSBljLDh_IlouvE_n57LFPBSH_A52HzAV1P47wubQuH0MkTfO9fI065NoypOdxGmC-oc5lHagZ51XWKhcFpP76AHvFKi-18HsEdtiVcgNyCQmql_C-vcjD5GVq30iUK0C8zQdoBkKE1CYV-tIp7HGIzQfenk1YJDtkptIqUnC05Xds5zKTWkwhOupehOdLjCwx-XwL2PLudyuste4d_Ywu_9TxSN0CXkhKAIYtlXPgveghwrO53E6hB4Ut6rDkGyDV1LRXDNWrid1WlenjlxwQ7W1C-ek4P2KZR6CQH0Xx5bfZpFNWgv5yGPrgJ9HQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819076, - "updated": 1652819076, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1507363465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:36 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=116;da_age=1428;rd_age=4622;brd_age=14456;ra_notif_age=602;da_notif_age=1953;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1a7d692b-0e78-4534-a307-1026cdc60e2a" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key1507363465" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1507363465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:37 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=117;da_age=1429;rd_age=4623;brd_age=14458;ra_notif_age=604;da_notif_age=1954;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b373d33a-0c73-4e82-a49d-17045a6b76f8" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key1507363465", - "deletedDate": 1652819076, - "scheduledPurgeDate": 1653423876, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1507363465/8908c205e8c14d35a3b38411d174d4e6", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "v3OxrU7q8FihRJ1TI_FfcGzFtSBljLDh_IlouvE_n57LFPBSH_A52HzAV1P47wubQuH0MkTfO9fI065NoypOdxGmC-oc5lHagZ51XWKhcFpP76AHvFKi-18HsEdtiVcgNyCQmql_C-vcjD5GVq30iUK0C8zQdoBkKE1CYV-tIp7HGIzQfenk1YJDtkptIqUnC05Xds5zKTWkwhOupehOdLjCwx-XwL2PLudyuste4d_Ywu_9TxSN0CXkhKAIYtlXPgveghwrO53E6hB4Ut6rDkGyDV1LRXDNWrid1WlenjlxwQ7W1C-ek4P2KZR6CQH0Xx5bfZpFNWgv5yGPrgJ9HQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819076, - "updated": 1652819076, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1507363465?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:24:37 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=117;da_age=1429;rd_age=4623;brd_age=14458;ra_notif_age=604;da_notif_age=1954;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0366ff84-8dd8-476b-a6e8-853cd704432f" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetRandomBytes.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetRandomBytes.json new file mode 100644 index 000000000000..d36c4752aa66 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestGetRandomBytes.json @@ -0,0 +1,62 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/rng?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "61268cc0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/rng?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "count": 100 + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "146", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "612f6dae-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": { + "value": "FiqmKfden-bNGD_hyWPNvcGS3Oluel7u_4FOspmwSozj961HQ6IwwxdHf5nBtAOZq4D7BoLaAdPt-311TCG_xtNdRwjbzmv__5TWqE5V8og9_CdkbhAYYLOgA4h4NgnITKrc9A" + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestGetRandomBytes/TestGetRandomBytes_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestGetRandomBytes/TestGetRandomBytes_HSM.json deleted file mode 100644 index bdf4ef52b451..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestGetRandomBytes/TestGetRandomBytes_HSM.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/rng?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "26964366-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/rng?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "count": 100 - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "146", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "26d8a3aa-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "1" - }, - "ResponseBody": { - "value": "k_JSNZiS05XCS7LF7eYJpmEEL8Z1Lwtax8X1sXMp9EYMbN-BjRHF0_Ngj5lrWp9ANZZExfCmpb5agy-keuiK-BY6t5a7EhbImj982oQNZVdUV5CM9pmtZ_LPpMe8ZWRpW0QYhQ" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/rng?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "12", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "count": -1 - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "168", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "26e3af20-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "GetRandomBytesRequest: count cannot be greater than 128 or less than 1 (Activity ID: 26e3af20-7e05-11ec-a044-000d3a731e50)" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/KV.json new file mode 100644 index 000000000000..aa4e3df47893 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/KV.json @@ -0,0 +1,151 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/testimport2202992193?api-version=7.3", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Tue, 28 Jun 2022 23:13:17 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "39642abe-6310-4143-bddd-35bdc3081c30" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/testimport2202992193?api-version=7.3", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "1661", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "Hsm": true, + "key": { + "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", + "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", + "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", + "e": "AQAB", + "key_ops": [ + "encrypt" + ], + "kty": "RSA", + "n": "oJFNACNKxoOyG0wV1b7Yh73JWcLlevVK5zTo8Acg13XSdeRVIH43hM7rYKUKRlXdcqepTScejuj3lZpmnKbndb8OI7ra6ZG0Up2XhSi0vZBSHTLdJlZ5a6gra7_HZoyPXutQU3R_0ZkxnSmoRA0I9EEtUn_5MR7acYJZILR7HEaxGrPpHXMWQH6Jx_NA97haNAQs5RdDsn1HGEA9NMe0OK9hgb4F5NEeuYXTglPX_pv1P8LxsALSLS15P6eaUEtqtC0EkoBNcHHXJ6Bs86iJOqVCsVA_gyspY3G2cH1NxuNy-P5n2N7RyQj95FzgO8CGpxSH-nXkOqDgZ5qg0g7-NQ", + "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", + "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", + "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "634", + "Content-Type": "application/json; charset=utf-8", + "Date": "Tue, 28 Jun 2022 23:13:19 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=1;rd_age=1;brd_age=16032;ra_notif_age=932;dec_lev=3;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f9ede17b-1eee-4cbb-986a-c4ebce6ccda7" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testimport2202992193/4adf275c035a482b9cdc7e69918c7322", + "kty": "RSA-HSM", + "key_ops": [ + "encrypt" + ], + "n": "oJFNACNKxoOyG0wV1b7Yh73JWcLlevVK5zTo8Acg13XSdeRVIH43hM7rYKUKRlXdcqepTScejuj3lZpmnKbndb8OI7ra6ZG0Up2XhSi0vZBSHTLdJlZ5a6gra7_HZoyPXutQU3R_0ZkxnSmoRA0I9EEtUn_5MR7acYJZILR7HEaxGrPpHXMWQH6Jx_NA97haNAQs5RdDsn1HGEA9NMe0OK9hgb4F5NEeuYXTglPX_pv1P8LxsALSLS15P6eaUEtqtC0EkoBNcHHXJ6Bs86iJOqVCsVA_gyspY3G2cH1NxuNy-P5n2N7RyQj95FzgO8CGpxSH-nXkOqDgZ5qg0g7-NQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656458000, + "updated": 1656458000, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testimport2202992193?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "757", + "Content-Type": "application/json; charset=utf-8", + "Date": "Tue, 28 Jun 2022 23:13:19 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=1;rd_age=1;brd_age=16032;ra_notif_age=933;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "045e1156-fb43-4b07-b087-4031f7652ddf" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testimport2202992193", + "deletedDate": 1656458000, + "scheduledPurgeDate": 1657062800, + "key": { + "kid": "https://fakevault/keys/testimport2202992193/4adf275c035a482b9cdc7e69918c7322", + "kty": "RSA-HSM", + "key_ops": [ + "encrypt" + ], + "n": "oJFNACNKxoOyG0wV1b7Yh73JWcLlevVK5zTo8Acg13XSdeRVIH43hM7rYKUKRlXdcqepTScejuj3lZpmnKbndb8OI7ra6ZG0Up2XhSi0vZBSHTLdJlZ5a6gra7_HZoyPXutQU3R_0ZkxnSmoRA0I9EEtUn_5MR7acYJZILR7HEaxGrPpHXMWQH6Jx_NA97haNAQs5RdDsn1HGEA9NMe0OK9hgb4F5NEeuYXTglPX_pv1P8LxsALSLS15P6eaUEtqtC0EkoBNcHHXJ6Bs86iJOqVCsVA_gyspY3G2cH1NxuNy-P5n2N7RyQj95FzgO8CGpxSH-nXkOqDgZ5qg0g7-NQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656458000, + "updated": 1656458000, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/TestImportKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/MHSM.json similarity index 59% rename from sdk/keyvault/azkeys/testdata/recordings/TestImportKey/TestImportKey_HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestImportKey/MHSM.json index b208bfa5f6b5..1f9eccca752a 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/TestImportKey_HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/MHSM.json @@ -1,13 +1,13 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/importedKey?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testimport369061497?api-version=7.3", "RequestMethod": "PUT", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 401, @@ -17,41 +17,37 @@ "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "261b3fc2-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "1" + "x-ms-request-id": "e6c2c41a-f737-11ec-a078-6045bda27deb", + "x-ms-server-latency": "2" }, "ResponseBody": null }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/importedKey?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testimport369061497?api-version=7.3", "RequestMethod": "PUT", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "1699", + "Content-Length": "1661", "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { + "Hsm": true, "key": { "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", "e": "AQAB", "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" + "encrypt" ], "kty": "RSA", - "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", + "n": "oJFNACNKxoOyG0wV1b7Yh73JWcLlevVK5zTo8Acg13XSdeRVIH43hM7rYKUKRlXdcqepTScejuj3lZpmnKbndb8OI7ra6ZG0Up2XhSi0vZBSHTLdJlZ5a6gra7_HZoyPXutQU3R_0ZkxnSmoRA0I9EEtUn_5MR7acYJZILR7HEaxGrPpHXMWQH6Jx_NA97haNAQs5RdDsn1HGEA9NMe0OK9hgb4F5NEeuYXTglPX_pv1P8LxsALSLS15P6eaUEtqtC0EkoBNcHHXJ6Bs86iJOqVCsVA_gyspY3G2cH1NxuNy-P5n2N7RyQj95FzgO8CGpxSH-nXkOqDgZ5qg0g7-NQ", "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH" @@ -60,73 +56,82 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "714", + "Content-Length": "651", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "2655aebe-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "239" + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "e6e67c20-f737-11ec-a078-6045bda27deb", + "x-ms-server-latency": "331" }, "ResponseBody": { "attributes": { - "created": 1643132112, + "created": 1656458001, "enabled": true, "exportable": false, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132112 + "updated": 1656458001 }, "key": { "e": "AQAB", "key_ops": [ - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify", - "wrapKey" + "encrypt" ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/importedKey/8e237b5cad6f00b711a67f1bd342b4f9", + "kid": "https://fakemhsm/keys/testimport369061497/ae2e319b0b1502249bc528cfaa327257", "kty": "RSA-HSM", "n": "oJFNACNKxoOyG0wV1b7Yh73JWcLlevVK5zTo8Acg13XSdeRVIH43hM7rYKUKRlXdcqepTScejuj3lZpmnKbndb8OI7ra6ZG0Up2XhSi0vZBSHTLdJlZ5a6gra7_HZoyPXutQU3R_0ZkxnSmoRA0I9EEtUn_5MR7acYJZILR7HEaxGrPpHXMWQH6Jx_NA97haNAQs5RdDsn1HGEA9NMe0OK9hgb4F5NEeuYXTglPX_pv1P8LxsALSLS15P6eaUEtqtC0EkoBNcHHXJ6Bs86iJOqVCsVA_gyspY3G2cH1NxuNy-P5n2N7RyQj95FzgO8CGpxSH-nXkOqDgZ5qg0g7-NQ" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/invalid?api-version=7.3", - "RequestMethod": "PUT", + "RequestUri": "https://fakemhsm/keys/testimport369061497?api-version=7.3", + "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "10", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "RequestBody": { - "key": {} - }, - "StatusCode": 400, + "RequestBody": null, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "126", + "Content-Length": "772", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "2684ecce-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "e720be3a-f737-11ec-a078-6045bda27deb", + "x-ms-server-latency": "167" }, "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "JSON Web Key: kty is missing (Activity ID: 2684ecce-7e05-11ec-a044-000d3a731e50)" - } + "attributes": { + "created": 1656458001, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656458001 + }, + "deletedDate": 1656458001, + "key": { + "e": "AQAB", + "key_ops": [ + "encrypt" + ], + "kid": "https://fakemhsm/keys/testimport369061497/ae2e319b0b1502249bc528cfaa327257", + "kty": "RSA-HSM", + "n": "oJFNACNKxoOyG0wV1b7Yh73JWcLlevVK5zTo8Acg13XSdeRVIH43hM7rYKUKRlXdcqepTScejuj3lZpmnKbndb8OI7ra6ZG0Up2XhSi0vZBSHTLdJlZ5a6gra7_HZoyPXutQU3R_0ZkxnSmoRA0I9EEtUn_5MR7acYJZILR7HEaxGrPpHXMWQH6Jx_NA97haNAQs5RdDsn1HGEA9NMe0OK9hgb4F5NEeuYXTglPX_pv1P8LxsALSLS15P6eaUEtqtC0EkoBNcHHXJ6Bs86iJOqVCsVA_gyspY3G2cH1NxuNy-P5n2N7RyQj95FzgO8CGpxSH-nXkOqDgZ5qg0g7-NQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testimport369061497", + "scheduledPurgeDate": 1657062801 } } ], diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/TestImportKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/TestImportKey_NON-HSM.json deleted file mode 100644 index cfa0c076f67e..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestImportKey/TestImportKey_NON-HSM.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/importedKey?api-version=7.3", - "RequestMethod": "PUT", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:28 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "8d28db9d-cf1c-4346-b39d-ec5883831ace" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/importedKey?api-version=7.3", - "RequestMethod": "PUT", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "1699", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "key": { - "d": "Ynx9JGaBSP4iUsf6ZJ6opantRNdcdmzaQrKbZg6ZQE8Ohi1FYabJWvaoPSE-CiJEsDzShXZHMhUHN4X7Bn8BXaGQhK3p9HXgiwQKmix7oAJTu4ElUIyd8UC3UWHSZr40el4PaQD-HYu_eMzCXus34MnRiNbh_BUWm6T-Eidhk9d3kNIyaSi9YNDQHW6tjWrEhhq63O7JU1j9ZonFChZxpKk20jdkQKQURVAdpOdL-5j4I70ZxFuU6wHZj8DS8oRQfwGOvZKbgYDb5jgf3UNL_7eACqq92XPVX56vm7iKbqeyjCqAIx5y3hrSRIJtZlWCwjYnYQGd4unxDLi8wmJWSQ", - "dp": "AMmhWb5yZcu6vJr8xJZ-t0_likxJRUMZAtEULaWZt2DgODj4y9JrZDJP6mvckzhQP0WXk2NuWbU2HR5pUeCN2wieG1B76VKoH76vfnaJDqT1NuJVBcP2SLHog3ffwZtMME5zjfygchG3kihqOSpwTQ9ETAqAJTkRC38fEhwAz_Cp", - "dq": "AKC9TAo9n2RDaggjdLXK8kiLrBVoaWFTpqXkzYXRhtsx4vWPAkxhfSnze05rVMl6HiXv7FnE0f0wYawzUJzoyuXBH0zS6D9BqCZPeF543AmWB27iPf38Q9Z8Rjr6oBgMSnGDV_mm8nDVQkeaDyE4cOZh-5UKvKShTKKQVwunmDNH", - "e": "AQAB", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "kty": "RSA", - "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "p": "ANHerI1o3dLB_VLVmZZVss8VZSYN5SaeQ_0qhfOSgOFwj__waCFmy2EG7l6l6f_Z-Y0L7Mn_LNov68lyWSFa2EuQUeVj4UoFHc5Di8ZUGiSsTwFM-XMtNuv8HmGgDYLL5BIJD3eTz71LdgW-Ez38OZH34b7VeG8zfeUDb8Hi30zz", - "q": "AMPcZrZBqbc82DO8Q5zTT8ZXRGWrW36KktMllaIk1W2RHnRiQiW0jBWmcCgqUcQNHa1LwumjyNqwx28QBS37BTvG7ULGUoio6LrOeoiBGEMj-U19sX6m37plEhj5Mak7j3OPPY_T9rohjTW5aGGg9YSwq4jdz0RrmBX00ofYOjI3", - "qi": "AJ_nrkLpK8BPzVeARkvSHQyKwMWZ-a8CD95qsKfn0dOZAvXY-2xhQYTEwbED-0bpTNEKbIpA-ZkaHygmnzJkNbbFAnb9pkkzU8ZQqDP3JNgMfVIroWx58Oth9nJza2j7i-MkPRCUPEq3Ao0J52z7WJIiLji8TTVYW_NaiM1oxzsH" - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:29 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=109;da_age=1421;rd_age=4615;brd_age=14450;ra_notif_age=596;da_notif_age=1946;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3eb2dff1-e2cf-4107-9f6d-e2afb4d1b2ce" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/importedKey/8f89b910f1bc44daa5f57cfd43d37414", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "AKCRTQAjSsaDshtMFdW-2Ie9yVnC5Xr1Suc06PAHINd10nXkVSB-N4TO62ClCkZV3XKnqU0nHo7o95WaZpym53W_DiO62umRtFKdl4UotL2QUh0y3SZWeWuoK2u_x2aMj17rUFN0f9GZMZ0pqEQNCPRBLVJ_-TEe2nGCWSC0exxGsRqz6R1zFkB-icfzQPe4WjQELOUXQ7J9RxhAPTTHtDivYYG-BeTRHrmF04JT1_6b9T_C8bAC0i0teT-nmlBLarQtBJKATXBx1yegbPOoiTqlQrFQP4MrKWNxtnB9Tcbjcvj-Z9je0ckI_eRc4DvAhqcUh_p15Dqg4GeaoNIO_jU", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819070, - "updated": 1652819070, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/invalid?api-version=7.3", - "RequestMethod": "PUT", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "10", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "key": {} - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "101", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:29 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=110;da_age=1421;rd_age=4615;brd_age=14450;ra_notif_age=596;da_notif_age=1946;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "588ded35-ea0a-48ba-9648-7b840f75d5d8" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "The property \u0022key\u0022 must be a valid JsonWebKey object." - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/KV.json new file mode 100644 index 000000000000..fbc24fe579a2 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/KV.json @@ -0,0 +1,1334 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/listdeletedkeys04161187054/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:16 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "00ce8e9b-04e2-427a-af23-4a3f20b94d3d" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys04161187054/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "732", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:17 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=54;da_age=6499;rd_age=6499;brd_age=22986;ra_notif_age=344;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "29ece1f7-43c9-49e7-9b38-0b66855b9c15" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listdeletedkeys04161187054/3e5c4aa19d2744478afee432a5088da4", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "xIOOyWpUFWzmn3ZZA45orteWqAABSHXSN92dXJEKveOx2eY3QbTz4GJTnAHP8kSeDY5tMch_KZkwWDw7WxOhmSNp670D2viSDCBIF4xdYhkh4w12UObJboj3fHANbgkoIXZputIh44OeCGyDvJjBI7RH94g8qKkcunqQEdsncrZrPRtLhP9ozrD_wFmcgtGZljV-ozb8wmk9x6r6iJANgpWqwqaV6AH4vs_lG6prEHNbg42A1pVGlwehHTqAF110dFygGqA06x3NHfCBi3nK_1bRM4Vcv6NC8Miev0tnQ6dagYd7QLvHZVD0XwlEEi4pvYAtlR0ch3RbqMjAyd4x9Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356417, + "updated": 1656356417, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys04161187054?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:17 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=55;da_age=6499;rd_age=6499;brd_age=22986;ra_notif_age=344;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a26af979-2b75-494e-854c-5876804f566c" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys04161187054", + "deletedDate": 1656356417, + "scheduledPurgeDate": 1656961217, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys04161187054/3e5c4aa19d2744478afee432a5088da4", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "xIOOyWpUFWzmn3ZZA45orteWqAABSHXSN92dXJEKveOx2eY3QbTz4GJTnAHP8kSeDY5tMch_KZkwWDw7WxOhmSNp670D2viSDCBIF4xdYhkh4w12UObJboj3fHANbgkoIXZputIh44OeCGyDvJjBI7RH94g8qKkcunqQEdsncrZrPRtLhP9ozrD_wFmcgtGZljV-ozb8wmk9x6r6iJANgpWqwqaV6AH4vs_lG6prEHNbg42A1pVGlwehHTqAF110dFygGqA06x3NHfCBi3nK_1bRM4Vcv6NC8Miev0tnQ6dagYd7QLvHZVD0XwlEEi4pvYAtlR0ch3RbqMjAyd4x9Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356417, + "updated": 1656356417, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys14161187054/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "732", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:17 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=55;da_age=6499;rd_age=6499;brd_age=22987;ra_notif_age=345;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "17c59af1-8c78-4485-9f42-01494e0a9472" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listdeletedkeys14161187054/828f5e17f6e849328892d2647f4f1938", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "6ZcmGejjXreeGCxlL0Wm3Z-m5nqsAwzSzLiPS7pa5AoV9uzUQ2JyZacuMc6i9rcx3DXTr2AWuRSA4Ktt-dO03GA0K5QvpeX6BUyJKIbnmu7Y0GvaxjSok1mUd9K587EVjoaAokzn09eHOfu9_SQ0ROX6isyPQbLJFLTV21f_h7saHLdmsVIPGoyGniw3EQLGqLBNf6XwNRYK_du-xqti4-ngWm9eYm83wG8gj1XUwEd6li54U4NjAIW4CGTBxHkYXv2xKOOP-656lcd4wXb_VGj45tozp7rV7vAEnfuWjFyanSL5xQFYeLmN_WJH6WnnPycmk2XAOmWSIZL7mFsvIQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys14161187054?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:17 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=55;da_age=6500;rd_age=6500;brd_age=22987;ra_notif_age=345;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "36c1fdda-fba4-4470-b08e-9c550c2d9cbf" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys14161187054", + "deletedDate": 1656356418, + "scheduledPurgeDate": 1656961218, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys14161187054/828f5e17f6e849328892d2647f4f1938", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "6ZcmGejjXreeGCxlL0Wm3Z-m5nqsAwzSzLiPS7pa5AoV9uzUQ2JyZacuMc6i9rcx3DXTr2AWuRSA4Ktt-dO03GA0K5QvpeX6BUyJKIbnmu7Y0GvaxjSok1mUd9K587EVjoaAokzn09eHOfu9_SQ0ROX6isyPQbLJFLTV21f_h7saHLdmsVIPGoyGniw3EQLGqLBNf6XwNRYK_du-xqti4-ngWm9eYm83wG8gj1XUwEd6li54U4NjAIW4CGTBxHkYXv2xKOOP-656lcd4wXb_VGj45tozp7rV7vAEnfuWjFyanSL5xQFYeLmN_WJH6WnnPycmk2XAOmWSIZL7mFsvIQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys24161187054/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "732", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:18 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=55;da_age=6500;rd_age=6500;brd_age=22987;ra_notif_age=345;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "86a5898b-e81f-4cd3-89ed-c8997cbf4bbb" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listdeletedkeys24161187054/789f6fe1b9554a4c885bd305719520d4", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "7FjsZsNXq5EqhgzELATCLWRzHKW4MSD2mZ7q2V5Vvpy-TDFJnu757zzE1XMBF747SY8fxhAVwQCawblv52WxootiSEOL0-nJGsyKGM_qj10muIHpC3ggSnAkFpGubrpkcAWBx1nyBuH4lQU8g7yRoPcGrg8HUx09C6s0PnEN77j-wmrKyxLHs-Twh5OrrBSjIDfWABzyTtcrNq6Lj3KUjd09-V1bYfMPNhdxDJORW9GfoiVlWh6r1DdYnDJ-IxKGd2IQxF-n8_TNtD_bEwWKnTJNxA-kcTMWoatE4ORKXum3ePKFkdkEOlx86Fe4ygiLZaGw-5bo5rGjLyjtGsGa2Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys24161187054?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:18 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=56;da_age=6500;rd_age=6500;brd_age=22988;ra_notif_age=346;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "bea7d84c-dca1-4c22-a5a6-3be82aef9265" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys24161187054", + "deletedDate": 1656356419, + "scheduledPurgeDate": 1656961219, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys24161187054/789f6fe1b9554a4c885bd305719520d4", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "7FjsZsNXq5EqhgzELATCLWRzHKW4MSD2mZ7q2V5Vvpy-TDFJnu757zzE1XMBF747SY8fxhAVwQCawblv52WxootiSEOL0-nJGsyKGM_qj10muIHpC3ggSnAkFpGubrpkcAWBx1nyBuH4lQU8g7yRoPcGrg8HUx09C6s0PnEN77j-wmrKyxLHs-Twh5OrrBSjIDfWABzyTtcrNq6Lj3KUjd09-V1bYfMPNhdxDJORW9GfoiVlWh6r1DdYnDJ-IxKGd2IQxF-n8_TNtD_bEwWKnTJNxA-kcTMWoatE4ORKXum3ePKFkdkEOlx86Fe4ygiLZaGw-5bo5rGjLyjtGsGa2Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys34161187054/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "732", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:18 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=56;da_age=6501;rd_age=6501;brd_age=22988;ra_notif_age=346;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "fb126d3f-1241-4448-944f-b9d873a124e2" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listdeletedkeys34161187054/4fc139b20df841b1ad1d5858afdb1107", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "16vMX83YcUrBCmUoD1aVcJDv7andEtlzP1EhS8gy-Qy0qlMBnhoLOZXjgw2xK6RxOK8zGFDutvynLjIoezhvHx9hhsWPkbkiMQedfam9WaCo0AukI3pSlwaQ5gp9uxMissXo8Ujv-cLnlkacG92L1dGctdx3lbZOZ3au3bpw9NY_7OMA84xtTbKwC0Q6Rw8vyPhgLItl71UHKLnEN7rxKN1AKankqQQRTmpbbltptjS2bNCFzdYaxlQxDUioxEqzeQg2o2NsV9BQmBxLHEQo_P5zKLZWSwPrkbpI3FKY1-soV4uUTB9K_IX8mFAtPcKymKdknV8UgBhWQa3PySC60Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356419, + "updated": 1656356419, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/keys/listdeletedkeys34161187054?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:19 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=57;da_age=6501;rd_age=6501;brd_age=22988;ra_notif_age=346;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "fe2e9bb6-387e-4b77-bc64-2aa20a1c1b0a" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys34161187054", + "deletedDate": 1656356419, + "scheduledPurgeDate": 1656961219, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys34161187054/4fc139b20df841b1ad1d5858afdb1107", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "16vMX83YcUrBCmUoD1aVcJDv7andEtlzP1EhS8gy-Qy0qlMBnhoLOZXjgw2xK6RxOK8zGFDutvynLjIoezhvHx9hhsWPkbkiMQedfam9WaCo0AukI3pSlwaQ5gp9uxMissXo8Ujv-cLnlkacG92L1dGctdx3lbZOZ3au3bpw9NY_7OMA84xtTbKwC0Q6Rw8vyPhgLItl71UHKLnEN7rxKN1AKankqQQRTmpbbltptjS2bNCFzdYaxlQxDUioxEqzeQg2o2NsV9BQmBxLHEQo_P5zKLZWSwPrkbpI3FKY1-soV4uUTB9K_IX8mFAtPcKymKdknV8UgBhWQa3PySC60Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356419, + "updated": 1656356419, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/listdeletedkeys04161187054?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 404, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "94", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:19 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=57;da_age=6501;rd_age=6501;brd_age=22989;ra_notif_age=347;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "d6ccae82-5b63-48ed-b640-fec31d197dbe" + }, + "ResponseBody": { + "error": { + "code": "KeyNotFound", + "message": "Deleted Key not found: listdeletedkeys04161187054" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/listdeletedkeys04161187054?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:29 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=67;da_age=6511;rd_age=6511;brd_age=22999;ra_notif_age=357;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "389f212b-89ec-4845-bd77-642a9bc4695d" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys04161187054", + "deletedDate": 1656356417, + "scheduledPurgeDate": 1656961217, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys04161187054/3e5c4aa19d2744478afee432a5088da4", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "xIOOyWpUFWzmn3ZZA45orteWqAABSHXSN92dXJEKveOx2eY3QbTz4GJTnAHP8kSeDY5tMch_KZkwWDw7WxOhmSNp670D2viSDCBIF4xdYhkh4w12UObJboj3fHANbgkoIXZputIh44OeCGyDvJjBI7RH94g8qKkcunqQEdsncrZrPRtLhP9ozrD_wFmcgtGZljV-ozb8wmk9x6r6iJANgpWqwqaV6AH4vs_lG6prEHNbg42A1pVGlwehHTqAF110dFygGqA06x3NHfCBi3nK_1bRM4Vcv6NC8Miev0tnQ6dagYd7QLvHZVD0XwlEEi4pvYAtlR0ch3RbqMjAyd4x9Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356417, + "updated": 1656356417, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/listdeletedkeys14161187054?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:29 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=67;da_age=6512;rd_age=6512;brd_age=22999;ra_notif_age=357;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a982bf0b-95c3-43e4-bfaf-77a7796b820c" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys14161187054", + "deletedDate": 1656356418, + "scheduledPurgeDate": 1656961218, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys14161187054/828f5e17f6e849328892d2647f4f1938", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "6ZcmGejjXreeGCxlL0Wm3Z-m5nqsAwzSzLiPS7pa5AoV9uzUQ2JyZacuMc6i9rcx3DXTr2AWuRSA4Ktt-dO03GA0K5QvpeX6BUyJKIbnmu7Y0GvaxjSok1mUd9K587EVjoaAokzn09eHOfu9_SQ0ROX6isyPQbLJFLTV21f_h7saHLdmsVIPGoyGniw3EQLGqLBNf6XwNRYK_du-xqti4-ngWm9eYm83wG8gj1XUwEd6li54U4NjAIW4CGTBxHkYXv2xKOOP-656lcd4wXb_VGj45tozp7rV7vAEnfuWjFyanSL5xQFYeLmN_WJH6WnnPycmk2XAOmWSIZL7mFsvIQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/listdeletedkeys24161187054?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:30 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=67;da_age=6512;rd_age=6512;brd_age=22999;ra_notif_age=357;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "eb4b9168-e7c3-42c5-b54f-d6745adbe87d" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys24161187054", + "deletedDate": 1656356419, + "scheduledPurgeDate": 1656961219, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys24161187054/789f6fe1b9554a4c885bd305719520d4", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "7FjsZsNXq5EqhgzELATCLWRzHKW4MSD2mZ7q2V5Vvpy-TDFJnu757zzE1XMBF747SY8fxhAVwQCawblv52WxootiSEOL0-nJGsyKGM_qj10muIHpC3ggSnAkFpGubrpkcAWBx1nyBuH4lQU8g7yRoPcGrg8HUx09C6s0PnEN77j-wmrKyxLHs-Twh5OrrBSjIDfWABzyTtcrNq6Lj3KUjd09-V1bYfMPNhdxDJORW9GfoiVlWh6r1DdYnDJ-IxKGd2IQxF-n8_TNtD_bEwWKnTJNxA-kcTMWoatE4ORKXum3ePKFkdkEOlx86Fe4ygiLZaGw-5bo5rGjLyjtGsGa2Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys/listdeletedkeys34161187054?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "877", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:30 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=68;da_age=6512;rd_age=6512;brd_age=22999;ra_notif_age=358;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "e7118036-c86d-43a1-9601-c56919f6ce87" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys34161187054", + "deletedDate": 1656356419, + "scheduledPurgeDate": 1656961219, + "key": { + "kid": "https://fakevault/keys/listdeletedkeys34161187054/4fc139b20df841b1ad1d5858afdb1107", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "16vMX83YcUrBCmUoD1aVcJDv7andEtlzP1EhS8gy-Qy0qlMBnhoLOZXjgw2xK6RxOK8zGFDutvynLjIoezhvHx9hhsWPkbkiMQedfam9WaCo0AukI3pSlwaQ5gp9uxMissXo8Ujv-cLnlkacG92L1dGctdx3lbZOZ3au3bpw9NY_7OMA84xtTbKwC0Q6Rw8vyPhgLItl71UHKLnEN7rxKN1AKankqQQRTmpbbltptjS2bNCFzdYaxlQxDUioxEqzeQg2o2NsV9BQmBxLHEQo_P5zKLZWSwPrkbpI3FKY1-soV4uUTB9K_IX8mFAtPcKymKdknV8UgBhWQa3PySC60Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356419, + "updated": 1656356419, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "343", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:30 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=68;da_age=6512;rd_age=6512;brd_age=23000;ra_notif_age=358;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "5e8d2b4f-9674-42a8-be2e-8d05098a09f0" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjghTURBd01EVXdJV3RsZVM5TFJWa3pPVFkwTmpRNU5ERXpMell3UlRnNU1qZENOak13UmpRMlJUWTRRekZHTURGRlJqWTJORU13TlRsQ0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjghTURBd01EVXdJV3RsZVM5TFJWa3pPVFkwTmpRNU5ERXpMell3UlRnNU1qZENOak13UmpRMlJUWTRRekZHTURGRlJqWTJORU13TlRsQ0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "306", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:30 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=68;da_age=6512;rd_age=6512;brd_age=23000;ra_notif_age=358;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "c142f49e-3968-47ee-84a1-cb72b0b72f9d" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk13TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk13TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "758", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:30 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=68;da_age=6513;rd_age=6513;brd_age=23000;ra_notif_age=358;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "53e525fe-0b4b-4ee8-a1cd-657debff5b44" + }, + "ResponseBody": { + "value": [ + { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys04161187054", + "deletedDate": 1656356417, + "scheduledPurgeDate": 1656961217, + "kid": "https://fakevault/keys/listdeletedkeys04161187054", + "attributes": { + "enabled": true, + "created": 1656356417, + "updated": 1656356417, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + ], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk13TkRFMk1URTROekExTkM4elJUVkRORUZCTVRsRU1qYzBORFEzT0VGR1JVVTBNekpCTlRBNE9FUkJOQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk13TkRFMk1URTROekExTkM4elJUVkRORUZCTVRsRU1qYzBORFEzT0VGR1JVVTBNekpCTlRBNE9FUkJOQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "306", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=68;da_age=6513;rd_age=6513;brd_age=23000;ra_notif_age=358;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "37a074c9-80b3-437c-a9c5-7aeacbddd18d" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk14TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk14TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "758", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=69;da_age=6513;rd_age=6513;brd_age=23000;ra_notif_age=359;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "134e6cab-37ac-4c1a-b657-ad6df33eb53b" + }, + "ResponseBody": { + "value": [ + { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys14161187054", + "deletedDate": 1656356418, + "scheduledPurgeDate": 1656961218, + "kid": "https://fakevault/keys/listdeletedkeys14161187054", + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + ], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk14TkRFMk1URTROekExTkM4NE1qaEdOVVV4TjBZMlJUZzBPVE15T0RnNU1rUXlOalEzUmpSR01Ua3pPQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk14TkRFMk1URTROekExTkM4NE1qaEdOVVV4TjBZMlJUZzBPVE15T0RnNU1rUXlOalEzUmpSR01Ua3pPQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "306", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=69;da_age=6513;rd_age=6513;brd_age=23001;ra_notif_age=359;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "6ae02bb2-bcaa-4807-8777-1044993618ac" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk15TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk15TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "758", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=69;da_age=6513;rd_age=6513;brd_age=23001;ra_notif_age=359;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "c7891479-e41f-4ad6-a562-a37cea6486e9" + }, + "ResponseBody": { + "value": [ + { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys24161187054", + "deletedDate": 1656356419, + "scheduledPurgeDate": 1656961219, + "kid": "https://fakevault/keys/listdeletedkeys24161187054", + "attributes": { + "enabled": true, + "created": 1656356418, + "updated": 1656356418, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + ], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk15TkRFMk1URTROekExTkM4M09EbEdOa1pGTVVJNU5UVTBRVFJET0RnMVFrUXpNRFUzTVRrMU1qQkVOQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk15TkRFMk1URTROekExTkM4M09EbEdOa1pGTVVJNU5UVTBRVFJET0RnMVFrUXpNRFUzTVRrMU1qQkVOQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "306", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=69;da_age=6514;rd_age=6514;brd_age=23001;ra_notif_age=359;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "50bc999d-105d-49c0-9d24-dc31a83b4206" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk16TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk16TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "758", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=69;da_age=6514;rd_age=6514;brd_age=23001;ra_notif_age=359;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "981fc1d2-9058-40ce-a7da-cd0b1d7bf49c" + }, + "ResponseBody": { + "value": [ + { + "recoveryId": "https://fakevault/deletedkeys/listdeletedkeys34161187054", + "deletedDate": 1656356419, + "scheduledPurgeDate": 1656961219, + "kid": "https://fakevault/keys/listdeletedkeys34161187054", + "attributes": { + "enabled": true, + "created": 1656356419, + "updated": 1656356419, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + }, + "tags": { + "count-this-key": "yes" + } + } + ], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk16TkRFMk1URTROekExTkM4MFJrTXhNemxDTWpCRVJqZzBNVUl4UVVReFJEVTROVGhCUmtSQ01URXdOeUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk16TkRFMk1URTROekExTkM4MFJrTXhNemxDTWpCRVJqZzBNVUl4UVVReFJEVTROVGhCUmtSQ01URXdOeUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "306", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=70;da_age=6514;rd_age=6514;brd_age=23001;ra_notif_age=360;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "3304fc72-a2f4-4377-a32b-b3270f4d679d" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5VVJWTlVRa0ZEUzFWUVVrVlRWRTlTUlRjMU1EWTJOekF5TVNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5VVJWTlVRa0ZEUzFWUVVrVlRWRTlTUlRjMU1EWTJOekF5TVNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "726", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=70;da_age=6514;rd_age=6514;brd_age=23002;ra_notif_age=360;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "9391f87e-65f8-477f-85fb-3e8664951baf" + }, + "ResponseBody": { + "value": [ + { + "recoveryId": "https://fakevault/deletedkeys/testbackuprestore750667021", + "deletedDate": 1656356385, + "scheduledPurgeDate": 1656961185, + "kid": "https://fakevault/keys/testbackuprestore750667021", + "attributes": { + "enabled": true, + "created": 1656356363, + "updated": 1656356363, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5VVJWTlVRa0ZEUzFWUVVrVlRWRTlTUlRjMU1EWTJOekF5TVM4MU1UVXpORGRHT1RFMFJURTBORGRHUWpJMU0wVTBNVVkxTkRNMlJUSXlOQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWXpJV3RsZVM5VVJWTlVRa0ZEUzFWUVVrVlRWRTlTUlRjMU1EWTJOekF5TVM4MU1UVXpORGRHT1RFMFJURTBORGRHUWpJMU0wVTBNVVkxTkRNMlJUSXlOQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "294", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=70;da_age=6515;rd_age=6515;brd_age=23002;ra_notif_age=360;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "146fb7cc-246f-47ec-bda7-2b286fa67191" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlVUlZOVVNVMVFUMUpVTWpJd01qazVNakU1TXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlVUlZOVVNVMVFUMUpVTWpJd01qazVNakU1TXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "704", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=70;da_age=6515;rd_age=6515;brd_age=23002;ra_notif_age=360;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "1ce14551-3f74-42a0-9ff9-502c707fdef6" + }, + "ResponseBody": { + "value": [ + { + "recoveryId": "https://fakevault/deletedkeys/testimport2202992193", + "deletedDate": 1656356416, + "scheduledPurgeDate": 1656961216, + "kid": "https://fakevault/keys/testimport2202992193", + "attributes": { + "enabled": true, + "created": 1656356415, + "updated": 1656356415, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTNJV3RsZVM5VVJWTlVTVTFRVDFKVU1qSXdNams1TWpFNU15OHhRVGMwTkRBNVFUWXhPRGcwT1VVMk9UZzBSRU15TURjMFFUQTRRalkyTUNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTNJV3RsZVM5VVJWTlVTVTFRVDFKVU1qSXdNams1TWpFNU15OHhRVGMwTkRBNVFUWXhPRGcwT1VVMk9UZzBSRU15TURjMFFUQTRRalkyTUNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "299", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:33 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=71;da_age=6515;rd_age=6515;brd_age=23002;ra_notif_age=360;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "2f5f51fc-c9d1-4ab8-96f8-967591d3b1f0" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlVUlZOVVMwVlpSVU10U0ZOTk1qTTRNams1TlRNeE5TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/deletedkeys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlVUlZOVVMwVlpSVU10U0ZOTk1qTTRNams1TlRNeE5TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "28", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:33 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=71;da_age=6515;rd_age=6515;brd_age=23002;ra_notif_age=361;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "7ddc28dd-ded0-46b0-8227-59c74ebc1f74" + }, + "ResponseBody": { + "value": [], + "nextLink": null + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/MHSM.json new file mode 100644 index 000000000000..261bba605367 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/MHSM.json @@ -0,0 +1,986 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys01717479170/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "6c4396c0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "0" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys01717479170/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "760", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6c4c2a1a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "279" + }, + "ResponseBody": { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys01717479170/339f2d7af28502e7bee75323fe5cd01d", + "kty": "RSA-HSM", + "n": "iZS5AKs13yP5WKqvcUtes7gn7aK8kg9qDPmNej1ik_RYZXvbkRXDZNaF3P4R9E6SD1UBJwjr1YFeljRJbGQseJUvWq4rPBMSwc8w7rpYxSixf4wtaV1O9B0XtDEZsMTB4dreGP1Wy4BkCLQFRrj-lqkxG-SLCpvw5f50nLIQvR1keyr15d9-MR50Bv6S7dMgTD-KLzcTPaUaQfa9h3nnQXW_XOs55T_tTpFFLwJGNCZ_WjMQIihvGdOJN6gFrrm_L4ve9lLBfY1H9dhkxah28Guqd9ub9vrGhzQrEWtFD2cUmouDMZ_b9HTOmYQVWW2btWzE-NvPPCkWRRoa67GClw" + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys01717479170?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6c8327a4-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "178" + }, + "ResponseBody": { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "deletedDate": 1656356434, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys01717479170/339f2d7af28502e7bee75323fe5cd01d", + "kty": "RSA-HSM", + "n": "iZS5AKs13yP5WKqvcUtes7gn7aK8kg9qDPmNej1ik_RYZXvbkRXDZNaF3P4R9E6SD1UBJwjr1YFeljRJbGQseJUvWq4rPBMSwc8w7rpYxSixf4wtaV1O9B0XtDEZsMTB4dreGP1Wy4BkCLQFRrj-lqkxG-SLCpvw5f50nLIQvR1keyr15d9-MR50Bv6S7dMgTD-KLzcTPaUaQfa9h3nnQXW_XOs55T_tTpFFLwJGNCZ_WjMQIihvGdOJN6gFrrm_L4ve9lLBfY1H9dhkxah28Guqd9ub9vrGhzQrEWtFD2cUmouDMZ_b9HTOmYQVWW2btWzE-NvPPCkWRRoa67GClw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys01717479170", + "scheduledPurgeDate": 1656961234, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys11717479170/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "760", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6cb27478-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "273" + }, + "ResponseBody": { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys11717479170/d0513b2728464b69812783f55b6c43f5", + "kty": "RSA-HSM", + "n": "zA1Wi8CKGY4YWS6IJHHO0ULZGY9ILXs2-4iJ7p91flVYefHoiaORutJ3-ep3zW_e78q1VVhO-TYJP7AcYcFdGuR9r4GXXXGhkwhoXwMDjQlzOPfv8wQcaGhl04t2mwAFr-HXTszuP2ickiFNdqQsYOEKh7OA1OPVb6Xj1HyzaEQlEDu8IDXmrX_EyAhuhjZFWbaLuwXBB0AcOvMGAQ2-JgqfSWXdCFMQ39nCUAp-8OOPEq8jR6x556OpHau6ZjyghMXeaF9QOHQUFmh3LrjZi-yRc7fv4npV9eti3qxPmxaZ5KI-LNhQ_jtBriORxgzaIXRYa8MlId9SVcABa3AcbQ" + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys11717479170?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6cf10c6a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "163" + }, + "ResponseBody": { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "deletedDate": 1656356435, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys11717479170/d0513b2728464b69812783f55b6c43f5", + "kty": "RSA-HSM", + "n": "zA1Wi8CKGY4YWS6IJHHO0ULZGY9ILXs2-4iJ7p91flVYefHoiaORutJ3-ep3zW_e78q1VVhO-TYJP7AcYcFdGuR9r4GXXXGhkwhoXwMDjQlzOPfv8wQcaGhl04t2mwAFr-HXTszuP2ickiFNdqQsYOEKh7OA1OPVb6Xj1HyzaEQlEDu8IDXmrX_EyAhuhjZFWbaLuwXBB0AcOvMGAQ2-JgqfSWXdCFMQ39nCUAp-8OOPEq8jR6x556OpHau6ZjyghMXeaF9QOHQUFmh3LrjZi-yRc7fv4npV9eti3qxPmxaZ5KI-LNhQ_jtBriORxgzaIXRYa8MlId9SVcABa3AcbQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys11717479170", + "scheduledPurgeDate": 1656961235, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys21717479170/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "760", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6d1e931a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "279" + }, + "ResponseBody": { + "attributes": { + "created": 1656356435, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356435 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys21717479170/6d7c0ff4dc29096a189ff2ec1a8d5c5e", + "kty": "RSA-HSM", + "n": "uMGyFQgPUwQTA7ijIOAJ_B1BJRrQys8-F9CfceUEf2BRcyXPxVpPVOtHDw9P9ZiktJ1s_pjaRjqiKo-PlVSwcmsRovUSN84J2DFQXIIdmM-oW0A023oopHHIpWf88CUVTLon96PwOrWKT75yUAvi82zmIx9y1erJC7F-uLExe1b9Hgim7uVZWz6IBLNQbXtu8gtK5D_1SKIMNl5DkP4oSHWwveoTEh7_FM_KU0PtShZIkOk048qAJHntr1U7DWFj-IlODwklA2VcveP6wxqiS97U4mvGaQgSdBC3fqkpdSn1n3hmK_9aKSUsw1r8U_xehaOUa_Qvt5__osGP5Moxlw" + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys21717479170?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6d5e9b2c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "169" + }, + "ResponseBody": { + "attributes": { + "created": 1656356435, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356435 + }, + "deletedDate": 1656356436, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys21717479170/6d7c0ff4dc29096a189ff2ec1a8d5c5e", + "kty": "RSA-HSM", + "n": "uMGyFQgPUwQTA7ijIOAJ_B1BJRrQys8-F9CfceUEf2BRcyXPxVpPVOtHDw9P9ZiktJ1s_pjaRjqiKo-PlVSwcmsRovUSN84J2DFQXIIdmM-oW0A023oopHHIpWf88CUVTLon96PwOrWKT75yUAvi82zmIx9y1erJC7F-uLExe1b9Hgim7uVZWz6IBLNQbXtu8gtK5D_1SKIMNl5DkP4oSHWwveoTEh7_FM_KU0PtShZIkOk048qAJHntr1U7DWFj-IlODwklA2VcveP6wxqiS97U4mvGaQgSdBC3fqkpdSn1n3hmK_9aKSUsw1r8U_xehaOUa_Qvt5__osGP5Moxlw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys21717479170", + "scheduledPurgeDate": 1656961236, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys31717479170/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "45", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA", + "tags": { + "count-this-key": "yes" + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "760", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6d8f7cd8-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "288" + }, + "ResponseBody": { + "attributes": { + "created": 1656356436, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356436 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys31717479170/f96e0e3d17ca4774bf05c4755e79532d", + "kty": "RSA-HSM", + "n": "sYRL31BDjJLUFMPNPbiPrOMChCRtbw9TfExQ-tjGPd3HmFFi8E3LLsc9qRPf7Mtv_eP_ZhSaROQskqiPTK1CrpsKS0BjEaBmmT4X5ca6ft0xzJMbyeCEV4WZQNDPs7zqI1F69X535MzD08B_CH6QkpQXJQc7MmjLfDfKEslzDMa4QCFIWvmnIxJaIwdbZCPJt3Gqzsc18fCg8o7ZInvS14FrRM0xEaGpKRfQDNN76jhxg6peXvTsD5maMNAIWn90Oxc9rSWS65OZvpoTHyS_Hyu1_RMjHygFM0EmagIol4BHS80pwIOMG0mAVACpwmgFKJyOuv41KQ9P-2lbMQ8SCQ" + }, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listdeletedkeys31717479170?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6dcb59b0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "161" + }, + "ResponseBody": { + "attributes": { + "created": 1656356436, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356436 + }, + "deletedDate": 1656356436, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys31717479170/f96e0e3d17ca4774bf05c4755e79532d", + "kty": "RSA-HSM", + "n": "sYRL31BDjJLUFMPNPbiPrOMChCRtbw9TfExQ-tjGPd3HmFFi8E3LLsc9qRPf7Mtv_eP_ZhSaROQskqiPTK1CrpsKS0BjEaBmmT4X5ca6ft0xzJMbyeCEV4WZQNDPs7zqI1F69X535MzD08B_CH6QkpQXJQc7MmjLfDfKEslzDMa4QCFIWvmnIxJaIwdbZCPJt3Gqzsc18fCg8o7ZInvS14FrRM0xEaGpKRfQDNN76jhxg6peXvTsD5maMNAIWn90Oxc9rSWS65OZvpoTHyS_Hyu1_RMjHygFM0EmagIol4BHS80pwIOMG0mAVACpwmgFKJyOuv41KQ9P-2lbMQ8SCQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys31717479170", + "scheduledPurgeDate": 1656961236, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys/listdeletedkeys01717479170?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6dec4fe4-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "33" + }, + "ResponseBody": { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "deletedDate": 1656356434, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "encrypt", + "decrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys01717479170/339f2d7af28502e7bee75323fe5cd01d", + "kty": "RSA-HSM", + "n": "iZS5AKs13yP5WKqvcUtes7gn7aK8kg9qDPmNej1ik_RYZXvbkRXDZNaF3P4R9E6SD1UBJwjr1YFeljRJbGQseJUvWq4rPBMSwc8w7rpYxSixf4wtaV1O9B0XtDEZsMTB4dreGP1Wy4BkCLQFRrj-lqkxG-SLCpvw5f50nLIQvR1keyr15d9-MR50Bv6S7dMgTD-KLzcTPaUaQfa9h3nnQXW_XOs55T_tTpFFLwJGNCZ_WjMQIihvGdOJN6gFrrm_L4ve9lLBfY1H9dhkxah28Guqd9ub9vrGhzQrEWtFD2cUmouDMZ_b9HTOmYQVWW2btWzE-NvPPCkWRRoa67GClw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys01717479170", + "scheduledPurgeDate": 1656961234, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys/listdeletedkeys11717479170?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6df9c4d0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "33" + }, + "ResponseBody": { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "deletedDate": 1656356435, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "encrypt", + "decrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys11717479170/d0513b2728464b69812783f55b6c43f5", + "kty": "RSA-HSM", + "n": "zA1Wi8CKGY4YWS6IJHHO0ULZGY9ILXs2-4iJ7p91flVYefHoiaORutJ3-ep3zW_e78q1VVhO-TYJP7AcYcFdGuR9r4GXXXGhkwhoXwMDjQlzOPfv8wQcaGhl04t2mwAFr-HXTszuP2ickiFNdqQsYOEKh7OA1OPVb6Xj1HyzaEQlEDu8IDXmrX_EyAhuhjZFWbaLuwXBB0AcOvMGAQ2-JgqfSWXdCFMQ39nCUAp-8OOPEq8jR6x556OpHau6ZjyghMXeaF9QOHQUFmh3LrjZi-yRc7fv4npV9eti3qxPmxaZ5KI-LNhQ_jtBriORxgzaIXRYa8MlId9SVcABa3AcbQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys11717479170", + "scheduledPurgeDate": 1656961235, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys/listdeletedkeys21717479170?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e077756-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "26" + }, + "ResponseBody": { + "attributes": { + "created": 1656356435, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356435 + }, + "deletedDate": 1656356436, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "encrypt", + "decrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys21717479170/6d7c0ff4dc29096a189ff2ec1a8d5c5e", + "kty": "RSA-HSM", + "n": "uMGyFQgPUwQTA7ijIOAJ_B1BJRrQys8-F9CfceUEf2BRcyXPxVpPVOtHDw9P9ZiktJ1s_pjaRjqiKo-PlVSwcmsRovUSN84J2DFQXIIdmM-oW0A023oopHHIpWf88CUVTLon96PwOrWKT75yUAvi82zmIx9y1erJC7F-uLExe1b9Hgim7uVZWz6IBLNQbXtu8gtK5D_1SKIMNl5DkP4oSHWwveoTEh7_FM_KU0PtShZIkOk048qAJHntr1U7DWFj-IlODwklA2VcveP6wxqiS97U4mvGaQgSdBC3fqkpdSn1n3hmK_9aKSUsw1r8U_xehaOUa_Qvt5__osGP5Moxlw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys21717479170", + "scheduledPurgeDate": 1656961236, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys/listdeletedkeys31717479170?api-version=7.3", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "910", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e13e6e4-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "40" + }, + "ResponseBody": { + "attributes": { + "created": 1656356436, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356436 + }, + "deletedDate": 1656356436, + "key": { + "e": "AQAB", + "key_ops": [ + "verify", + "sign", + "unwrapKey", + "encrypt", + "decrypt", + "wrapKey" + ], + "kid": "https://fakemhsm/keys/listdeletedkeys31717479170/f96e0e3d17ca4774bf05c4755e79532d", + "kty": "RSA-HSM", + "n": "sYRL31BDjJLUFMPNPbiPrOMChCRtbw9TfExQ-tjGPd3HmFFi8E3LLsc9qRPf7Mtv_eP_ZhSaROQskqiPTK1CrpsKS0BjEaBmmT4X5ca6ft0xzJMbyeCEV4WZQNDPs7zqI1F69X535MzD08B_CH6QkpQXJQc7MmjLfDfKEslzDMa4QCFIWvmnIxJaIwdbZCPJt3Gqzsc18fCg8o7ZInvS14FrRM0xEaGpKRfQDNN76jhxg6peXvTsD5maMNAIWn90Oxc9rSWS65OZvpoTHyS_Hyu1_RMjHygFM0EmagIol4BHS80pwIOMG0mAVACpwmgFKJyOuv41KQ9P-2lbMQ8SCQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys31717479170", + "scheduledPurgeDate": 1656961236, + "tags": { + "count-this-key": "yes" + } + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys?api-version=7.3\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "577", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e228cee-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "29" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlYQUFBQUFBQUFBQT09I1JUOjEjVFJDOjEjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356387, + "enabled": true, + "exportable": true, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356387 + }, + "deletedDate": 1656356388, + "kid": "https://fakemhsm/keys/testbackuprestore2485414557", + "recoveryId": "https://fakemhsm/deletedkeys/testbackuprestore2485414557", + "scheduledPurgeDate": 1656961188 + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlYQUFBQUFBQUFBQT09I1JUOjEjVFJDOjEjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "562", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e3021f6-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "39" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFliQUFBQUFBQUFBQT09I1JUOjIjVFJDOjIjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356416, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356416 + }, + "deletedDate": 1656356417, + "kid": "https://fakemhsm/keys/testimport369061497", + "recoveryId": "https://fakemhsm/deletedkeys/testimport369061497", + "scheduledPurgeDate": 1656961217 + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFliQUFBQUFBQUFBQT09I1JUOjIjVFJDOjIjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "608", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e3e650e-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "34" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlkQUFBQUFBQUFBQT09I1JUOjMjVFJDOjMjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "deletedDate": 1656356434, + "kid": "https://fakemhsm/keys/listdeletedkeys01717479170", + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys01717479170", + "scheduledPurgeDate": 1656961234, + "tags": { + "count-this-key": "yes" + } + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlkQUFBQUFBQUFBQT09I1JUOjMjVFJDOjMjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "608", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e4cf5b0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "31" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlmQUFBQUFBQUFBQT09I1JUOjQjVFJDOjQjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356434, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356434 + }, + "deletedDate": 1656356435, + "kid": "https://fakemhsm/keys/listdeletedkeys11717479170", + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys11717479170", + "scheduledPurgeDate": 1656961235, + "tags": { + "count-this-key": "yes" + } + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlmQUFBQUFBQUFBQT09I1JUOjQjVFJDOjQjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "608", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e5a6b5a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "28" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFloQUFBQUFBQUFBQT09I1JUOjUjVFJDOjUjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356435, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356435 + }, + "deletedDate": 1656356436, + "kid": "https://fakemhsm/keys/listdeletedkeys21717479170", + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys21717479170", + "scheduledPurgeDate": 1656961236, + "tags": { + "count-this-key": "yes" + } + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/deletedkeys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFloQUFBQUFBQUFBQT09I1JUOjUjVFJDOjUjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "435", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "6e6757ac-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "29" + }, + "ResponseBody": { + "value": [ + { + "attributes": { + "created": 1656356436, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356436 + }, + "deletedDate": 1656356436, + "kid": "https://fakemhsm/keys/listdeletedkeys31717479170", + "recoveryId": "https://fakemhsm/deletedkeys/listdeletedkeys31717479170", + "scheduledPurgeDate": 1656961236, + "tags": { + "count-this-key": "yes" + } + } + ] + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/TestListDeletedKeys_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/TestListDeletedKeys_HSM.json deleted file mode 100644 index eeab17dece48..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/TestListDeletedKeys_HSM.json +++ /dev/null @@ -1,833 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key02135889235/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1e996c7e-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "1" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key02135889235/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "726", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1ed89368-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "209" - }, - "ResponseBody": { - "attributes": { - "created": 1643132099, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132099 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key02135889235/c577b4bdc17a49e9b6b34efd8d9eaad4", - "kty": "RSA-HSM", - "n": "tK8r3GRWudGR9rOwheiQ8uXPilDGFlwIlNLsXUFreutKd_Nxu5YR05lzY51qrubX3T43TtVAXUbkdU_Zr4f7dQnqq2ZIwJRSZYm5SzdgVbMh89pPNAZpKSJ9GmnlErSTvPc0BmyEWQbLOaEBazfd9I2POG4zTIcmpC1NIK5Nk0rcb8LGXZcUssvCYyop7Duypbm1vRK1vJC6VaNZvct2eKAU6g3tfNaa_X7yhRUIskgPsrlQJC8kfHS6UieiNx4AiEkTsqp4AAs2myGwWjtDxng6Sjm2izumKDKrfl9-d1wS5vhd50AEj_Y0rpg__nylm_r0YuCpcjTWXXzwnfhrhQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key02135889235?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1f04145c-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "138" - }, - "ResponseBody": { - "attributes": { - "created": 1643132099, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132099 - }, - "deletedDate": 1643132100, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key02135889235/c577b4bdc17a49e9b6b34efd8d9eaad4", - "kty": "RSA-HSM", - "n": "tK8r3GRWudGR9rOwheiQ8uXPilDGFlwIlNLsXUFreutKd_Nxu5YR05lzY51qrubX3T43TtVAXUbkdU_Zr4f7dQnqq2ZIwJRSZYm5SzdgVbMh89pPNAZpKSJ9GmnlErSTvPc0BmyEWQbLOaEBazfd9I2POG4zTIcmpC1NIK5Nk0rcb8LGXZcUssvCYyop7Duypbm1vRK1vJC6VaNZvct2eKAU6g3tfNaa_X7yhRUIskgPsrlQJC8kfHS6UieiNx4AiEkTsqp4AAs2myGwWjtDxng6Sjm2izumKDKrfl9-d1wS5vhd50AEj_Y0rpg__nylm_r0YuCpcjTWXXzwnfhrhQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key02135889235", - "scheduledPurgeDate": 1643736900 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/list-del-key02135889235?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1f263e92-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "32" - }, - "ResponseBody": { - "attributes": { - "created": 1643132099, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132099 - }, - "deletedDate": 1643132100, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key02135889235/c577b4bdc17a49e9b6b34efd8d9eaad4", - "kty": "RSA-HSM", - "n": "tK8r3GRWudGR9rOwheiQ8uXPilDGFlwIlNLsXUFreutKd_Nxu5YR05lzY51qrubX3T43TtVAXUbkdU_Zr4f7dQnqq2ZIwJRSZYm5SzdgVbMh89pPNAZpKSJ9GmnlErSTvPc0BmyEWQbLOaEBazfd9I2POG4zTIcmpC1NIK5Nk0rcb8LGXZcUssvCYyop7Duypbm1vRK1vJC6VaNZvct2eKAU6g3tfNaa_X7yhRUIskgPsrlQJC8kfHS6UieiNx4AiEkTsqp4AAs2myGwWjtDxng6Sjm2izumKDKrfl9-d1wS5vhd50AEj_Y0rpg__nylm_r0YuCpcjTWXXzwnfhrhQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key02135889235", - "scheduledPurgeDate": 1643736900 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/list-del-key02135889235?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1f357fc4-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "34" - }, - "ResponseBody": { - "attributes": { - "created": 1643132099, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132099 - }, - "deletedDate": 1643132100, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key02135889235/c577b4bdc17a49e9b6b34efd8d9eaad4", - "kty": "RSA-HSM", - "n": "tK8r3GRWudGR9rOwheiQ8uXPilDGFlwIlNLsXUFreutKd_Nxu5YR05lzY51qrubX3T43TtVAXUbkdU_Zr4f7dQnqq2ZIwJRSZYm5SzdgVbMh89pPNAZpKSJ9GmnlErSTvPc0BmyEWQbLOaEBazfd9I2POG4zTIcmpC1NIK5Nk0rcb8LGXZcUssvCYyop7Duypbm1vRK1vJC6VaNZvct2eKAU6g3tfNaa_X7yhRUIskgPsrlQJC8kfHS6UieiNx4AiEkTsqp4AAs2myGwWjtDxng6Sjm2izumKDKrfl9-d1wS5vhd50AEj_Y0rpg__nylm_r0YuCpcjTWXXzwnfhrhQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key02135889235", - "scheduledPurgeDate": 1643736900 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key12135889235/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "726", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1f4584e6-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "249" - }, - "ResponseBody": { - "attributes": { - "created": 1643132100, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132100 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key12135889235/9feb315f116d44a689659e909fff336c", - "kty": "RSA-HSM", - "n": "ji-O9SUbMCZc2rD3pzTrjyjw_tuISceEQ6gmxWyjK4khCroT5-SFSmvkc8LtjGqLysP4-29i1H7KPewSTh1tYN_URDpRUMqny1BK19knduFepWOrgpp9efOBtEex9iq4YFD9tstFwmcylTWCAhQ2BZdQrB-PGYeLXhu7mJzHmF4v3e9Eku81FDOQsI60eV_LI8MtSA4ad-4RxFQ30TGSGI-IvEe75L8b5ReDbWA5gTiJ0JEzvCPsO5MA1FdNzve7f7yIe3zykQhAzc7YlJpb3sQhYN7JlEfxHhpR0zr-mdDhgYNyybx9PWaHHFNeb-ErcAdTaFnJx9rJ9yTL58g-zQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key12135889235?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1f765c6a-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "143" - }, - "ResponseBody": { - "attributes": { - "created": 1643132100, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132100 - }, - "deletedDate": 1643132101, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key12135889235/9feb315f116d44a689659e909fff336c", - "kty": "RSA-HSM", - "n": "ji-O9SUbMCZc2rD3pzTrjyjw_tuISceEQ6gmxWyjK4khCroT5-SFSmvkc8LtjGqLysP4-29i1H7KPewSTh1tYN_URDpRUMqny1BK19knduFepWOrgpp9efOBtEex9iq4YFD9tstFwmcylTWCAhQ2BZdQrB-PGYeLXhu7mJzHmF4v3e9Eku81FDOQsI60eV_LI8MtSA4ad-4RxFQ30TGSGI-IvEe75L8b5ReDbWA5gTiJ0JEzvCPsO5MA1FdNzve7f7yIe3zykQhAzc7YlJpb3sQhYN7JlEfxHhpR0zr-mdDhgYNyybx9PWaHHFNeb-ErcAdTaFnJx9rJ9yTL58g-zQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key12135889235", - "scheduledPurgeDate": 1643736901 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/list-del-key12135889235?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1f96e4a8-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "30" - }, - "ResponseBody": { - "attributes": { - "created": 1643132100, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132100 - }, - "deletedDate": 1643132101, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key12135889235/9feb315f116d44a689659e909fff336c", - "kty": "RSA-HSM", - "n": "ji-O9SUbMCZc2rD3pzTrjyjw_tuISceEQ6gmxWyjK4khCroT5-SFSmvkc8LtjGqLysP4-29i1H7KPewSTh1tYN_URDpRUMqny1BK19knduFepWOrgpp9efOBtEex9iq4YFD9tstFwmcylTWCAhQ2BZdQrB-PGYeLXhu7mJzHmF4v3e9Eku81FDOQsI60eV_LI8MtSA4ad-4RxFQ30TGSGI-IvEe75L8b5ReDbWA5gTiJ0JEzvCPsO5MA1FdNzve7f7yIe3zykQhAzc7YlJpb3sQhYN7JlEfxHhpR0zr-mdDhgYNyybx9PWaHHFNeb-ErcAdTaFnJx9rJ9yTL58g-zQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key12135889235", - "scheduledPurgeDate": 1643736901 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/list-del-key12135889235?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1fa60f64-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "30" - }, - "ResponseBody": { - "attributes": { - "created": 1643132100, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132100 - }, - "deletedDate": 1643132101, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key12135889235/9feb315f116d44a689659e909fff336c", - "kty": "RSA-HSM", - "n": "ji-O9SUbMCZc2rD3pzTrjyjw_tuISceEQ6gmxWyjK4khCroT5-SFSmvkc8LtjGqLysP4-29i1H7KPewSTh1tYN_URDpRUMqny1BK19knduFepWOrgpp9efOBtEex9iq4YFD9tstFwmcylTWCAhQ2BZdQrB-PGYeLXhu7mJzHmF4v3e9Eku81FDOQsI60eV_LI8MtSA4ad-4RxFQ30TGSGI-IvEe75L8b5ReDbWA5gTiJ0JEzvCPsO5MA1FdNzve7f7yIe3zykQhAzc7YlJpb3sQhYN7JlEfxHhpR0zr-mdDhgYNyybx9PWaHHFNeb-ErcAdTaFnJx9rJ9yTL58g-zQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key12135889235", - "scheduledPurgeDate": 1643736901 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key22135889235/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "726", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1fb67264-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "208" - }, - "ResponseBody": { - "attributes": { - "created": 1643132101, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132101 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key22135889235/3ca96f5000220b05061ee3daba62d1e6", - "kty": "RSA-HSM", - "n": "jLKJ3PKWgNgxD8iDmWnzfBQkXWJlJQHig8ZqS92CeQg_wWgHBJKJgExPnYr2uvZyvgsJwD-GeFCtFqmKWtIVT2lvA-zB7B0-4Wwjdn28Vqk9ubNxQenvfwwnjQdKM2RK71MMwvsCG6NYxlxLFAc3rI0RdnqVq824QXvvZoDROye0W16FxspUpUDe5LaF4zOuQdKLDB2LHdGQLk87FhyH0xVzdue57d8Tonypl7_Zm-XayWiaLxALYHfvx8mihF08pjIcwrmK85hSTz6YJL_R5STL9rVQdYBWtpHxkgoJXO0Lk18JbeeEUMcPEC0C1wBFZmL3kJrx7EB9COl8O1dSrQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key22135889235?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "1fe18c7e-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "146" - }, - "ResponseBody": { - "attributes": { - "created": 1643132101, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132101 - }, - "deletedDate": 1643132101, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key22135889235/3ca96f5000220b05061ee3daba62d1e6", - "kty": "RSA-HSM", - "n": "jLKJ3PKWgNgxD8iDmWnzfBQkXWJlJQHig8ZqS92CeQg_wWgHBJKJgExPnYr2uvZyvgsJwD-GeFCtFqmKWtIVT2lvA-zB7B0-4Wwjdn28Vqk9ubNxQenvfwwnjQdKM2RK71MMwvsCG6NYxlxLFAc3rI0RdnqVq824QXvvZoDROye0W16FxspUpUDe5LaF4zOuQdKLDB2LHdGQLk87FhyH0xVzdue57d8Tonypl7_Zm-XayWiaLxALYHfvx8mihF08pjIcwrmK85hSTz6YJL_R5STL9rVQdYBWtpHxkgoJXO0Lk18JbeeEUMcPEC0C1wBFZmL3kJrx7EB9COl8O1dSrQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key22135889235", - "scheduledPurgeDate": 1643736901 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/list-del-key22135889235?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "20026da4-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "39" - }, - "ResponseBody": { - "attributes": { - "created": 1643132101, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132101 - }, - "deletedDate": 1643132101, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key22135889235/3ca96f5000220b05061ee3daba62d1e6", - "kty": "RSA-HSM", - "n": "jLKJ3PKWgNgxD8iDmWnzfBQkXWJlJQHig8ZqS92CeQg_wWgHBJKJgExPnYr2uvZyvgsJwD-GeFCtFqmKWtIVT2lvA-zB7B0-4Wwjdn28Vqk9ubNxQenvfwwnjQdKM2RK71MMwvsCG6NYxlxLFAc3rI0RdnqVq824QXvvZoDROye0W16FxspUpUDe5LaF4zOuQdKLDB2LHdGQLk87FhyH0xVzdue57d8Tonypl7_Zm-XayWiaLxALYHfvx8mihF08pjIcwrmK85hSTz6YJL_R5STL9rVQdYBWtpHxkgoJXO0Lk18JbeeEUMcPEC0C1wBFZmL3kJrx7EB9COl8O1dSrQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key22135889235", - "scheduledPurgeDate": 1643736901 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/list-del-key22135889235?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "874", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "2012ed0a-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "28" - }, - "ResponseBody": { - "attributes": { - "created": 1643132101, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132101 - }, - "deletedDate": 1643132101, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key22135889235/3ca96f5000220b05061ee3daba62d1e6", - "kty": "RSA-HSM", - "n": "jLKJ3PKWgNgxD8iDmWnzfBQkXWJlJQHig8ZqS92CeQg_wWgHBJKJgExPnYr2uvZyvgsJwD-GeFCtFqmKWtIVT2lvA-zB7B0-4Wwjdn28Vqk9ubNxQenvfwwnjQdKM2RK71MMwvsCG6NYxlxLFAc3rI0RdnqVq824QXvvZoDROye0W16FxspUpUDe5LaF4zOuQdKLDB2LHdGQLk87FhyH0xVzdue57d8Tonypl7_Zm-XayWiaLxALYHfvx8mihF08pjIcwrmK85hSTz6YJL_R5STL9rVQdYBWtpHxkgoJXO0Lk18JbeeEUMcPEC0C1wBFZmL3kJrx7EB9COl8O1dSrQ" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key22135889235", - "scheduledPurgeDate": 1643736901 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1175", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "2021b7e0-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "32" - }, - "ResponseBody": { - "value": [ - { - "attributes": { - "created": 1643132099, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132099 - }, - "deletedDate": 1643132100, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key02135889235", - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key02135889235", - "scheduledPurgeDate": 1643736900 - }, - { - "attributes": { - "created": 1643132100, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132100 - }, - "deletedDate": 1643132101, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key12135889235", - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key12135889235", - "scheduledPurgeDate": 1643736901 - }, - { - "attributes": { - "created": 1643132101, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132101 - }, - "deletedDate": 1643132101, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/list-del-key22135889235", - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/list-del-key22135889235", - "scheduledPurgeDate": 1643736901 - } - ] - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key22135889235?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "180", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "20310c2c-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "18" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/keys/list-del-key22135889235 (Activity ID: 20310c2c-7e05-11ec-a044-000d3a731e50)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key12135889235?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "180", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "203e3c1c-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "17" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/keys/list-del-key12135889235 (Activity ID: 203e3c1c-7e05-11ec-a044-000d3a731e50)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/list-del-key02135889235?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "180", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "204b9628-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "21" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://rosebudhsm.managedhsm.azure.net/keys/list-del-key02135889235 (Activity ID: 204b9628-7e05-11ec-a044-000d3a731e50)" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/TestListDeletedKeys_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/TestListDeletedKeys_NON-HSM.json deleted file mode 100644 index 56c7e5978d81..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestListDeletedKeys/TestListDeletedKeys_NON-HSM.json +++ /dev/null @@ -1,814 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:05 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "406f850f-5821-43b5-a429-ed0dbfc8fb48" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "696", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=2658;rd_age=5852;brd_age=15686;ra_notif_age=351;da_notif_age=3183;dec_lev=3;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b6b5ba73-7850-4f8d-9402-e8402962edd5" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297/9c41fffdcf294b089b4dd879d4c21386", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "_Cwm2UbjJjTx4LTh1a-JepP1Kxjb6EU-TbObvHpLRUmEcwGFkXAp5d19djxEYBUQ4jKWTYs5Agg-FSzrZZB9lga4IW6C6Jqnl3EIbraq0nOWRNiwoTnsEdNoFPqF2y_Krqvjg6I8VdnBZ8GbVaWUF6ATEAO2TLuexHnfoiih9PCLU35Mrov2GZvWArk1rOFFHPJMITXxfDgudzUZyKPkT-kEnQjPd3kxe7UVEaSxWXCgcLnJ2lMSAOAcnv2E8zC1eMVCZrWSwhh4_tfb7sWpx0CKQSKQb-PoXFsl8sFPRovB7My8FPjOed1L1VCA2ncUV0FZMpYg60-VeUrZmf0iAQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820306, - "updated": 1652820306, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "837", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=2658;rd_age=5852;brd_age=15687;ra_notif_age=351;da_notif_age=3183;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c5274294-dab8-461e-98b7-06e45d94ddca" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key0762797297", - "deletedDate": 1652820307, - "scheduledPurgeDate": 1653425107, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297/9c41fffdcf294b089b4dd879d4c21386", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "_Cwm2UbjJjTx4LTh1a-JepP1Kxjb6EU-TbObvHpLRUmEcwGFkXAp5d19djxEYBUQ4jKWTYs5Agg-FSzrZZB9lga4IW6C6Jqnl3EIbraq0nOWRNiwoTnsEdNoFPqF2y_Krqvjg6I8VdnBZ8GbVaWUF6ATEAO2TLuexHnfoiih9PCLU35Mrov2GZvWArk1rOFFHPJMITXxfDgudzUZyKPkT-kEnQjPd3kxe7UVEaSxWXCgcLnJ2lMSAOAcnv2E8zC1eMVCZrWSwhh4_tfb7sWpx0CKQSKQb-PoXFsl8sFPRovB7My8FPjOed1L1VCA2ncUV0FZMpYg60-VeUrZmf0iAQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820306, - "updated": 1652820306, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key0762797297?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "90", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=1;da_age=2658;rd_age=5852;brd_age=15687;ra_notif_age=352;da_notif_age=3183;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "97d37b0d-ad0c-4a25-bb07-c73dcba7cfae" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: list-del-key0762797297" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key0762797297?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "837", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:07 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=2;da_age=2659;rd_age=5853;brd_age=15688;ra_notif_age=353;da_notif_age=3185;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "656fd19f-4b3a-421a-bd5d-c355ef95d7cf" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key0762797297", - "deletedDate": 1652820307, - "scheduledPurgeDate": 1653425107, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297/9c41fffdcf294b089b4dd879d4c21386", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "_Cwm2UbjJjTx4LTh1a-JepP1Kxjb6EU-TbObvHpLRUmEcwGFkXAp5d19djxEYBUQ4jKWTYs5Agg-FSzrZZB9lga4IW6C6Jqnl3EIbraq0nOWRNiwoTnsEdNoFPqF2y_Krqvjg6I8VdnBZ8GbVaWUF6ATEAO2TLuexHnfoiih9PCLU35Mrov2GZvWArk1rOFFHPJMITXxfDgudzUZyKPkT-kEnQjPd3kxe7UVEaSxWXCgcLnJ2lMSAOAcnv2E8zC1eMVCZrWSwhh4_tfb7sWpx0CKQSKQb-PoXFsl8sFPRovB7My8FPjOed1L1VCA2ncUV0FZMpYg60-VeUrZmf0iAQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820306, - "updated": 1652820306, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key1762797297/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "696", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=2;da_age=2659;rd_age=5854;brd_age=15688;ra_notif_age=353;da_notif_age=3185;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "43c0dafc-63ac-42ad-961f-cb2904e93440" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key1762797297/5477ac612069473585b47b3284a6ecef", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "sLeClyKoz9oipSauuB0lCEdxdC6U93VvkpCsu8nidwNBEeWGAIFGAs1hTmn3dbFNLcFJnNpx2i8Hvc6dzVmyxzGoeHqD1UFdNwCuK_FX9tIXKW2zJTb8aC1MrvXOrC0qRNSJlrj4Og9gz3leoi-TLcXVKIxzjvqa5AKf4tH-gP_hRm2elFY76FLeszK0ctf7lZzeyAOe_G09u8RMLzTdXZK3ZQPdaIG0s6RIIlpOsDbU4rxhLLlzLCjpuuN-PFj4FjNltskgGgDXtO6KdQBMvxcvXEBjv2ooYjA8F6T-zBDoJVzkkalco2l4h_dMKei5FEi1spzAeFJYaDZhJ8ASoQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820308, - "updated": 1652820308, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key1762797297?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "837", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=2660;rd_age=5854;brd_age=15688;ra_notif_age=353;da_notif_age=3185;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "70fea9bc-d073-49ba-ba39-d78a9ec08a65" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key1762797297", - "deletedDate": 1652820308, - "scheduledPurgeDate": 1653425108, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key1762797297/5477ac612069473585b47b3284a6ecef", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "sLeClyKoz9oipSauuB0lCEdxdC6U93VvkpCsu8nidwNBEeWGAIFGAs1hTmn3dbFNLcFJnNpx2i8Hvc6dzVmyxzGoeHqD1UFdNwCuK_FX9tIXKW2zJTb8aC1MrvXOrC0qRNSJlrj4Og9gz3leoi-TLcXVKIxzjvqa5AKf4tH-gP_hRm2elFY76FLeszK0ctf7lZzeyAOe_G09u8RMLzTdXZK3ZQPdaIG0s6RIIlpOsDbU4rxhLLlzLCjpuuN-PFj4FjNltskgGgDXtO6KdQBMvxcvXEBjv2ooYjA8F6T-zBDoJVzkkalco2l4h_dMKei5FEi1spzAeFJYaDZhJ8ASoQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820308, - "updated": 1652820308, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key1762797297?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "90", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:08 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=2660;rd_age=5854;brd_age=15689;ra_notif_age=353;da_notif_age=3185;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a195041a-70d6-4d00-ac37-95245eb2f46f" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: list-del-key1762797297" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key1762797297?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "837", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=2661;rd_age=5855;brd_age=15690;ra_notif_age=354;da_notif_age=3186;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ba9b9614-10bf-4dad-8e16-788d9086a5f6" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key1762797297", - "deletedDate": 1652820308, - "scheduledPurgeDate": 1653425108, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key1762797297/5477ac612069473585b47b3284a6ecef", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "sLeClyKoz9oipSauuB0lCEdxdC6U93VvkpCsu8nidwNBEeWGAIFGAs1hTmn3dbFNLcFJnNpx2i8Hvc6dzVmyxzGoeHqD1UFdNwCuK_FX9tIXKW2zJTb8aC1MrvXOrC0qRNSJlrj4Og9gz3leoi-TLcXVKIxzjvqa5AKf4tH-gP_hRm2elFY76FLeszK0ctf7lZzeyAOe_G09u8RMLzTdXZK3ZQPdaIG0s6RIIlpOsDbU4rxhLLlzLCjpuuN-PFj4FjNltskgGgDXtO6KdQBMvxcvXEBjv2ooYjA8F6T-zBDoJVzkkalco2l4h_dMKei5FEi1spzAeFJYaDZhJ8ASoQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820308, - "updated": 1652820308, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key2762797297/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "696", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=2661;rd_age=5855;brd_age=15690;ra_notif_age=354;da_notif_age=3186;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c54eb472-0827-46cd-875d-da702b61aaa2" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key2762797297/bff55776f7ba4048b4deb478637bfdf7", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "yWBYQFYY8JIw3dwK17CWzXRKO8ZQ44gg9aHqn7dFc9QBF_kR_AeqbQVcm6_-VFg-dl8TDK31n2VS1lfKJzPp_qyNDnlb3G7AJTQJCE3L5pfEH7HZNt84UyRyeFzOJNbHoP5q2PMmz50xbMfmQuUl9JnLcuHs5piGKc5NGZHVx0plLb2CgNyIlf_ihlDDJgyKbB-5Me39bhZQ02IxiGvXiyzUqvwCjWMfWh_9zB-DQdO5B3XwdS8ILEUU7j0R4IVNOI7JiMYX-T03XN3lulwcmoHb87uLhNEZyKFAqpxwgvdXvcN0T_0CFspQkRQB7et-74HUaGtGR9Qq70cOJeDZ9Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820310, - "updated": 1652820310, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key2762797297?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "837", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=2661;rd_age=5855;brd_age=15690;ra_notif_age=355;da_notif_age=3186;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3bd27ded-dc0f-4a2c-a881-31057dc5790f" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key2762797297", - "deletedDate": 1652820310, - "scheduledPurgeDate": 1653425110, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key2762797297/bff55776f7ba4048b4deb478637bfdf7", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "yWBYQFYY8JIw3dwK17CWzXRKO8ZQ44gg9aHqn7dFc9QBF_kR_AeqbQVcm6_-VFg-dl8TDK31n2VS1lfKJzPp_qyNDnlb3G7AJTQJCE3L5pfEH7HZNt84UyRyeFzOJNbHoP5q2PMmz50xbMfmQuUl9JnLcuHs5piGKc5NGZHVx0plLb2CgNyIlf_ihlDDJgyKbB-5Me39bhZQ02IxiGvXiyzUqvwCjWMfWh_9zB-DQdO5B3XwdS8ILEUU7j0R4IVNOI7JiMYX-T03XN3lulwcmoHb87uLhNEZyKFAqpxwgvdXvcN0T_0CFspQkRQB7et-74HUaGtGR9Qq70cOJeDZ9Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820310, - "updated": 1652820310, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key2762797297?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "90", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:10 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=2661;rd_age=5856;brd_age=15690;ra_notif_age=355;da_notif_age=3187;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "5832b5cc-8ade-46f3-a048-b0d859f1badd" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: list-del-key2762797297" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key2762797297?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "837", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=2663;rd_age=5857;brd_age=15691;ra_notif_age=356;da_notif_age=3188;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e3df8d24-8811-4cc8-9ceb-d4e8f106f34b" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/list-del-key2762797297", - "deletedDate": 1652820310, - "scheduledPurgeDate": 1653425110, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/list-del-key2762797297/bff55776f7ba4048b4deb478637bfdf7", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "yWBYQFYY8JIw3dwK17CWzXRKO8ZQ44gg9aHqn7dFc9QBF_kR_AeqbQVcm6_-VFg-dl8TDK31n2VS1lfKJzPp_qyNDnlb3G7AJTQJCE3L5pfEH7HZNt84UyRyeFzOJNbHoP5q2PMmz50xbMfmQuUl9JnLcuHs5piGKc5NGZHVx0plLb2CgNyIlf_ihlDDJgyKbB-5Me39bhZQ02IxiGvXiyzUqvwCjWMfWh_9zB-DQdO5B3XwdS8ILEUU7j0R4IVNOI7JiMYX-T03XN3lulwcmoHb87uLhNEZyKFAqpxwgvdXvcN0T_0CFspQkRQB7et-74HUaGtGR9Qq70cOJeDZ9Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652820310, - "updated": 1652820310, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1122", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=2663;rd_age=5857;brd_age=15691;ra_notif_age=356;da_notif_age=3188;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "16928bfb-9f66-4aed-8fad-49315d82ccb4" - }, - "ResponseBody": { - "value": [ - { - "recoveryId": "https://jhendrixazkeys.vault.azure.net/deletedkeys/list-del-key0762797297", - "deletedDate": 1652820307, - "scheduledPurgeDate": 1653425107, - "kid": "https://jhendrixazkeys.vault.azure.net/keys/list-del-key0762797297", - "attributes": { - "enabled": true, - "created": 1652820306, - "updated": 1652820306, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "recoveryId": "https://jhendrixazkeys.vault.azure.net/deletedkeys/list-del-key1762797297", - "deletedDate": 1652820308, - "scheduledPurgeDate": 1653425108, - "kid": "https://jhendrixazkeys.vault.azure.net/keys/list-del-key1762797297", - "attributes": { - "enabled": true, - "created": 1652820308, - "updated": 1652820308, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "recoveryId": "https://jhendrixazkeys.vault.azure.net/deletedkeys/list-del-key2762797297", - "deletedDate": 1652820310, - "scheduledPurgeDate": 1653425110, - "kid": "https://jhendrixazkeys.vault.azure.net/keys/list-del-key2762797297", - "attributes": { - "enabled": true, - "created": 1652820310, - "updated": 1652820310, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - ], - "nextLink": null - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key2762797297?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "310", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=2663;rd_age=5857;brd_age=15692;ra_notif_age=356;da_notif_age=3188;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "09770e89-b53c-4d1f-aa91-595342a5ca8a" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) list-del-key2762797297 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key1762797297?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "310", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=2663;rd_age=5857;brd_age=15692;ra_notif_age=356;da_notif_age=3188;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3db6c622-8102-419d-bb39-40bdcf9183c2" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) list-del-key1762797297 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/list-del-key0762797297?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "310", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:45:11 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=2663;rd_age=5857;brd_age=15692;ra_notif_age=356;da_notif_age=3188;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "dec86212-cb43-45c8-9219-01ba6382ee85" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) list-del-key0762797297 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/KV.json new file mode 100644 index 000000000000..85f8105c0bf3 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/KV.json @@ -0,0 +1,481 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:45 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "1db00e70-b41b-44b2-895c-b2e907a630b9" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:45 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=84;da_age=6528;rd_age=6528;brd_age=23015;ra_notif_age=373;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "8452afac-f36c-48d3-8ab5-7ebd5d2e8607" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listkeyversions137292667/d7adc4569c6043548ddb3c4e9df2c87f", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "vXjY-rgzCuiRQClGkEfMwtAlv95Pd8I_qdH6rZhybnHB_xtgfV3jCzcYF4jbB2lXAZWN4ipXUsSQ1e__xYc7GnSO3wpUtNHX54E7zW6thGQJ-7PP8nVadwV_T1jkZFqZsl3DCr97i7I5GgEAkl1KCJYtPoJf0UCCNoFSdnfsq0RiAp5UOqUwWQpA1ZJupD4QkemJmz3lu9yUL8Ea0BNuWCX919A9GvTTiZOMnRZRJYeiVpi8A4nLS5iyV1v4B1P354apXxYe0-ADsptgUtNEBtmTtQwacXL5Wg2Ej3tQa8r_xel3NpX8AvU267EAbbmIAABvizjrmPy286WG49m68Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356446, + "updated": 1656356446, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:46 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=84;da_age=6528;rd_age=6528;brd_age=23016;ra_notif_age=374;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "ab0ee223-40ea-4c33-b098-fa5b15543717" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listkeyversions137292667/dbee8f4ef9e44054af56f778c911ddcd", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "rjhs1nUVozzRRI5NndDk93blsaiS-dF87F8BlCbxl8ehdB18eY6X5rb4fTdeZBgrGQQAWWMlfBYRWXcLZrhDiyL2g3mrQJgx2ckgFQhClZuQdp-sswNV5VQy0XQYgmANhKyqdPXCSOqWEtc96y6aVWt7FstFq8jxmnUkaugHQLr5mOj337OCxO81lwJu6KnjLDJe5Goyquhk0wAkoDEDruapYHqfldq9a3a60VGNlcwp_PUg3SLDETT1WZKZGNxLTi9B1opAqv44hd7Npxmf9yBNDJ6VsAzBmnFWyL3ZYp_0S_JY8YTldzCaIlxfSgZCbSGYHxpb5e2wLysHGJHqzQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356446, + "updated": 1656356446, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:46 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=84;da_age=6529;rd_age=6529;brd_age=23016;ra_notif_age=374;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "8a10abaf-ac1f-4aa8-bffc-f16af71de43d" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listkeyversions137292667/3be3f0b24e92487892d67c2afe931faa", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "yVIGCHRaXbr2ucBBHLvs4uuZYeRdQ0n4sjx4s1D30-cwW-93ggPEATJKQrtOsFWHZ20XcGs_DFQgdCnIfZVWdPYBo7QhWBsMdDNJcFu83AM8Z7_T5fF7k6tS0oGSe0aWPdskqRp9pKdjRyyR6Lg1MS7IVzTC2LGluwV8bITMUVYRLGBlhDv4SYfu3tzCens-yW6183zD9yebi5sf9C9TdmJ5S8l12ZUitAFu2WCQtXAQFV1ooVnQ7dMvmvIC8-SjQYBhjGquVdKqZixkB_h1I3Ri1p-UonI5-LOj5tp-7EsQsSwV6ZDV0zoERimGXisDlxxR9gEXF603EGd7wJynhQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356447, + "updated": 1656356447, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:46 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=84;da_age=6529;rd_age=6529;brd_age=23016;ra_notif_age=374;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f8c61b12-217f-4e2b-8eb4-992ee2629c1d" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/listkeyversions137292667/9f73573fc1ad4dfea3abd95f6b29224f", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "xBbdT9_L9wyyT776OgZbXIiFcRYgLQxdpW_B_ZS1qUVwN1EdC1Ucg7JU-3bz9fIMeuTt7wkM2xiRY-XRbdsbCGGAX_Yo20HLiPx4A1QX5fc_0gzxw-Kn87EmbyWNvFjE6eTA1k6uhmOTiJrRRFHpNFzyDX1Df27H-sXaOGn5By1TgrgmKDQ-XZL_OMUG2CQAgmV16NF7vlmQ7uR7HRJQlpsLRid-9yBdkc39j1-Jz4b1hOCMdRkB3LcVMR9gjB9P-SXZW-bFTWhjiHbJ6c9-HJY5Eox3U6G4gl3NRRzoPuaZZLC8aUHtUYireRbC3HqiHVnV7BaW9hn8wY-VvHUhEQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356447, + "updated": 1656356447, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/versions?api-version=7.3\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "634", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:47 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=85;da_age=6529;rd_age=6529;brd_age=23017;ra_notif_age=375;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "29128c0e-b939-4dd4-bded-5e6414a5c013" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/listkeyversions137292667/3be3f0b24e92487892d67c2afe931faa", + "attributes": { + "enabled": true, + "created": 1656356447, + "updated": 1656356447, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys/listkeyversions137292667/versions?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVmtWU1UwbFBUbE14TXpjeU9USTJOamN2T1VZM016VTNNMFpETVVGRU5FUkdSVUV6UVVKRU9UVkdOa0l5T1RJeU5FWWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/versions?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVmtWU1UwbFBUbE14TXpjeU9USTJOamN2T1VZM016VTNNMFpETVVGRU5FUkdSVUV6UVVKRU9UVkdOa0l5T1RJeU5FWWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "634", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:47 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=85;da_age=6529;rd_age=6529;brd_age=23017;ra_notif_age=375;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "b8afed6f-cdac-4526-ad47-cedaf927ce3c" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/listkeyversions137292667/9f73573fc1ad4dfea3abd95f6b29224f", + "attributes": { + "enabled": true, + "created": 1656356447, + "updated": 1656356447, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys/listkeyversions137292667/versions?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVmtWU1UwbFBUbE14TXpjeU9USTJOamN2UkRkQlJFTTBOVFk1UXpZd05ETTFORGhFUkVJelF6UkZPVVJHTWtNNE4wWWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/versions?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVmtWU1UwbFBUbE14TXpjeU9USTJOamN2UkRkQlJFTTBOVFk1UXpZd05ETTFORGhFUkVJelF6UkZPVVJHTWtNNE4wWWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "634", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:47 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=85;da_age=6530;rd_age=6530;brd_age=23017;ra_notif_age=375;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "bf5daecf-644e-487b-acca-3109700f9e78" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/listkeyversions137292667/d7adc4569c6043548ddb3c4e9df2c87f", + "attributes": { + "enabled": true, + "created": 1656356446, + "updated": 1656356446, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys/listkeyversions137292667/versions?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVmtWU1UwbFBUbE14TXpjeU9USTJOamN2UkVKRlJUaEdORVZHT1VVME5EQTFORUZHTlRaR056YzRRemt4TVVSRVEwUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667/versions?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVmtWU1UwbFBUbE14TXpjeU9USTJOamN2UkVKRlJUaEdORVZHT1VVME5EQTFORUZHTlRaR056YzRRemt4TVVSRVEwUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "276", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:47 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=85;da_age=6530;rd_age=6530;brd_age=23017;ra_notif_age=375;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "3a8de13a-2d04-4b98-bda9-08fdd55645dc" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/listkeyversions137292667/dbee8f4ef9e44054af56f778c911ddcd", + "attributes": { + "enabled": true, + "created": 1656356446, + "updated": 1656356446, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": null + } + }, + { + "RequestUri": "https://fakevault/keys/listkeyversions137292667?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "841", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:48 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=86;da_age=6530;rd_age=6530;brd_age=23017;ra_notif_age=376;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "e8f6d3b7-5f4d-427a-affd-d8d0f1d9ec02" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/listkeyversions137292667", + "deletedDate": 1656356448, + "scheduledPurgeDate": 1656961248, + "key": { + "kid": "https://fakevault/keys/listkeyversions137292667/9f73573fc1ad4dfea3abd95f6b29224f", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "xBbdT9_L9wyyT776OgZbXIiFcRYgLQxdpW_B_ZS1qUVwN1EdC1Ucg7JU-3bz9fIMeuTt7wkM2xiRY-XRbdsbCGGAX_Yo20HLiPx4A1QX5fc_0gzxw-Kn87EmbyWNvFjE6eTA1k6uhmOTiJrRRFHpNFzyDX1Df27H-sXaOGn5By1TgrgmKDQ-XZL_OMUG2CQAgmV16NF7vlmQ7uR7HRJQlpsLRid-9yBdkc39j1-Jz4b1hOCMdRkB3LcVMR9gjB9P-SXZW-bFTWhjiHbJ6c9-HJY5Eox3U6G4gl3NRRzoPuaZZLC8aUHtUYireRbC3HqiHVnV7BaW9hn8wY-VvHUhEQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356447, + "updated": 1656356447, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/MHSM.json new file mode 100644 index 000000000000..3f78aad766d8 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/MHSM.json @@ -0,0 +1,458 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "752c1f8c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "727", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "75357a8c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "264" + }, + "ResponseBody": { + "attributes": { + "created": 1656356449, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356449 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/listkeyversions3188646711/e7f2dd06f1c00b3ab985171283389e39", + "kty": "RSA-HSM", + "n": "7EdvRifNgdyoK8fvZRRSzgCKJHIj8TAPIct4mVVqBOjrsozhd5epGf_GVMNLA2zSC9eUOzvJtrupRE5ZemZkzjoyY5jZBjrZmjSQA-Y3D26s9cFrq1OgYerMbMcjzeeKSftpA7HTP_KhA65CoDVe-juhN_RSk68t6qNmw6jap4BrdcUppwCAwnlAVfK0GLTv5MJM_AHgwtAEujR_8Wj-XdgkxARs4qYVNhIzs4Hr_oA9K9bMLOB6MGICXWhDdydDkckyErTQLNVmU-fGlGZx-xatiVJiz6jngBH-UG4QGzMc3KuUnS6X4AqZbEVOog_4wpUJ1jGnGIUyD6H56liyrQ" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "727", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "756ce756-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "407" + }, + "ResponseBody": { + "attributes": { + "created": 1656356449, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356449 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "sign", + "verify", + "encrypt", + "decrypt", + "unwrapKey" + ], + "kid": "https://fakemhsm/keys/listkeyversions3188646711/e0e1b508cac443ac9bf310cbb7ad3f57", + "kty": "RSA-HSM", + "n": "qZOiO6WEVrSQVJQ6t5EHky5_OKM_u5aY4d-Z4KzuSs5v0l-N7mxDaflw7XLLHL7Ya4a7r2erFGLoSGUfIrizAdCbqak6UqnzYMSLxRkV5WyaQD63LQ6LMGw4iNnGgoKRi5RCufEDWHCcPiT5_zQzbLX2NUbKMhKMVmiRIucIMxQeZxoKBu17KB4xbUxOnS9k3GHM1lJK5IvaNyme6qg3VaCmEaHFgcqxFYiq5YAErRkeMWZOLO6VcUGg_8SJMUPqPkY8fo1lp8_fFnvYsn-AwJvtwGyAT7is_WmDWhKlpu307ap3Sll55HgMWMuq3wOgXFXsnhue15-ywuGMyle6rQ" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "727", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "75b440ec-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "369" + }, + "ResponseBody": { + "attributes": { + "created": 1656356450, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356450 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "sign", + "verify", + "encrypt", + "decrypt", + "unwrapKey" + ], + "kid": "https://fakemhsm/keys/listkeyversions3188646711/cb63638bccf149283cfe16a896df2dd2", + "kty": "RSA-HSM", + "n": "rDBVR0anpFwldQT-NNhuAHQrdKoIAete0ndTONKqd_qODm9Y-HqrSbC1pibKu0rkeDJz4T79HJCf_XCNK1Im08QM3bGu3o_CHFsi1NYINGDMIwIBh6FISVWU9wyMPkSMx06ha-pUP02HJs-1RcAzKufxvDu5ryx5C0kIORiv7kLW7hWV_lU2M1Fc7w_YlxGD4UK5QXLabAZMzWOTl4OzTbeJOe-P3eZU5r5jOyIQw60LdwvRY6UR3mjIzZ1U7dzihjUkRYrPBsyOUWbZAlmwVkeEpwvyKLlE85dyGM7umjeMezwCpQD-Iiym_mVvW7KxS22e-DnYCL8Vnc6xw9jbxQ" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "727", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "75f8c7a8-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "368" + }, + "ResponseBody": { + "attributes": { + "created": 1656356450, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356450 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "sign", + "verify", + "encrypt", + "decrypt", + "unwrapKey" + ], + "kid": "https://fakemhsm/keys/listkeyversions3188646711/6c71f03f29680cf42a47dd1f5bee257d", + "kty": "RSA-HSM", + "n": "1qDEACHsOUk6fu0XtTSesn2CkiBSRobOdGZrFz3LvV6SXRp1JJJf6a4vAZ4lnncpFXfmJ8fdmGl-4cW6nk7TiKq7c0PZeTyEIUifxsblMGypwr1OZEO-JXDtNvKf7YhwWU2cMLWoMRylD_-R-KY05-pXaRfHSU0tcODLh9dOAl_Byh24XIvTcjMuK9J4HyFrtnxwXahyPNt68mmF8u4Q3D6m8cGxkcrqUrOEh3QI5OndsWq4EAeSAH1u8Y7Czk8VUMJgZ0BVdkOquNzOcuUZei7-80numbIwp7ACui82B1Zwp9oHcePdDxAZ1pCHzkIpwEFMz--TRs-litm1B0gSvQ" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/versions?api-version=7.3\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "486", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "7647ecca-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "130" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys/listkeyversions3188646711/versions?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlzQUFBQUFBQUFBQT09I1JUOjEjVFJDOjEjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356449, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356449 + }, + "kid": "https://fakemhsm/keys/listkeyversions3188646711/e7f2dd06f1c00b3ab985171283389e39" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/versions?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlzQUFBQUFBQUFBQT09I1JUOjEjVFJDOjEjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "486", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "7667ccac-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "34" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys/listkeyversions3188646711/versions?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFl1QUFBQUFBQUFBQT09I1JUOjIjVFJDOjIjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356449, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356449 + }, + "kid": "https://fakemhsm/keys/listkeyversions3188646711/e0e1b508cac443ac9bf310cbb7ad3f57" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/versions?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFl1QUFBQUFBQUFBQT09I1JUOjIjVFJDOjIjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "486", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "7676178a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "26" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys/listkeyversions3188646711/versions?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFl2QUFBQUFBQUFBQT09I1JUOjMjVFJDOjMjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356450, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356450 + }, + "kid": "https://fakemhsm/keys/listkeyversions3188646711/cb63638bccf149283cfe16a896df2dd2" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711/versions?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFl2QUFBQUFBQUFBQT09I1JUOjMjVFJDOjMjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "285", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "7682aa4a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "29" + }, + "ResponseBody": { + "value": [ + { + "attributes": { + "created": 1656356450, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356450 + }, + "kid": "https://fakemhsm/keys/listkeyversions3188646711/6c71f03f29680cf42a47dd1f5bee257d" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys/listkeyversions3188646711?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "876", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "768f1a00-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "78" + }, + "ResponseBody": { + "attributes": { + "created": 1656356450, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356450 + }, + "deletedDate": 1656356451, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "sign", + "verify", + "encrypt", + "decrypt", + "unwrapKey" + ], + "kid": "https://fakemhsm/keys/listkeyversions3188646711/6c71f03f29680cf42a47dd1f5bee257d", + "kty": "RSA-HSM", + "n": "1qDEACHsOUk6fu0XtTSesn2CkiBSRobOdGZrFz3LvV6SXRp1JJJf6a4vAZ4lnncpFXfmJ8fdmGl-4cW6nk7TiKq7c0PZeTyEIUifxsblMGypwr1OZEO-JXDtNvKf7YhwWU2cMLWoMRylD_-R-KY05-pXaRfHSU0tcODLh9dOAl_Byh24XIvTcjMuK9J4HyFrtnxwXahyPNt68mmF8u4Q3D6m8cGxkcrqUrOEh3QI5OndsWq4EAeSAH1u8Y7Czk8VUMJgZ0BVdkOquNzOcuUZei7-80numbIwp7ACui82B1Zwp9oHcePdDxAZ1pCHzkIpwEFMz--TRs-litm1B0gSvQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/listkeyversions3188646711", + "scheduledPurgeDate": 1656961251 + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/TestListKeyVersions_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/TestListKeyVersions_HSM.json deleted file mode 100644 index 649d45d9622f..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/TestListKeyVersions_HSM.json +++ /dev/null @@ -1,638 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "23939326-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "23d8542a-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "208" - }, - "ResponseBody": { - "attributes": { - "created": 1643132108, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132108 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/3ee33244243e4a3a29f8b71d121ee8fc", - "kty": "RSA-HSM", - "n": "0z8j1j35lYCsHZCZgeZ-tZ59R2chs-gGJJ0QMoq3_ZUWCxEWN_A3-g_sOsSEoAGCqSwWUQ6ks1fFcRiqDD_3ygfxXkDhxKZcCAQ0V42jibV-afSWmSbWV8xO1RAG6JapXd4py7YqQ-taO4XDZJpc47E8wi3qrDx28pv-6gB4WFAk58pmZpK6GBlaAGOwlA3G0JFh5V4eRMnH_Y_Igm52dp8IYJLPF1czsOooIkr0czzA5QBL2gKJ9Ymg6Em8zolpdE9Z4WEmEtHeWFsRHd_dB2zpOLvvxrx1rPVtIb9FZ-HjWrg6pfg9aKl-YHI2m756InQLbERZ8ZZGFnNO-5R7tQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "24041f88-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "271" - }, - "ResponseBody": { - "attributes": { - "created": 1643132108, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132108 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "sign", - "verify", - "encrypt", - "decrypt", - "unwrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/8314c539606b4cb217bc860243869949", - "kty": "RSA-HSM", - "n": "pyziWvyHiot46JBQk_cwrCg_Qm1M19A-xIxzmPKZeNBUYmhlp7YU9ROjXhp5Iw8QO2ln2guJPqxhMcusTkmSKX_9kdNyqhrgSxmXnvcDLUcwf62lAHFLhHCWrkz83aMQzTabEoCzKF8lirwzK-W7Z2YOe5ro4MEdMLV_vXacEPPcXhQHp3ULkmxG_GLogdEoadiLH49KtsADMYd-QyOkBaNLapKqy27a_JiEEHAeZ7-10KlKDq9M7MupEUN-7epfPTUy9wExVfeKBEbUc8hL34aotns9XiABEsnbs4BA6183kJbvMFznfRJtDbBD18AY82z31hzvJLuc0zFKN7BNaw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "24387620-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "294" - }, - "ResponseBody": { - "attributes": { - "created": 1643132109, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132109 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "sign", - "verify", - "encrypt", - "decrypt", - "unwrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/398afe9c12a900d137144854ed5182ff", - "kty": "RSA-HSM", - "n": "lChsBa2LxME2XV8pKd0LNaD6r_AwLFg3YeBNezo5WZhUbPUEeF2D3ATerlaUxwVR4w7MFPY_7pyRijxSy1Ves9Yy7Bmul65Di1mypfs6LjOoxYEpZ7guuu7GZItbFrF5mjDcDZ6nNiFJpLxpUqDn8xeDzTk3sx8tMsdIKOjhHZdD037oo5rDuQd5Dpgqo1xwikZqrhMyxoh7nQjOapWpvpcaMktzTtgGAJxUfnSpkhdKIlGfHRuGvtMhpZoMUEngjSJfusvjUt0pvn3YWT0lIrfSqbSqTx9kF8CbZd7MIzklmpmJRU2VkmfOAxNglgVLYVR4JjbYzWaqY6vywsr0QQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "246ff5c8-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "263" - }, - "ResponseBody": { - "attributes": { - "created": 1643132109, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132109 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "sign", - "verify", - "encrypt", - "decrypt", - "unwrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/cb2913f41c454fab234c5c2c42b66d5c", - "kty": "RSA-HSM", - "n": "mW8Cf2Qwn5C1AmfnFbJsow_ch5PjMootdWNjAFvyj9nsAJIiU5W9ujU3cs1FLlUp3w3a7xv9SDuNSjvSLbuM2yKWxz6gFbW9FhecgCRv1IB-JXTiWq9qDB0XVlnqteIBRNv80foiyfj8hJ17ujWb-2l9aKYGVfXHGYF-P3-kajzBNO8-gX8tu4_Vyl1tWcIVejmEpjgsR92Y_kt-Y5JmCCfm0YMbQov89yQBnKYWUI3N4N3ahF8UpzxWEF19Mt4-WCeczO5ZKtRmqsp09-IU5NzfTDOuCicO-N5aVEhYXKBVx2UlN4OcpaF5_xaE1Wo0Pw3h3tLyceBRYYaLL3fIwQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "24a36c82-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "280" - }, - "ResponseBody": { - "attributes": { - "created": 1643132109, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132109 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "sign", - "verify", - "encrypt", - "decrypt", - "unwrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/f620422428e4481d2450e0c7fd3bd74f", - "kty": "RSA-HSM", - "n": "nsrlOzD8qsDXtgHtHbTH02MTmoR2yUI25TD68R4Pzjwd9uoMt2AcFdIZxWSz5-le62r4n6vaVjafYU-C0-PkFRJj2mtMlY4Ba-qEUUnngKff3Ejg4Sv4771oSrJJn1G3t12QzZ7EU1au8Wal1E9FnLt9ai9v9szydj1s_9TlbRPw9yOme9XOjnVCw1l9siik4JLygdV6IHa-DDgyfwHOpLOeChh65HKr31k_5btoXy_n5ZKaK-NrfsGghjx70cv0GHSU6O6-nA_V_CEn2ICzQ3cZ6v58Cwh3pPSkuOxIl8LlGbNllJln0Y7b7Qidk5P4mMsy-yMfaWSxRvf62sOxiw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "716", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "24de8e5c-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "285" - }, - "ResponseBody": { - "attributes": { - "created": 1643132110, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132110 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "sign", - "verify", - "encrypt", - "decrypt", - "unwrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/832d6ba784964d459aadb6505749ac0d", - "kty": "RSA-HSM", - "n": "mCUcc7VnVD7ncbhzZIuNg1w-JecQD-eGUcZhVuZ8bK_2J3pYqcTinjGrCq5tl2Q1I3E46oogSh4FkAMVSDoIeRLXCZYf4MAnvTgfLo7XZYQFaEvdOV3eCpLZz5R3bXPlCKof98XiQp1809AbyTp8fDmoKZaOMnhVjCu7bA8U4iUHWFZGzZF8DFyDC0xYlde2xj0KlCsWBq3cSPGlujje7ICyXktFwisE6xUv_tyBZUVqmX2yO27H3caLyQazPcKOQ3pfjkbahngyf9F6P49taNfBmor4xY0ZEJswd1CMkig6BW0CVFJd-hon3GjLESOlALBzdTcDvUxSwsNycJyg5w" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963/versions?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1589", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "2516797a-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "100" - }, - "ResponseBody": { - "value": [ - { - "attributes": { - "created": 1643132108, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132108 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/3ee33244243e4a3a29f8b71d121ee8fc" - }, - { - "attributes": { - "created": 1643132108, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132108 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/8314c539606b4cb217bc860243869949" - }, - { - "attributes": { - "created": 1643132109, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132109 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/398afe9c12a900d137144854ed5182ff" - }, - { - "attributes": { - "created": 1643132109, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132109 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/cb2913f41c454fab234c5c2c42b66d5c" - }, - { - "attributes": { - "created": 1643132109, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132109 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/f620422428e4481d2450e0c7fd3bd74f" - }, - { - "attributes": { - "created": 1643132110, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132110 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/832d6ba784964d459aadb6505749ac0d" - } - ] - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key2201827963?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "2530a2c8-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "91" - }, - "ResponseBody": { - "attributes": { - "created": 1643132110, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132110 - }, - "deletedDate": 1643132110, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "sign", - "verify", - "encrypt", - "decrypt", - "unwrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/832d6ba784964d459aadb6505749ac0d", - "kty": "RSA-HSM", - "n": "mCUcc7VnVD7ncbhzZIuNg1w-JecQD-eGUcZhVuZ8bK_2J3pYqcTinjGrCq5tl2Q1I3E46oogSh4FkAMVSDoIeRLXCZYf4MAnvTgfLo7XZYQFaEvdOV3eCpLZz5R3bXPlCKof98XiQp1809AbyTp8fDmoKZaOMnhVjCu7bA8U4iUHWFZGzZF8DFyDC0xYlde2xj0KlCsWBq3cSPGlujje7ICyXktFwisE6xUv_tyBZUVqmX2yO27H3caLyQazPcKOQ3pfjkbahngyf9F6P49taNfBmor4xY0ZEJswd1CMkig6BW0CVFJd-hon3GjLESOlALBzdTcDvUxSwsNycJyg5w" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2201827963", - "scheduledPurgeDate": 1643736910 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2201827963?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "25497014-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "33" - }, - "ResponseBody": { - "attributes": { - "created": 1643132110, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132110 - }, - "deletedDate": 1643132110, - "key": { - "e": "AQAB", - "key_ops": [ - "unwrapKey", - "decrypt", - "encrypt", - "verify", - "sign", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/832d6ba784964d459aadb6505749ac0d", - "kty": "RSA-HSM", - "n": "mCUcc7VnVD7ncbhzZIuNg1w-JecQD-eGUcZhVuZ8bK_2J3pYqcTinjGrCq5tl2Q1I3E46oogSh4FkAMVSDoIeRLXCZYf4MAnvTgfLo7XZYQFaEvdOV3eCpLZz5R3bXPlCKof98XiQp1809AbyTp8fDmoKZaOMnhVjCu7bA8U4iUHWFZGzZF8DFyDC0xYlde2xj0KlCsWBq3cSPGlujje7ICyXktFwisE6xUv_tyBZUVqmX2yO27H3caLyQazPcKOQ3pfjkbahngyf9F6P49taNfBmor4xY0ZEJswd1CMkig6BW0CVFJd-hon3GjLESOlALBzdTcDvUxSwsNycJyg5w" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2201827963", - "scheduledPurgeDate": 1643736910 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2201827963?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "854", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "2558d964-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "33" - }, - "ResponseBody": { - "attributes": { - "created": 1643132110, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132110 - }, - "deletedDate": 1643132110, - "key": { - "e": "AQAB", - "key_ops": [ - "unwrapKey", - "decrypt", - "encrypt", - "verify", - "sign", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key2201827963/832d6ba784964d459aadb6505749ac0d", - "kty": "RSA-HSM", - "n": "mCUcc7VnVD7ncbhzZIuNg1w-JecQD-eGUcZhVuZ8bK_2J3pYqcTinjGrCq5tl2Q1I3E46oogSh4FkAMVSDoIeRLXCZYf4MAnvTgfLo7XZYQFaEvdOV3eCpLZz5R3bXPlCKof98XiQp1809AbyTp8fDmoKZaOMnhVjCu7bA8U4iUHWFZGzZF8DFyDC0xYlde2xj0KlCsWBq3cSPGlujje7ICyXktFwisE6xUv_tyBZUVqmX2yO27H3caLyQazPcKOQ3pfjkbahngyf9F6P49taNfBmor4xY0ZEJswd1CMkig6BW0CVFJd-hon3GjLESOlALBzdTcDvUxSwsNycJyg5w" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key2201827963", - "scheduledPurgeDate": 1643736910 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key2201827963?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "256848d6-7e05-11ec-a044-000d3a731e50", - "x-ms-server-latency": "116" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/TestListKeyVersions_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/TestListKeyVersions_NON-HSM.json deleted file mode 100644 index b427fb34beb8..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestListKeyVersions/TestListKeyVersions_NON-HSM.json +++ /dev/null @@ -1,640 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:25 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "15cceb8a-f1ae-47b7-a355-a87125e7b2fb" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:26 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=106;da_age=1417;rd_age=4612;brd_age=14446;ra_notif_age=592;da_notif_age=1943;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c989a660-47d9-4408-8bee-9c836d0df6cb" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/868a992d88aa41a4bf08482fa9e0a9da", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wlZP55qR9WRzqfr81t02Mqvz2Kiy0NiRX85xpsQG9u6UuvvtV_42bhtpefAbheNp2AsLd5RDflxwvoPo2ZvcoxTXbNDOdo-GcDkShuAPNT-11rjcFVBtEMzp_YK_c654ABHnn_gbNjbig071asa6sTzv6ib9GPdhULUTKQ1Da3i0Vo1CMsnEo9zmfDF1Hf2KwI6UMzQWQ6g5KMey-R2XTDerYlssYP9zAMtgB8A3PPUO9WwycWTCwwxjv5TLsd-kYBEbG_zBPQxijBqmsIex_JwNYimh3F7ACJVQ9l-7zUb6ow0-W4_-uHGP0JDp_c_dLtLpMKNLSD4RTbJzoOPlCQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819066, - "updated": 1652819066, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:26 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=106;da_age=1418;rd_age=4612;brd_age=14446;ra_notif_age=592;da_notif_age=1943;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b230b846-4fa1-4099-9f44-1801a70e0692" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/2748f2615c9146a092469319b00d1b55", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "7bDnf2J9oS2QUXuC4i9zETpFepcwtpiAkZuWmc_BdfKc-k2qgMOxmSMOjc60wbe0qkl0FXeQnxiGwLhLVO0IR-vC92ToxnA1657Wphkx_va5WsEhl1Emw80thfxZe-sswxLUp97VXC4mjHjoPw-VGeNCKH0A5BHU2zMuynXi7XFbEykJoeJ6Jdzby305JQMj5BWfx_Ygieqq2xSMyIKvk4f-4PYmJA19dLlJNjDGfXh7dRxTGft2GpexLDCohEzNlIrHUCwhW9CvDSTlkdm-TtDFzkn6o79Xzuh1wD6mkO4z3wAerM7ZBIx9-91sY-rPHkO9HiUAVXj7W-m3uoGk1Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819066, - "updated": 1652819066, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:26 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=106;da_age=1418;rd_age=4612;brd_age=14447;ra_notif_age=593;da_notif_age=1943;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "cf857bbd-ec47-43e9-9d08-a4337a87fec9" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/a0ee3a4930d54b2281b004970b71ad3e", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "vxMPLDGGiQaxV6KpbRn2vtl3DliriWIW2MEdbBlfrfBEzc2j59X2AdBPGFLCC6Bu6pTx2Dg5TsgQQz7hp1JFQygYR3grnqCAc_CSHExWYP-vD3ZO82PzmeQU_F6oVdP39HbgL0iUXoo_Dxv5Z0GcSLqoJrNfFVsginvhgvFJz9NAi2455wJ5U8nLc-rRhTupcUXdBZikaDjpt16IdBEk-eOPgkulMBIJ12imU-dH0b3OEOiUkgBiDK4BTu4djclg_6DAweaArxe5bUafUSkSphH9xwMVhmhWYJlOw58MXOjmwMCPgPAaltSAmQgVUjvPRkBKzki9yJZUD6bH_w4FDQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819066, - "updated": 1652819066, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:26 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=106;da_age=1418;rd_age=4612;brd_age=14447;ra_notif_age=593;da_notif_age=1943;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "8388a46f-f180-46ff-8435-9e75204b09b1" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/20b72a37acc1416d9e084601b0aba9fc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "z9TS6VE97MoCqorZBRaz1t34vFE4Pbd4gkzFz2g8F5im_yauoo5JI_vs7xYRscgg8r5GmzZmjg6fSb1ybuA5viUwGyd5DLt30lN1oJ9cdXVqEAdWomCfiN7ai2ngpJvZEEj5G3H-TIVwm3NEAjdwlIBsi3alH1P4xFX1R5F4gA-rpJLygl3CGt7Jkx1elJXRJt1Wxx3XE8ydaFtLXAzjrY8ehQNQ0U8lL5nYGmlCPrsN_N_Nv4DYlVg5W368ysTNq1s_R9zNWGOpEXRcaMJ8F-w7XSTNKtPTiqxe9zw8vCw-yiKH63eM0wEDMcwOwh26GftmoV0vqNO-npMW8TalqQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:26 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=107;da_age=1418;rd_age=4612;brd_age=14447;ra_notif_age=593;da_notif_age=1943;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "984803dc-22f5-48f4-83c6-badb62e019db" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/0f6898ba0391437b8daedf5b748b5715", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "1nkJPTjm8Rv92Q47JRImQN1z4A6giiVZnH1pRcyjkvY6DYRVu3Y89TGHh0VGhvpQMaXl-EuPKAcaGmtJlZdlx2EnB0ex8ZKDicA9rf3D8MWfqzzO_4w_Wo36mfnufqI4mh1LGG5xTbE0z65OEN5hWXAyeEMPwu-YB-Mcu6jLc8brAWexyXgQct8fPrRLDWqGHIytm8O1lNuwaSzbySxmERjyU8Y_H2sUxUz4rp5mmsq5JG1xUhozrJJxMhrY-YXis8VGAwVnJLULZmCsH6c132G4hnZOFrluHilSUqRO3PG-hS_DBB2CFUrMz_H11xD7lp8k6OSXjZhkWTLJWf-WOQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:27 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=107;da_age=1418;rd_age=4613;brd_age=14447;ra_notif_age=593;da_notif_age=1944;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "63932034-5819-4558-8b79-63e79b6bd99d" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/aaa03ca2a8ff47179f4f087ba8ca2c96", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "3Ghi2Boe9U6_ch7B9AeFKfg6cZvF9XhU7vk8ghZpOu09hjg2grPsF3RTNYj_TITDVjF3RtqFYoZWm7NEdZh6qmwr9rqNZWiUqG2RKv1jlPStPPUoQAKcC5hHE_0bDzqRGwmNs7HDANMBYe4krN97-Ty_CoA0xA1QmHzULnvSGKX8QMFBTLL7k2VQlB6ZZqoEFm_nHkdvPga46nzqg6X3uIV3HxgQcDlmoLkEMtAXlwD7jLBkIm359MhT-fT7T7YQaTDRdpfL5oxV6-8sWOADKqspO22hfcNgp05Jew5Pp1VLVafqRKzIU6bVQVX_072LVWIkxZh9Zq8q5NkoCdYyBQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625/versions?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1479", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:27 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=107;da_age=1419;rd_age=4613;brd_age=14447;ra_notif_age=593;da_notif_age=1944;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c5d922fa-bb7f-4055-be68-21d608eb4cd1" - }, - "ResponseBody": { - "value": [ - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key231821625/0f6898ba0391437b8daedf5b748b5715", - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key231821625/20b72a37acc1416d9e084601b0aba9fc", - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key231821625/2748f2615c9146a092469319b00d1b55", - "attributes": { - "enabled": true, - "created": 1652819066, - "updated": 1652819066, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key231821625/868a992d88aa41a4bf08482fa9e0a9da", - "attributes": { - "enabled": true, - "created": 1652819066, - "updated": 1652819066, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key231821625/a0ee3a4930d54b2281b004970b71ad3e", - "attributes": { - "enabled": true, - "created": 1652819066, - "updated": 1652819066, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key231821625/aaa03ca2a8ff47179f4f087ba8ca2c96", - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - ], - "nextLink": null - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key231821625?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:27 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=107;da_age=1419;rd_age=4613;brd_age=14448;ra_notif_age=594;da_notif_age=1944;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e2bfa9fd-6703-4857-862a-1dea440bb5fd" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key231821625", - "deletedDate": 1652819067, - "scheduledPurgeDate": 1653423867, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/aaa03ca2a8ff47179f4f087ba8ca2c96", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "3Ghi2Boe9U6_ch7B9AeFKfg6cZvF9XhU7vk8ghZpOu09hjg2grPsF3RTNYj_TITDVjF3RtqFYoZWm7NEdZh6qmwr9rqNZWiUqG2RKv1jlPStPPUoQAKcC5hHE_0bDzqRGwmNs7HDANMBYe4krN97-Ty_CoA0xA1QmHzULnvSGKX8QMFBTLL7k2VQlB6ZZqoEFm_nHkdvPga46nzqg6X3uIV3HxgQcDlmoLkEMtAXlwD7jLBkIm359MhT-fT7T7YQaTDRdpfL5oxV6-8sWOADKqspO22hfcNgp05Jew5Pp1VLVafqRKzIU6bVQVX_072LVWIkxZh9Zq8q5NkoCdYyBQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key231821625?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "80", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:27 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=107;da_age=1419;rd_age=4613;brd_age=14448;ra_notif_age=594;da_notif_age=1944;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "8c5f8252-644c-49f3-abcc-4e1ed1606c3d" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key231821625" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key231821625?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:28 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=109;da_age=1420;rd_age=4614;brd_age=14449;ra_notif_age=595;da_notif_age=1945;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "40071a44-9f0b-4aa3-88d1-3feb7059392d" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key231821625", - "deletedDate": 1652819067, - "scheduledPurgeDate": 1653423867, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key231821625/aaa03ca2a8ff47179f4f087ba8ca2c96", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "3Ghi2Boe9U6_ch7B9AeFKfg6cZvF9XhU7vk8ghZpOu09hjg2grPsF3RTNYj_TITDVjF3RtqFYoZWm7NEdZh6qmwr9rqNZWiUqG2RKv1jlPStPPUoQAKcC5hHE_0bDzqRGwmNs7HDANMBYe4krN97-Ty_CoA0xA1QmHzULnvSGKX8QMFBTLL7k2VQlB6ZZqoEFm_nHkdvPga46nzqg6X3uIV3HxgQcDlmoLkEMtAXlwD7jLBkIm359MhT-fT7T7YQaTDRdpfL5oxV6-8sWOADKqspO22hfcNgp05Jew5Pp1VLVafqRKzIU6bVQVX_072LVWIkxZh9Zq8q5NkoCdYyBQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819067, - "updated": 1652819067, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key231821625?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:24:28 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=109;da_age=1420;rd_age=4614;brd_age=14449;ra_notif_age=595;da_notif_age=1945;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "7362ac5c-0434-4b5f-8ba3-6811c6abdeae" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/KV.json new file mode 100644 index 000000000000..fbc7cb9ad928 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/KV.json @@ -0,0 +1,871 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/testlistkeys-03059091935/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:37 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "fd006f76-aec2-46f3-a40a-0b90371bc4f8" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-03059091935/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:37 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=75;da_age=6519;rd_age=6519;brd_age=23007;ra_notif_age=365;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "99592422-3bd6-4953-9a2e-15675e392004" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testlistkeys-03059091935/0e60554ffb0749429292c881f588aef5", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "wNY73eYoNi24DyAhCkb5PFGN8JfoNjhP_eR-7ISRjWGX5p3l9RxSoflgdRQuoa5rs7U7SlbUXR7AhCnAj89ADTzQF3bHG29FPIFqaelr2ho6sGgV8ffw3LO8e0BldmhLVZ8PTHCyU1OhAckyeKByw1s8quDa-n9SqhkXYKOWhOByjz4cCt2FGaDo8IG7Y91SR2A_17addLyPYoq4IbAyURmclVtKh3W9dz8eD2xtl2wJIMR25lBk_nDJFg7oQjQvsDl0QEzQ7bFhl-_eavjkMNjTFomOkibqOfkzBJIVOF_vs_MjbzBPOXmUcHRwl4MS1-6iL9tuJzdqjSOZMVeWdQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-13059091935/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:37 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=75;da_age=6520;rd_age=6520;brd_age=23007;ra_notif_age=365;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "437d1b7e-9a18-4b58-86ca-d08f753fe69a" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testlistkeys-13059091935/92895843ef8a49d8838a6e056ff5f9be", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w4cXIHdLrvkafdTukTenhdL4DmXnJrMk8r8lamyD9GnzBmyiDdlUGqYo-EvYHCF392lK7awQU6QHmi9PmcwMiteeta76_a5SbY3cmI6dChLRYCFdnxmg5zt04QrkludrJey3v_yyWI_7I7D5EjrPh9mgowy7-0zLMuuduhSgEeMq-Tn28p3azPSxz2Z7BXh1v2X3M2LWzjGuBGVvoO1KLi19Hd4ldnIgojdXO-oC0pVW7ZDLEYdPUVEpAPy3Be6w-gmozEmhrwgwxLA_T7gEm2etTth6bv0MKdTsSBoAl1FdfnYwJkeuw6Jv4Wqda_VFlNDt4gnaBnTpoN01AFpqHQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-23059091935/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:38 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=76;da_age=6520;rd_age=6520;brd_age=23007;ra_notif_age=366;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "e3a0405c-197d-4d2e-a2aa-8308900e268e" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testlistkeys-23059091935/692d53ddece14fd6ae9c4ab93190a39d", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "l3N8zu14bMKseRd6YLT0i1HqLlALXYGAE99FfDlzQEIOmXfE-U0MUn5L5f83sIDY3pokUQ1zvX4IiTnU2GdLRMDUe0IuU_Jxn5CE_YK7CxiML_-ddVr5ajUtk1LcMxPY-b-hJXvhX2856CAxgv3n47XUEUzSmcYg_PVeOcifXrrJEHlI4tDhgSMtzrBCXBaAQDhDh0l4za_FNz7GgwpyWRx-25lrGlJFOYCV-NCSpNzDntgdpWA75ST1o7O226CZZoL_lCGZ6HzuT9k97mptMCI32qQ2XuP_jLF7Aj-1SAFAhM2cyeWGhWocIYGkNqDKLtjFTtd0rQmpvu5xfcvaaQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-33059091935/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "698", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:38 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=76;da_age=6520;rd_age=6520;brd_age=23008;ra_notif_age=366;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "2c65fe6f-bf49-48e1-b4f8-7ccd01d619c9" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testlistkeys-33059091935/afa27055e2e54eceb21b34747dd25d48", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "ycFgVOhBS-KpMrHGUUJFod11UgXw7dWIZlEHtk4Iz4MTqyWCei9FCmR0ylmn51LZoOdD90YZ1rAhdPo9VCcT-gQpOr9xPBqbNklv8mdNj8HSdsU-w3rIC4PWo4jBLpqZDnTsMYehtyMpK5_kHIDgom-n-Nj7U_oI05kz2ERra8Yv_sK7PI-m1FY_1AikrgrTJij39Bc1BevuWSGY3PXf0_KOWHBxtS9Af2EFz2pxB1DkUKlxKYqvuGK17WZovRNyJDpZwLgkSRqUKx2rVrGf0ZI5xLr2GInzD4kxp-TkBrTqpTIz9kuNSm2aDk1Qhn4_hv8yQRDkcdXPyR14cAqF8Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356439, + "updated": 1656356439, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "503", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:38 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=76;da_age=6521;rd_age=6521;brd_age=23008;ra_notif_age=366;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "acc69f42-addb-4c87-830c-021df4481d8d" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/key3964649413", + "attributes": { + "enabled": true, + "created": 1656356413, + "updated": 1656356413, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk13TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk13TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "299", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:39 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=77;da_age=6521;rd_age=6521;brd_age=23008;ra_notif_age=366;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "e6dcb60a-fb19-4a74-a013-8d35666f6d9b" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk14TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk14TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "299", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:39 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=77;da_age=6521;rd_age=6521;brd_age=23009;ra_notif_age=367;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "411091b2-b2b1-47c1-a2a0-94650e33d997" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk15TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk15TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "299", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:39 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=77;da_age=6521;rd_age=6521;brd_age=23009;ra_notif_age=367;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "1b376930-cc61-4e56-b9be-f2f1326145a6" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk16TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5TVNWTlVSRVZNUlZSRlJFdEZXVk16TkRFMk1URTROekExTkNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "299", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:39 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=77;da_age=6522;rd_age=6522;brd_age=23009;ra_notif_age=367;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "945a7f5f-6750-4557-8882-70727a391d28" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5VVJWTlVRa0ZEUzFWUVVrVlRWRTlTUlRjMU1EWTJOekF5TVNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5VVJWTlVRa0ZEUzFWUVVrVlRWRTlTUlRjMU1EWTJOekF5TVNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "287", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:39 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=77;da_age=6522;rd_age=6522;brd_age=23009;ra_notif_age=367;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "c09ab35e-110c-46e3-a507-bdc475236ce3" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlVUlZOVVNVMVFUMUpVTWpJd01qazVNakU1TXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlVUlZOVVNVMVFUMUpVTWpJd01qazVNakU1TXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "292", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:40 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=78;da_age=6522;rd_age=6522;brd_age=23009;ra_notif_age=367;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "80065f32-d8ee-4dd8-8486-f6666c576f95" + }, + "ResponseBody": { + "value": [], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlVUlZOVVMwVlpSVU10U0ZOTk1qTTRNams1TlRNeE5TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlVUlZOVVMwVlpSVU10U0ZOTk1qTTRNams1TlRNeE5TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "507", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:40 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=78;da_age=6522;rd_age=6522;brd_age=23010;ra_notif_age=368;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "89e6c46e-a2cf-4075-a607-fc2b18f2c206" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/testlistkeys-03059091935", + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlVUlZOVVRFbFRWRXRGV1ZNdE1UTXdOVGt3T1RFNU16VWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlVUlZOVVRFbFRWRXRGV1ZNdE1UTXdOVGt3T1RFNU16VWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "507", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:40 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=78;da_age=6522;rd_age=6522;brd_age=23010;ra_notif_age=368;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "bf9a86a8-bd98-4e40-9671-4d7a193ad2cf" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/testlistkeys-13059091935", + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlVUlZOVVRFbFRWRXRGV1ZNdE1qTXdOVGt3T1RFNU16VWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlVUlZOVVRFbFRWRXRGV1ZNdE1qTXdOVGt3T1RFNU16VWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "507", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:40 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=78;da_age=6523;rd_age=6523;brd_age=23010;ra_notif_age=368;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "815ea90a-7bda-4ec6-acab-de800c5603dc" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/testlistkeys-23059091935", + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": "https://fakevault:443/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlVUlZOVVRFbFRWRXRGV1ZNdE16TXdOVGt3T1RFNU16VWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1" + } + }, + { + "RequestUri": "https://fakevault/keys?api-version=7.3\u0026$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlVUlZOVVRFbFRWRXRGV1ZNdE16TXdOVGt3T1RFNU16VWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "243", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:40 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=79;da_age=6523;rd_age=6523;brd_age=23010;ra_notif_age=368;dec_lev=0;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "4edf9013-5d6e-41e6-9f40-57de4be5c8ff" + }, + "ResponseBody": { + "value": [ + { + "kid": "https://fakevault/keys/testlistkeys-33059091935", + "attributes": { + "enabled": true, + "created": 1656356439, + "updated": 1656356439, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + ], + "nextLink": null + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-33059091935?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "841", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:41 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=79;da_age=6523;rd_age=6523;brd_age=23010;ra_notif_age=369;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "b742ceca-d640-4f22-99d5-c83e4428e335" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testlistkeys-33059091935", + "deletedDate": 1656356441, + "scheduledPurgeDate": 1656961241, + "key": { + "kid": "https://fakevault/keys/testlistkeys-33059091935/afa27055e2e54eceb21b34747dd25d48", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "ycFgVOhBS-KpMrHGUUJFod11UgXw7dWIZlEHtk4Iz4MTqyWCei9FCmR0ylmn51LZoOdD90YZ1rAhdPo9VCcT-gQpOr9xPBqbNklv8mdNj8HSdsU-w3rIC4PWo4jBLpqZDnTsMYehtyMpK5_kHIDgom-n-Nj7U_oI05kz2ERra8Yv_sK7PI-m1FY_1AikrgrTJij39Bc1BevuWSGY3PXf0_KOWHBxtS9Af2EFz2pxB1DkUKlxKYqvuGK17WZovRNyJDpZwLgkSRqUKx2rVrGf0ZI5xLr2GInzD4kxp-TkBrTqpTIz9kuNSm2aDk1Qhn4_hv8yQRDkcdXPyR14cAqF8Q", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356439, + "updated": 1656356439, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-23059091935?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "841", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:41 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=79;da_age=6523;rd_age=6523;brd_age=23011;ra_notif_age=369;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f6b2e988-1f89-413a-a5db-ba68e5663017" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testlistkeys-23059091935", + "deletedDate": 1656356442, + "scheduledPurgeDate": 1656961242, + "key": { + "kid": "https://fakevault/keys/testlistkeys-23059091935/692d53ddece14fd6ae9c4ab93190a39d", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "l3N8zu14bMKseRd6YLT0i1HqLlALXYGAE99FfDlzQEIOmXfE-U0MUn5L5f83sIDY3pokUQ1zvX4IiTnU2GdLRMDUe0IuU_Jxn5CE_YK7CxiML_-ddVr5ajUtk1LcMxPY-b-hJXvhX2856CAxgv3n47XUEUzSmcYg_PVeOcifXrrJEHlI4tDhgSMtzrBCXBaAQDhDh0l4za_FNz7GgwpyWRx-25lrGlJFOYCV-NCSpNzDntgdpWA75ST1o7O226CZZoL_lCGZ6HzuT9k97mptMCI32qQ2XuP_jLF7Aj-1SAFAhM2cyeWGhWocIYGkNqDKLtjFTtd0rQmpvu5xfcvaaQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-13059091935?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "841", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:41 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=79;da_age=6524;rd_age=6524;brd_age=23011;ra_notif_age=369;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "7490352f-4737-4bc0-bec8-216b456dd998" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testlistkeys-13059091935", + "deletedDate": 1656356442, + "scheduledPurgeDate": 1656961242, + "key": { + "kid": "https://fakevault/keys/testlistkeys-13059091935/92895843ef8a49d8838a6e056ff5f9be", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "w4cXIHdLrvkafdTukTenhdL4DmXnJrMk8r8lamyD9GnzBmyiDdlUGqYo-EvYHCF392lK7awQU6QHmi9PmcwMiteeta76_a5SbY3cmI6dChLRYCFdnxmg5zt04QrkludrJey3v_yyWI_7I7D5EjrPh9mgowy7-0zLMuuduhSgEeMq-Tn28p3azPSxz2Z7BXh1v2X3M2LWzjGuBGVvoO1KLi19Hd4ldnIgojdXO-oC0pVW7ZDLEYdPUVEpAPy3Be6w-gmozEmhrwgwxLA_T7gEm2etTth6bv0MKdTsSBoAl1FdfnYwJkeuw6Jv4Wqda_VFlNDt4gnaBnTpoN01AFpqHQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/testlistkeys-03059091935?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "841", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:00:42 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=80;da_age=6524;rd_age=6524;brd_age=23011;ra_notif_age=370;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "259b6c68-6e30-4e39-8e3d-677e53148bee" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testlistkeys-03059091935", + "deletedDate": 1656356442, + "scheduledPurgeDate": 1656961242, + "key": { + "kid": "https://fakevault/keys/testlistkeys-03059091935/0e60554ffb0749429292c881f588aef5", + "kty": "RSA", + "key_ops": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ], + "n": "wNY73eYoNi24DyAhCkb5PFGN8JfoNjhP_eR-7ISRjWGX5p3l9RxSoflgdRQuoa5rs7U7SlbUXR7AhCnAj89ADTzQF3bHG29FPIFqaelr2ho6sGgV8ffw3LO8e0BldmhLVZ8PTHCyU1OhAckyeKByw1s8quDa-n9SqhkXYKOWhOByjz4cCt2FGaDo8IG7Y91SR2A_17addLyPYoq4IbAyURmclVtKh3W9dz8eD2xtl2wJIMR25lBk_nDJFg7oQjQvsDl0QEzQ7bFhl-_eavjkMNjTFomOkibqOfkzBJIVOF_vs_MjbzBPOXmUcHRwl4MS1-6iL9tuJzdqjSOZMVeWdQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356438, + "updated": 1656356438, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/MHSM.json new file mode 100644 index 000000000000..b400c4786379 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/MHSM.json @@ -0,0 +1,655 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-0583784627/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "71a87860-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-0583784627/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "725", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "71b13504-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "285" + }, + "ResponseBody": { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-0583784627/faa9cc8203af06c2214629ec5ef2e9ab", + "kty": "RSA-HSM", + "n": "wCS_UK9QTXltu3M3Tm1_wBFYOz7fC7mXvivDMzuwiw4OAdPT5rT-dSX1ZSdYI9wnmO9aB6ny3yIy8p0VG2U-2bf2KIF-MGDs2t3prIIGIM4ciqqWh1XEOGC1ZZBb5ayau6a6mDO49l5YGYc3_RDEyB2zkA3yoFnQSd7rKoAdZdCC77yFw13fFTDhLDNY832Zxi8ipCuj2uiUO_vU53dCpcYQHDmj8lewohCFyqF02gcCMt5Oy1xCTdjVPl-FsvIppBkE5VnGpg5y2maf-DCgIkrx0wjTjpOXbz29lENxacyTlJwm3reYt53mjjILOWQl0AVeiev6P-GfwVDJRltSgw" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-1583784627/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "725", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "71e5aa0a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "265" + }, + "ResponseBody": { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-1583784627/8b132363c77a0551189f7ad364cfa69e", + "kty": "RSA-HSM", + "n": "2uekP3xcYdYighWwoFVZnZxMOJDDcuNZdmbdAkjtoHnyYZa9kkPwXfwHIsrAzG4GW6dmuCsCIcW5j9RrkNK0UwIImRyk5wYAK3jvy410Vv0SUejcSwyZzzeINKYXAFcKzDA9P_HSGjb0Roly9jVlFCKWBTF4FB69NZAy0o8U-7ofuNLPATqI8ZZm7MetIpeDVLikZGcO_UvN1XlO2cIlIa7pPJ74KmiMsXLLMhH2KbTkGkz3cDxELxNIVDWK1vwNl7ohuMbOZ4FVFtP1rJ10rmxmLGSwuO6ssVEumfEDkoq4iTh_tG5mf9is16A6jp3sPgb42-Yrn7irRGedxjzI6w" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-2583784627/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "725", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "7221f4f6-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "269" + }, + "ResponseBody": { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-2583784627/582a1901381c043f82a9bf831a820550", + "kty": "RSA-HSM", + "n": "kv8zIaBPVV5nr4piIBJiQT7U-sDr-x4UjPnpFhbV9ToUukYwYg9cV9Y3gCzmcocpNMg9dm8l7AhEj51CRLQ0Ezn-mnWYLJwuCL-KVz0WPZW0gFNUe1DdxeXavr8jm8YEB7rPsrYYxleAT9GeotFD8k9z2asoB4VZ_24RD558smGtWh_QuXpaiF74jt15P-9NLnZuK-5IUjhkhTiZctidS2bzjYCck5Qhs6vRwg0IwvZF2-_Xlp1j0gNGfa9o_82KkctHsXeOq9MXJ6nYjDjo8c_q1h9KKcINh3yFkPTkHjVB5vEMC4Wut4bCEaMhq-BkumrGtEWaI91bEhermyB03w" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-3583784627/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "13", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "725", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "725f5ff8-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "266" + }, + "ResponseBody": { + "attributes": { + "created": 1656356444, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356444 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "decrypt", + "encrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-3583784627/58d6d9adbd0804363814d9144ab31932", + "kty": "RSA-HSM", + "n": "i_85nAnivmkJ5QTbmq8UwA-8iHN3dPsx6aBt69ULGatNgzNfj8zTVDH7kKJY-MZML3zTPnKCbqwnMHCuP0EkhlAzwwNPVEqmFbVOPtpyfW-9pmDzp3HUlazA3yOLV67956P7CVOVk-vkIDK1KhLOZQwSM-yd59DUArhxAnrO6svVX6iSnNzATfGiMZA3_tREEMSUh0RJoO0GtNx1u5uYb0hVAKwhEVL9rdXt2K0jbwNcC2C5uOc8iVME0fRlEJrewGfyYy6tgw0lEUZO1BzWRISVg9rmL6Zu_CMbM7bHKe80n9LujP_YKizmNOvdIRZqKMHc9_hyTiadMHzDOfqjNw" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys?api-version=7.3\u0026maxresults=1", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "406", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "729de1ce-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "27" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlaQUFBQUFBQUFBQT09I1JUOjEjVFJDOjEjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356414, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356414 + }, + "kid": "https://fakemhsm/keys/key4206922229" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlaQUFBQUFBQUFBQT09I1JUOjEjVFJDOjEjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "416", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "72aab61a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "35" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlsQUFBQUFBQUFBQT09I1JUOjIjVFJDOjIjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "kid": "https://fakemhsm/keys/testlistkeys-0583784627" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlsQUFBQUFBQUFBQT09I1JUOjIjVFJDOjIjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "416", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "72b835a6-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "26" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFluQUFBQUFBQUFBQT09I1JUOjMjVFJDOjMjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "kid": "https://fakemhsm/keys/testlistkeys-1583784627" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFluQUFBQUFBQUFBQT09I1JUOjMjVFJDOjMjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "416", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "72c429ec-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "30" + }, + "ResponseBody": { + "nextLink": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlwQUFBQUFBQUFBQT09I1JUOjQjVFJDOjQjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "value": [ + { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "kid": "https://fakemhsm/keys/testlistkeys-2583784627" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys?maxresults=1\u0026$skiptoken=K1JJRDp-eTJ0TUFJNHhkRFlwQUFBQUFBQUFBQT09I1JUOjQjVFJDOjQjSVNWOjIjSUVPOjY1NTY3I1FDRjo4", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "250", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "72d43ad0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "38" + }, + "ResponseBody": { + "value": [ + { + "attributes": { + "created": 1656356444, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356444 + }, + "kid": "https://fakemhsm/keys/testlistkeys-3583784627" + } + ] + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-3583784627?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "872", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "72e24238-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "176" + }, + "ResponseBody": { + "attributes": { + "created": 1656356444, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356444 + }, + "deletedDate": 1656356445, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-3583784627/58d6d9adbd0804363814d9144ab31932", + "kty": "RSA-HSM", + "n": "i_85nAnivmkJ5QTbmq8UwA-8iHN3dPsx6aBt69ULGatNgzNfj8zTVDH7kKJY-MZML3zTPnKCbqwnMHCuP0EkhlAzwwNPVEqmFbVOPtpyfW-9pmDzp3HUlazA3yOLV67956P7CVOVk-vkIDK1KhLOZQwSM-yd59DUArhxAnrO6svVX6iSnNzATfGiMZA3_tREEMSUh0RJoO0GtNx1u5uYb0hVAKwhEVL9rdXt2K0jbwNcC2C5uOc8iVME0fRlEJrewGfyYy6tgw0lEUZO1BzWRISVg9rmL6Zu_CMbM7bHKe80n9LujP_YKizmNOvdIRZqKMHc9_hyTiadMHzDOfqjNw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testlistkeys-3583784627", + "scheduledPurgeDate": 1656961245 + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-2583784627?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "872", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "730bfbf0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "172" + }, + "ResponseBody": { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "deletedDate": 1656356445, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-2583784627/582a1901381c043f82a9bf831a820550", + "kty": "RSA-HSM", + "n": "kv8zIaBPVV5nr4piIBJiQT7U-sDr-x4UjPnpFhbV9ToUukYwYg9cV9Y3gCzmcocpNMg9dm8l7AhEj51CRLQ0Ezn-mnWYLJwuCL-KVz0WPZW0gFNUe1DdxeXavr8jm8YEB7rPsrYYxleAT9GeotFD8k9z2asoB4VZ_24RD558smGtWh_QuXpaiF74jt15P-9NLnZuK-5IUjhkhTiZctidS2bzjYCck5Qhs6vRwg0IwvZF2-_Xlp1j0gNGfa9o_82KkctHsXeOq9MXJ6nYjDjo8c_q1h9KKcINh3yFkPTkHjVB5vEMC4Wut4bCEaMhq-BkumrGtEWaI91bEhermyB03w" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testlistkeys-2583784627", + "scheduledPurgeDate": 1656961245 + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-1583784627?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "872", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "733084fc-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "173" + }, + "ResponseBody": { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "deletedDate": 1656356445, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-1583784627/8b132363c77a0551189f7ad364cfa69e", + "kty": "RSA-HSM", + "n": "2uekP3xcYdYighWwoFVZnZxMOJDDcuNZdmbdAkjtoHnyYZa9kkPwXfwHIsrAzG4GW6dmuCsCIcW5j9RrkNK0UwIImRyk5wYAK3jvy410Vv0SUejcSwyZzzeINKYXAFcKzDA9P_HSGjb0Roly9jVlFCKWBTF4FB69NZAy0o8U-7ofuNLPATqI8ZZm7MetIpeDVLikZGcO_UvN1XlO2cIlIa7pPJ74KmiMsXLLMhH2KbTkGkz3cDxELxNIVDWK1vwNl7ohuMbOZ4FVFtP1rJ10rmxmLGSwuO6ssVEumfEDkoq4iTh_tG5mf9is16A6jp3sPgb42-Yrn7irRGedxjzI6w" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testlistkeys-1583784627", + "scheduledPurgeDate": 1656961245 + } + }, + { + "RequestUri": "https://fakemhsm/keys/testlistkeys-0583784627?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "872", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "735984d8-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "172" + }, + "ResponseBody": { + "attributes": { + "created": 1656356443, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356443 + }, + "deletedDate": 1656356446, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "encrypt", + "decrypt", + "unwrapKey", + "sign", + "verify" + ], + "kid": "https://fakemhsm/keys/testlistkeys-0583784627/faa9cc8203af06c2214629ec5ef2e9ab", + "kty": "RSA-HSM", + "n": "wCS_UK9QTXltu3M3Tm1_wBFYOz7fC7mXvivDMzuwiw4OAdPT5rT-dSX1ZSdYI9wnmO9aB6ny3yIy8p0VG2U-2bf2KIF-MGDs2t3prIIGIM4ciqqWh1XEOGC1ZZBb5ayau6a6mDO49l5YGYc3_RDEyB2zkA3yoFnQSd7rKoAdZdCC77yFw13fFTDhLDNY832Zxi8ipCuj2uiUO_vU53dCpcYQHDmj8lewohCFyqF02gcCMt5Oy1xCTdjVPl-FsvIppBkE5VnGpg5y2maf-DCgIkrx0wjTjpOXbz29lENxacyTlJwm3reYt53mjjILOWQl0AVeiev6P-GfwVDJRltSgw" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testlistkeys-0583784627", + "scheduledPurgeDate": 1656961246 + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/TestListKeys_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/TestListKeys_HSM.json deleted file mode 100644 index 1630373b01f4..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/TestListKeys_HSM.json +++ /dev/null @@ -1,1066 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-02357843325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "fd0dce06-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-02357843325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "718", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fd4f06f0-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "217" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-02357843325/b90d90f757f04889862bcbecbb88fc10", - "kty": "RSA-HSM", - "n": "p_elosH85gY7H0UnYRZaA4vSg-sE4P5lrLvxCHo_1InhzOL47nERO-VC3VjyzHJR-UVkCcA9fSWzZ4zfDXN4jh-RqRci1jJ4274vsoTVa3N0oQZ47dOjWx3WNB-8PRmRB41NtG44SGF2PqupR8U-EdH5x1Y-n1AH7VkalX1_sNdKKFVoYY83XwcP3aO15M9QikDXOIFwmcnzV3sH1NIhijrVcXvQ5ZDRE5kxS6REqnfoIlMQC6ECK1iTLeUjZSJgeRZa6JqFys41i_nBlaSTGkxQEQZX6c9Ct_qGjU0m41dS3a-9onbElcNR16-lOhfmWirUd6oj8m1Px1-4O-DMmw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-12357843325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "718", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fd7a722c-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "208" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-12357843325/c264f646d731423eb390c244db507f0b", - "kty": "RSA-HSM", - "n": "4MTkqP-Lv9FNyfM0yzFT2KfaP5wJRQLkBL64vqFzGxpIa_bV8T1cI1eKgO9T-j5Akpvk_oceNg3iR2lcyCo2DihDGKuHQiG0LkTJ76I0B5e1rTTq9HmFcIYjcics-6NArzORriwnNKZSlNiJwcswg8XguB0EXB2qItwTCbYewVFZVVFkN58tgOg2Qz6XCVG3PBIbEXTUNAqr6yBt_Ox0vL5aHbcDcbnxGnpF0kgKsgqFzYfB7e-0taFGXQ7nA8h7rGy7GyYHlx53usLjgDOdheUgmkIuqdRm1OuepgL7s0I9uOvWBo1B6n2uAS8sTPyCbYsPe7UgU12h6C309oegFw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-22357843325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "718", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fda4a696-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "219" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-22357843325/13b455eda2040bb08cfa1da8eecbaa43", - "kty": "RSA-HSM", - "n": "incKvxBz1yQKt9ZYFdq6bbxJ2bLCkqYgj7fOXQ0I7CBevmMxvrwdxGj7WwOjPRQ72_n6Mg2Fj_YDfrQWWdh8DYcaN38vB0Y_JKxwB2N9oXI1sMlYMEO_hRML_Y2L2jHCtFdpBzePIIBbmdGA8zLlEAjchxwRYwrmSEL0PB7oD32tfAWHY4Yld_TLsE1ylAxmkd4k11Id2yJ7sz7gR4ofQRtyneo_YDaSbzvxqwJ8PAWt1M73yCHkU78wFZxvQHEN0aWBxRHePpO9fzrD1x4ufczUq7o8j2E807XLZ5QMmyzNkcwtWCHrgWNRRsRkXvqyh2cYKopLccMmp7V9bIk19Q" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-32357843325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "718", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fdd05fd4-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "218" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-32357843325/ca97b62d5ff94083aea6126c78f79138", - "kty": "RSA-HSM", - "n": "rm0iOF-yh-vMMrsYLhxL-dq6ScmnmPE78-e6vKSSbiVqUh5EvTeyBvyyYet-gettCazn1r71eCFsPTJB1ynugfVkj8YNZWlXn_8VsWPyrYNLb2Qv3wzE5m8kEXS2-PHjdNkLaVV0zP6juXDYC4ONb92nQzbgmiAqh7pR5vFKLqBtl3bAgWaFvB7DBg1SKh5AhB71e7mOWzVMycUOCohOmnhwC291mQmlLeAh2vcYEDpHJyN5j9UluCHdP5mw2tYl5a9VAU2bOWx8C3NEXcrdtwp7m9TQjR25tSPK3JvoytEQTP5vt1QMJJ1kOD_Br-WqaOCDhIy-XwilWa86VjlV4w" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "939", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fdfc18ae-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "37" - }, - "ResponseBody": { - "value": [ - { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-02357843325" - }, - { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-12357843325" - }, - { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-22357843325" - }, - { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-32357843325" - } - ] - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-02357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fe0c2898-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "142" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "deletedDate": 1643132045, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-02357843325/b90d90f757f04889862bcbecbb88fc10", - "kty": "RSA-HSM", - "n": "p_elosH85gY7H0UnYRZaA4vSg-sE4P5lrLvxCHo_1InhzOL47nERO-VC3VjyzHJR-UVkCcA9fSWzZ4zfDXN4jh-RqRci1jJ4274vsoTVa3N0oQZ47dOjWx3WNB-8PRmRB41NtG44SGF2PqupR8U-EdH5x1Y-n1AH7VkalX1_sNdKKFVoYY83XwcP3aO15M9QikDXOIFwmcnzV3sH1NIhijrVcXvQ5ZDRE5kxS6REqnfoIlMQC6ECK1iTLeUjZSJgeRZa6JqFys41i_nBlaSTGkxQEQZX6c9Ct_qGjU0m41dS3a-9onbElcNR16-lOhfmWirUd6oj8m1Px1-4O-DMmw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-02357843325", - "scheduledPurgeDate": 1643736845 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-02357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fe2c5e9c-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "33" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "deletedDate": 1643132044, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-02357843325/b90d90f757f04889862bcbecbb88fc10", - "kty": "RSA-HSM", - "n": "p_elosH85gY7H0UnYRZaA4vSg-sE4P5lrLvxCHo_1InhzOL47nERO-VC3VjyzHJR-UVkCcA9fSWzZ4zfDXN4jh-RqRci1jJ4274vsoTVa3N0oQZ47dOjWx3WNB-8PRmRB41NtG44SGF2PqupR8U-EdH5x1Y-n1AH7VkalX1_sNdKKFVoYY83XwcP3aO15M9QikDXOIFwmcnzV3sH1NIhijrVcXvQ5ZDRE5kxS6REqnfoIlMQC6ECK1iTLeUjZSJgeRZa6JqFys41i_nBlaSTGkxQEQZX6c9Ct_qGjU0m41dS3a-9onbElcNR16-lOhfmWirUd6oj8m1Px1-4O-DMmw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-02357843325", - "scheduledPurgeDate": 1643736844 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-02357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fe3becc2-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "35" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "deletedDate": 1643132044, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-02357843325/b90d90f757f04889862bcbecbb88fc10", - "kty": "RSA-HSM", - "n": "p_elosH85gY7H0UnYRZaA4vSg-sE4P5lrLvxCHo_1InhzOL47nERO-VC3VjyzHJR-UVkCcA9fSWzZ4zfDXN4jh-RqRci1jJ4274vsoTVa3N0oQZ47dOjWx3WNB-8PRmRB41NtG44SGF2PqupR8U-EdH5x1Y-n1AH7VkalX1_sNdKKFVoYY83XwcP3aO15M9QikDXOIFwmcnzV3sH1NIhijrVcXvQ5ZDRE5kxS6REqnfoIlMQC6ECK1iTLeUjZSJgeRZa6JqFys41i_nBlaSTGkxQEQZX6c9Ct_qGjU0m41dS3a-9onbElcNR16-lOhfmWirUd6oj8m1Px1-4O-DMmw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-02357843325", - "scheduledPurgeDate": 1643736844 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-02357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fe4bcc50-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "115" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-12357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fe67f20e-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "139" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "deletedDate": 1643132045, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-12357843325/c264f646d731423eb390c244db507f0b", - "kty": "RSA-HSM", - "n": "4MTkqP-Lv9FNyfM0yzFT2KfaP5wJRQLkBL64vqFzGxpIa_bV8T1cI1eKgO9T-j5Akpvk_oceNg3iR2lcyCo2DihDGKuHQiG0LkTJ76I0B5e1rTTq9HmFcIYjcics-6NArzORriwnNKZSlNiJwcswg8XguB0EXB2qItwTCbYewVFZVVFkN58tgOg2Qz6XCVG3PBIbEXTUNAqr6yBt_Ox0vL5aHbcDcbnxGnpF0kgKsgqFzYfB7e-0taFGXQ7nA8h7rGy7GyYHlx53usLjgDOdheUgmkIuqdRm1OuepgL7s0I9uOvWBo1B6n2uAS8sTPyCbYsPe7UgU12h6C309oegFw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-12357843325", - "scheduledPurgeDate": 1643736845 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-12357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fe8c55b8-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "34" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "deletedDate": 1643132045, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-12357843325/c264f646d731423eb390c244db507f0b", - "kty": "RSA-HSM", - "n": "4MTkqP-Lv9FNyfM0yzFT2KfaP5wJRQLkBL64vqFzGxpIa_bV8T1cI1eKgO9T-j5Akpvk_oceNg3iR2lcyCo2DihDGKuHQiG0LkTJ76I0B5e1rTTq9HmFcIYjcics-6NArzORriwnNKZSlNiJwcswg8XguB0EXB2qItwTCbYewVFZVVFkN58tgOg2Qz6XCVG3PBIbEXTUNAqr6yBt_Ox0vL5aHbcDcbnxGnpF0kgKsgqFzYfB7e-0taFGXQ7nA8h7rGy7GyYHlx53usLjgDOdheUgmkIuqdRm1OuepgL7s0I9uOvWBo1B6n2uAS8sTPyCbYsPe7UgU12h6C309oegFw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-12357843325", - "scheduledPurgeDate": 1643736845 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-12357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fea1ecfc-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "36" - }, - "ResponseBody": { - "attributes": { - "created": 1643132043, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132043 - }, - "deletedDate": 1643132045, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-12357843325/c264f646d731423eb390c244db507f0b", - "kty": "RSA-HSM", - "n": "4MTkqP-Lv9FNyfM0yzFT2KfaP5wJRQLkBL64vqFzGxpIa_bV8T1cI1eKgO9T-j5Akpvk_oceNg3iR2lcyCo2DihDGKuHQiG0LkTJ76I0B5e1rTTq9HmFcIYjcics-6NArzORriwnNKZSlNiJwcswg8XguB0EXB2qItwTCbYewVFZVVFkN58tgOg2Qz6XCVG3PBIbEXTUNAqr6yBt_Ox0vL5aHbcDcbnxGnpF0kgKsgqFzYfB7e-0taFGXQ7nA8h7rGy7GyYHlx53usLjgDOdheUgmkIuqdRm1OuepgL7s0I9uOvWBo1B6n2uAS8sTPyCbYsPe7UgU12h6C309oegFw" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-12357843325", - "scheduledPurgeDate": 1643736845 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-12357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "feb1cf28-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "106" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-22357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "fecfa598-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "141" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "deletedDate": 1643132046, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-22357843325/13b455eda2040bb08cfa1da8eecbaa43", - "kty": "RSA-HSM", - "n": "incKvxBz1yQKt9ZYFdq6bbxJ2bLCkqYgj7fOXQ0I7CBevmMxvrwdxGj7WwOjPRQ72_n6Mg2Fj_YDfrQWWdh8DYcaN38vB0Y_JKxwB2N9oXI1sMlYMEO_hRML_Y2L2jHCtFdpBzePIIBbmdGA8zLlEAjchxwRYwrmSEL0PB7oD32tfAWHY4Yld_TLsE1ylAxmkd4k11Id2yJ7sz7gR4ofQRtyneo_YDaSbzvxqwJ8PAWt1M73yCHkU78wFZxvQHEN0aWBxRHePpO9fzrD1x4ufczUq7o8j2E807XLZ5QMmyzNkcwtWCHrgWNRRsRkXvqyh2cYKopLccMmp7V9bIk19Q" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-22357843325", - "scheduledPurgeDate": 1643736846 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-22357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "feefb07c-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "35" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "deletedDate": 1643132046, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-22357843325/13b455eda2040bb08cfa1da8eecbaa43", - "kty": "RSA-HSM", - "n": "incKvxBz1yQKt9ZYFdq6bbxJ2bLCkqYgj7fOXQ0I7CBevmMxvrwdxGj7WwOjPRQ72_n6Mg2Fj_YDfrQWWdh8DYcaN38vB0Y_JKxwB2N9oXI1sMlYMEO_hRML_Y2L2jHCtFdpBzePIIBbmdGA8zLlEAjchxwRYwrmSEL0PB7oD32tfAWHY4Yld_TLsE1ylAxmkd4k11Id2yJ7sz7gR4ofQRtyneo_YDaSbzvxqwJ8PAWt1M73yCHkU78wFZxvQHEN0aWBxRHePpO9fzrD1x4ufczUq7o8j2E807XLZ5QMmyzNkcwtWCHrgWNRRsRkXvqyh2cYKopLccMmp7V9bIk19Q" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-22357843325", - "scheduledPurgeDate": 1643736846 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-22357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "feff79c6-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "31" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "deletedDate": 1643132046, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-22357843325/13b455eda2040bb08cfa1da8eecbaa43", - "kty": "RSA-HSM", - "n": "incKvxBz1yQKt9ZYFdq6bbxJ2bLCkqYgj7fOXQ0I7CBevmMxvrwdxGj7WwOjPRQ72_n6Mg2Fj_YDfrQWWdh8DYcaN38vB0Y_JKxwB2N9oXI1sMlYMEO_hRML_Y2L2jHCtFdpBzePIIBbmdGA8zLlEAjchxwRYwrmSEL0PB7oD32tfAWHY4Yld_TLsE1ylAxmkd4k11Id2yJ7sz7gR4ofQRtyneo_YDaSbzvxqwJ8PAWt1M73yCHkU78wFZxvQHEN0aWBxRHePpO9fzrD1x4ufczUq7o8j2E807XLZ5QMmyzNkcwtWCHrgWNRRsRkXvqyh2cYKopLccMmp7V9bIk19Q" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-22357843325", - "scheduledPurgeDate": 1643736846 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-22357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "ff0ecca0-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "107" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key-32357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "ff29cb90-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "150" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "deletedDate": 1643132046, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-32357843325/ca97b62d5ff94083aea6126c78f79138", - "kty": "RSA-HSM", - "n": "rm0iOF-yh-vMMrsYLhxL-dq6ScmnmPE78-e6vKSSbiVqUh5EvTeyBvyyYet-gettCazn1r71eCFsPTJB1ynugfVkj8YNZWlXn_8VsWPyrYNLb2Qv3wzE5m8kEXS2-PHjdNkLaVV0zP6juXDYC4ONb92nQzbgmiAqh7pR5vFKLqBtl3bAgWaFvB7DBg1SKh5AhB71e7mOWzVMycUOCohOmnhwC291mQmlLeAh2vcYEDpHJyN5j9UluCHdP5mw2tYl5a9VAU2bOWx8C3NEXcrdtwp7m9TQjR25tSPK3JvoytEQTP5vt1QMJJ1kOD_Br-WqaOCDhIy-XwilWa86VjlV4w" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-32357843325", - "scheduledPurgeDate": 1643736846 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-32357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "ff4b2a60-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "38" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "deletedDate": 1643132046, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-32357843325/ca97b62d5ff94083aea6126c78f79138", - "kty": "RSA-HSM", - "n": "rm0iOF-yh-vMMrsYLhxL-dq6ScmnmPE78-e6vKSSbiVqUh5EvTeyBvyyYet-gettCazn1r71eCFsPTJB1ynugfVkj8YNZWlXn_8VsWPyrYNLb2Qv3wzE5m8kEXS2-PHjdNkLaVV0zP6juXDYC4ONb92nQzbgmiAqh7pR5vFKLqBtl3bAgWaFvB7DBg1SKh5AhB71e7mOWzVMycUOCohOmnhwC291mQmlLeAh2vcYEDpHJyN5j9UluCHdP5mw2tYl5a9VAU2bOWx8C3NEXcrdtwp7m9TQjR25tSPK3JvoytEQTP5vt1QMJJ1kOD_Br-WqaOCDhIy-XwilWa86VjlV4w" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-32357843325", - "scheduledPurgeDate": 1643736846 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-32357843325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "858", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "ff5b33d8-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "28" - }, - "ResponseBody": { - "attributes": { - "created": 1643132044, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132044 - }, - "deletedDate": 1643132046, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key-32357843325/ca97b62d5ff94083aea6126c78f79138", - "kty": "RSA-HSM", - "n": "rm0iOF-yh-vMMrsYLhxL-dq6ScmnmPE78-e6vKSSbiVqUh5EvTeyBvyyYet-gettCazn1r71eCFsPTJB1ynugfVkj8YNZWlXn_8VsWPyrYNLb2Qv3wzE5m8kEXS2-PHjdNkLaVV0zP6juXDYC4ONb92nQzbgmiAqh7pR5vFKLqBtl3bAgWaFvB7DBg1SKh5AhB71e7mOWzVMycUOCohOmnhwC291mQmlLeAh2vcYEDpHJyN5j9UluCHdP5mw2tYl5a9VAU2bOWx8C3NEXcrdtwp7m9TQjR25tSPK3JvoytEQTP5vt1QMJJ1kOD_Br-WqaOCDhIy-XwilWa86VjlV4w" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key-32357843325", - "scheduledPurgeDate": 1643736846 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key-32357843325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "ff69d29e-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "111" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/TestListKeys_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/TestListKeys_NON-HSM.json deleted file mode 100644 index 7b194b07ab1d..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestListKeys/TestListKeys_NON-HSM.json +++ /dev/null @@ -1,1051 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-0173508775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:50 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c4350555-ffde-444f-826e-114baf72b8d7" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-0173508775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "688", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:51 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=11;da_age=1322;rd_age=4517;brd_age=14351;ra_notif_age=497;da_notif_age=1848;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ac63a85f-e97c-4b24-80f0-2a461a0aeadd" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-0173508775/64c2a8eb456d4c2fb8f0b09842d549e1", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "4H0y5m_dIJKwTCL099jF-nVs_JZ4PceoztNrMCsT0Y1eN3aHgVi7tx5o3BeSDNnwoJ3gdASaYg-AEf8LCmoojCtZtc4qweGkmtoLBruxsbeqPIBr4cciDXUStZzxnBa03dkE1oBXgRAE_9hZIIA_adl-rNkxPpnehXE1G76E_WqoBP_vPffd4kFSyN9yJpHYR4cAb-tn5hnCv7VhjmPDkTKNfdQqyoChSS7j5X8v_pRJHdAe1zJTRANgt-k8HfkcBpXI-Vwi7Yv5aC-pgdyPrii3DC-sW-2qBohiH0gz0wFwZJxPYlvOIlXV2aNDzBgzvvnxfnKqgFRMBsiFzuTmiQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-1173508775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "688", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:51 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=11;da_age=1323;rd_age=4517;brd_age=14351;ra_notif_age=497;da_notif_age=1848;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "12d2f5c1-a738-4f40-ae1a-d5e3f4c8584e" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-1173508775/9e734a08f31b4799bab155eeb2878df2", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "yyOIiHBTmZQEvtTBwh6_iYL7TPwnFYsybf3rrTyN7jYuzMWxAhbq0L9HaCiORQ3K0O9ZrH8z43iOziQSPi7yaOoN8pyP_JlbcGVRNM4L_Iif3UVLzRWOXxgEYbzrW2JCRxAbo2TKS_xFYGUHfAF2YZu4C6_DDpLNh3gttLffkJKrlOspXZ_bOX1OARa3cPoFS1ond6xTzO5nek3SqGn9_2Y9Q_yNUWi-iVCDVMPfvYI0qP2QQRbGa9XbKLfsNA_rPUQqNu31bCx60tDhPQm7yKqFwPg8JK9E6DrYQNo6arN0k_vTNC2q38ZRU6L7KifEbm084aJxVtkKS66NXtEMtQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-2173508775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "688", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:51 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=11;da_age=1323;rd_age=4517;brd_age=14352;ra_notif_age=498;da_notif_age=1848;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "32b92b99-5657-40d7-8991-2df09c0a4699" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-2173508775/fea2e7bd272e4f89a4610677ddb4ef96", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "s-msk6WNVEyszO8OTuYif7M3vK9zq39xAE2F1N6iqGRosobeSfVf2sdxNqWFmA3a5cdTeYwMxBvafHbBxQE563n8tR4wDM1D5Po4Yv_JiRXwfMWHKJoJ5ZeW-Hj43Ui3QEydGxAzhoWHdb_GW4vMLqovVRvadbLbe7B-UjQHy21ZtCH4CHSbIDEw8Q27UeT9sCbZk1cmNGwQbOiuHH_-1mUPhsSGz9rtSop6vyHV88SjNttiOQR6z8lDwLoHP_8YI0Mptsn69AD2oAowRaZ5kwLsXsLaS43thtGOE6kBonmdxb89Yg2rsWqKiCumZoE3DbHArLSgxvEVLcB1dZvMfQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-3173508775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "688", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:52 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=11;da_age=1323;rd_age=4517;brd_age=14352;ra_notif_age=498;da_notif_age=1848;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c00ed435-772c-4f61-8b9b-39b6c3b719d8" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-3173508775/7dc94012ed344ca488fda9aa9e9fc453", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "6brqlrJf-wXKMCQxJSapv92Tu_gd6fireDX-bg6CQra48sOldnatU6-YkLMD9H3nx2HLJE5p7VHXZEpdbAysXH7f2ZJXMXZRuv54Vx0VDQhI9qWCEVvVFOW0cS45b91z5aACPiAxMfV7W6UgxfD8y6LOxpw03HaU4dAZgU-XEFCbSszzoWl67fkqm5r-0XvaTaAsqxz491HjQb4BQpXjid1aTE6sQIwVMF59lRbFR-vb9To3KW5w0clyaw7C98Aot5fqg4IIzCDPH2YzJQavb8RO9ifBslLMvQRdP8nV_91o4PHeNH5X_HmwhcQ8Ik6YBo-mKE7mHwVGcBCchoeaRQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1498", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:52 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=1323;rd_age=4517;brd_age=14352;ra_notif_age=498;da_notif_age=1848;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "5e7ded23-9963-41ea-b65c-0d1865f4ce71" - }, - "ResponseBody": { - "value": [ - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/importedKey", - "attributes": { - "enabled": true, - "created": 1652814671, - "updated": 1652814671, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key-0173508775", - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key-1173508775", - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key-2173508775", - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key-3173508775", - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key1478960915", - "attributes": { - "enabled": true, - "created": 1652814490, - "updated": 1652814490, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - }, - { - "kid": "https://jhendrixazkeys.vault.azure.net/keys/key398251057", - "attributes": { - "enabled": true, - "created": 1652814489, - "updated": 1652814489, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - ], - "nextLink": null - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-0173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:52 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=1323;rd_age=4518;brd_age=14352;ra_notif_age=498;da_notif_age=1849;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e4dae0cb-2570-43b4-b139-9a189922a222" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-0173508775", - "deletedDate": 1652818972, - "scheduledPurgeDate": 1653423772, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-0173508775/64c2a8eb456d4c2fb8f0b09842d549e1", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "4H0y5m_dIJKwTCL099jF-nVs_JZ4PceoztNrMCsT0Y1eN3aHgVi7tx5o3BeSDNnwoJ3gdASaYg-AEf8LCmoojCtZtc4qweGkmtoLBruxsbeqPIBr4cciDXUStZzxnBa03dkE1oBXgRAE_9hZIIA_adl-rNkxPpnehXE1G76E_WqoBP_vPffd4kFSyN9yJpHYR4cAb-tn5hnCv7VhjmPDkTKNfdQqyoChSS7j5X8v_pRJHdAe1zJTRANgt-k8HfkcBpXI-Vwi7Yv5aC-pgdyPrii3DC-sW-2qBohiH0gz0wFwZJxPYlvOIlXV2aNDzBgzvvnxfnKqgFRMBsiFzuTmiQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-0173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "82", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:52 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=12;da_age=1324;rd_age=4518;brd_age=14352;ra_notif_age=498;da_notif_age=1849;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0fd905fe-603c-4939-9169-e0cf18bd5549" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key-0173508775" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-0173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:53 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=1325;rd_age=4519;brd_age=14354;ra_notif_age=499;da_notif_age=1850;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4f154f79-a16d-4eca-be4f-df68b3412ea9" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-0173508775", - "deletedDate": 1652818972, - "scheduledPurgeDate": 1653423772, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-0173508775/64c2a8eb456d4c2fb8f0b09842d549e1", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "4H0y5m_dIJKwTCL099jF-nVs_JZ4PceoztNrMCsT0Y1eN3aHgVi7tx5o3BeSDNnwoJ3gdASaYg-AEf8LCmoojCtZtc4qweGkmtoLBruxsbeqPIBr4cciDXUStZzxnBa03dkE1oBXgRAE_9hZIIA_adl-rNkxPpnehXE1G76E_WqoBP_vPffd4kFSyN9yJpHYR4cAb-tn5hnCv7VhjmPDkTKNfdQqyoChSS7j5X8v_pRJHdAe1zJTRANgt-k8HfkcBpXI-Vwi7Yv5aC-pgdyPrii3DC-sW-2qBohiH0gz0wFwZJxPYlvOIlXV2aNDzBgzvvnxfnKqgFRMBsiFzuTmiQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-0173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:53 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=1325;rd_age=4519;brd_age=14354;ra_notif_age=500;da_notif_age=1850;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "925e19b2-868d-46ba-85b5-6ceaada38e92" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-1173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:54 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=13;da_age=1325;rd_age=4519;brd_age=14354;ra_notif_age=500;da_notif_age=1850;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e5dbceb0-9733-4236-9027-5c9b1d5fc3c1" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-1173508775", - "deletedDate": 1652818974, - "scheduledPurgeDate": 1653423774, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-1173508775/9e734a08f31b4799bab155eeb2878df2", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "yyOIiHBTmZQEvtTBwh6_iYL7TPwnFYsybf3rrTyN7jYuzMWxAhbq0L9HaCiORQ3K0O9ZrH8z43iOziQSPi7yaOoN8pyP_JlbcGVRNM4L_Iif3UVLzRWOXxgEYbzrW2JCRxAbo2TKS_xFYGUHfAF2YZu4C6_DDpLNh3gttLffkJKrlOspXZ_bOX1OARa3cPoFS1ond6xTzO5nek3SqGn9_2Y9Q_yNUWi-iVCDVMPfvYI0qP2QQRbGa9XbKLfsNA_rPUQqNu31bCx60tDhPQm7yKqFwPg8JK9E6DrYQNo6arN0k_vTNC2q38ZRU6L7KifEbm084aJxVtkKS66NXtEMtQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-1173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "82", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:54 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=14;da_age=1325;rd_age=4519;brd_age=14354;ra_notif_age=500;da_notif_age=1850;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "262d002b-51d2-4026-8f27-e99ccdd70056" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key-1173508775" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-1173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:55 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=15;da_age=1326;rd_age=4520;brd_age=14355;ra_notif_age=501;da_notif_age=1852;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "173dd9e2-e371-42f8-9ed8-4b48d3e3f49d" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-1173508775", - "deletedDate": 1652818974, - "scheduledPurgeDate": 1653423774, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-1173508775/9e734a08f31b4799bab155eeb2878df2", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "yyOIiHBTmZQEvtTBwh6_iYL7TPwnFYsybf3rrTyN7jYuzMWxAhbq0L9HaCiORQ3K0O9ZrH8z43iOziQSPi7yaOoN8pyP_JlbcGVRNM4L_Iif3UVLzRWOXxgEYbzrW2JCRxAbo2TKS_xFYGUHfAF2YZu4C6_DDpLNh3gttLffkJKrlOspXZ_bOX1OARa3cPoFS1ond6xTzO5nek3SqGn9_2Y9Q_yNUWi-iVCDVMPfvYI0qP2QQRbGa9XbKLfsNA_rPUQqNu31bCx60tDhPQm7yKqFwPg8JK9E6DrYQNo6arN0k_vTNC2q38ZRU6L7KifEbm084aJxVtkKS66NXtEMtQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818971, - "updated": 1652818971, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-1173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:55 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=15;da_age=1326;rd_age=4521;brd_age=14355;ra_notif_age=501;da_notif_age=1852;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "53a30888-323d-4e2e-846d-422bdc53ee33" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-2173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:55 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=15;da_age=1327;rd_age=4521;brd_age=14355;ra_notif_age=501;da_notif_age=1852;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "60f22e83-b0d1-4826-91bd-900d346b686a" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-2173508775", - "deletedDate": 1652818975, - "scheduledPurgeDate": 1653423775, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-2173508775/fea2e7bd272e4f89a4610677ddb4ef96", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "s-msk6WNVEyszO8OTuYif7M3vK9zq39xAE2F1N6iqGRosobeSfVf2sdxNqWFmA3a5cdTeYwMxBvafHbBxQE563n8tR4wDM1D5Po4Yv_JiRXwfMWHKJoJ5ZeW-Hj43Ui3QEydGxAzhoWHdb_GW4vMLqovVRvadbLbe7B-UjQHy21ZtCH4CHSbIDEw8Q27UeT9sCbZk1cmNGwQbOiuHH_-1mUPhsSGz9rtSop6vyHV88SjNttiOQR6z8lDwLoHP_8YI0Mptsn69AD2oAowRaZ5kwLsXsLaS43thtGOE6kBonmdxb89Yg2rsWqKiCumZoE3DbHArLSgxvEVLcB1dZvMfQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-2173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "82", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:55 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=15;da_age=1327;rd_age=4521;brd_age=14356;ra_notif_age=501;da_notif_age=1852;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6eb0e332-0172-4d50-9c68-dd5416c5151c" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key-2173508775" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-2173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:56 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=16;da_age=1328;rd_age=4522;brd_age=14357;ra_notif_age=503;da_notif_age=1853;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c0686fd6-f8b6-427a-9123-03fce2b455e5" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-2173508775", - "deletedDate": 1652818975, - "scheduledPurgeDate": 1653423775, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-2173508775/fea2e7bd272e4f89a4610677ddb4ef96", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "s-msk6WNVEyszO8OTuYif7M3vK9zq39xAE2F1N6iqGRosobeSfVf2sdxNqWFmA3a5cdTeYwMxBvafHbBxQE563n8tR4wDM1D5Po4Yv_JiRXwfMWHKJoJ5ZeW-Hj43Ui3QEydGxAzhoWHdb_GW4vMLqovVRvadbLbe7B-UjQHy21ZtCH4CHSbIDEw8Q27UeT9sCbZk1cmNGwQbOiuHH_-1mUPhsSGz9rtSop6vyHV88SjNttiOQR6z8lDwLoHP_8YI0Mptsn69AD2oAowRaZ5kwLsXsLaS43thtGOE6kBonmdxb89Yg2rsWqKiCumZoE3DbHArLSgxvEVLcB1dZvMfQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-2173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:56 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=16;da_age=1328;rd_age=4522;brd_age=14357;ra_notif_age=503;da_notif_age=1853;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "2c684935-3e41-462c-8aa1-a226dbda7cb4" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key-3173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:56 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=17;da_age=1328;rd_age=4522;brd_age=14357;ra_notif_age=503;da_notif_age=1853;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6418c7f6-6156-47fb-90cc-43508523d1e0" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-3173508775", - "deletedDate": 1652818977, - "scheduledPurgeDate": 1653423777, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-3173508775/7dc94012ed344ca488fda9aa9e9fc453", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "6brqlrJf-wXKMCQxJSapv92Tu_gd6fireDX-bg6CQra48sOldnatU6-YkLMD9H3nx2HLJE5p7VHXZEpdbAysXH7f2ZJXMXZRuv54Vx0VDQhI9qWCEVvVFOW0cS45b91z5aACPiAxMfV7W6UgxfD8y6LOxpw03HaU4dAZgU-XEFCbSszzoWl67fkqm5r-0XvaTaAsqxz491HjQb4BQpXjid1aTE6sQIwVMF59lRbFR-vb9To3KW5w0clyaw7C98Aot5fqg4IIzCDPH2YzJQavb8RO9ifBslLMvQRdP8nV_91o4PHeNH5X_HmwhcQ8Ik6YBo-mKE7mHwVGcBCchoeaRQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-3173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "82", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:56 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=17;da_age=1328;rd_age=4523;brd_age=14357;ra_notif_age=503;da_notif_age=1854;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "56f13a19-6636-4dca-858c-e5fe71f8a4c9" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key-3173508775" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-3173508775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "821", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:22:58 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=18;da_age=1329;rd_age=4524;brd_age=14358;ra_notif_age=504;da_notif_age=1855;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "220317a7-849d-4f2d-8e5b-c39e1cc5d32b" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key-3173508775", - "deletedDate": 1652818977, - "scheduledPurgeDate": 1653423777, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key-3173508775/7dc94012ed344ca488fda9aa9e9fc453", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "6brqlrJf-wXKMCQxJSapv92Tu_gd6fireDX-bg6CQra48sOldnatU6-YkLMD9H3nx2HLJE5p7VHXZEpdbAysXH7f2ZJXMXZRuv54Vx0VDQhI9qWCEVvVFOW0cS45b91z5aACPiAxMfV7W6UgxfD8y6LOxpw03HaU4dAZgU-XEFCbSszzoWl67fkqm5r-0XvaTaAsqxz491HjQb4BQpXjid1aTE6sQIwVMF59lRbFR-vb9To3KW5w0clyaw7C98Aot5fqg4IIzCDPH2YzJQavb8RO9ifBslLMvQRdP8nV_91o4PHeNH5X_HmwhcQ8Ik6YBo-mKE7mHwVGcBCchoeaRQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652818972, - "updated": 1652818972, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key-3173508775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:22:58 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=18;da_age=1330;rd_age=4524;brd_age=14358;ra_notif_age=504;da_notif_age=1855;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "965ad49a-6b23-48ed-a3e9-88884eb4f752" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesImmutable/TestUpdateKeyPropertiesImmutable_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/KV.json similarity index 53% rename from sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesImmutable/TestUpdateKeyPropertiesImmutable_NON-HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/KV.json index 8d503338eaf5..4495928120a1 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesImmutable/TestUpdateKeyPropertiesImmutable_NON-HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/KV.json @@ -1,7 +1,7 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/immuta3226834185/create?api-version=7.3", + "RequestUri": "https://fakevault/keys/key1533221169/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", @@ -15,7 +15,7 @@ "Cache-Control": "no-cache", "Content-Length": "97", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:26 GMT", + "Date": "Mon, 27 Jun 2022 19:00:50 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", @@ -23,8 +23,8 @@ "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "dea8a287-1318-4b88-9cbc-f2da0b360aaf" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "2a574c13-7730-4c6e-8929-788e825b6e4a" }, "ResponseBody": { "error": { @@ -34,121 +34,111 @@ } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/immuta3226834185/create?api-version=7.3", + "RequestUri": "https://fakevault/keys/key1533221169/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "283", + "Content-Length": "12", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { - "attributes": { - "exportable": true - }, - "key_ops": [ - "encrypt", - "decrypt" - ], - "kty": "RSA-HSM", - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0", - "immutable": true - } + "kty": "EC" }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "950", + "Content-Length": "398", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:29 GMT", + "Date": "Mon, 27 Jun 2022 19:00:50 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=0;da_age=1913;rd_age=1913;brd_age=12994;ra_notif_age=194;dec_lev=3;", + "x-ms-keyvault-rbac-cache": "ra_age=89;da_age=6533;rd_age=6533;brd_age=23020;ra_notif_age=379;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "dad01093-f962-4f79-ba34-b822b7554afd" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "fe15bcd4-b994-4286-8d72-7d2328f1e88c" }, "ResponseBody": { "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/immuta3226834185/db0e2cd1ab0442658ac141ee2a675b38", - "kty": "RSA-HSM", + "kid": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d", + "kty": "EC", "key_ops": [ - "encrypt", - "decrypt" + "sign", + "verify" ], - "n": "4kcSIhZYwzJ4HO71EWJvDaWmahqSazCKKVRReMwTm4pcCsYHZ90j9TUVxiHMlVIwU_l36mbR9MS0cUosfTMUAX8ZfGVGyEshLJO_4h9Ge3WsPEFiKh4veWB73bVc2Yap-ua9YgXQZrXEX59Hgyk-sHtYkd4GBpJm_sMMU7PMIdXrfoN7xOHIqxatvueiLuenbmRaEntfWa61H1-7W45kQs-_EKfZR5hVi8pEfY1nxLASV6aees8_Dm9rAVHJu9OUlEjx99hWBpT_8_NaVW2XVzfuHmumjNScRHpq4wmW1wuzBI5JEL_f_bZi-JbG9RidxlfaHhyaQVOFq08gZ6m-mw", - "e": "AAEAAQ" + "crv": "P-256", + "x": "lvTk4GJey8crDLlPc4fSThom3mDpv9qNEIhc8ivNAOc", + "y": "ZykAB0Q7KT3Ke6cOF_zuD6TN0UnG7PwNKjrGX1s3P7k" }, "attributes": { "enabled": true, - "created": 1653348628, - "updated": 1653348628, + "created": 1656356451, + "updated": 1656356451, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - }, - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJ2ZXJzaW9uIjoiMS4wLjAiLCJhbnlPZiI6W3siYXV0aG9yaXR5IjoiaHR0cHM6Ly9jaGxvd2VhemtleXNzaXRlLmF6dXJld2Vic2l0ZXMubmV0IiwiYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dfV19", - "immutable": true + "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/immuta3226834185/db0e2cd1ab0442658ac141ee2a675b38?api-version=7.3", - "RequestMethod": "PATCH", + "RequestUri": "https://fakevault/keys/key1533221169?api-version=7.3", + "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "251", - "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "RequestBody": { - "attributes": { - "enabled": false, - "exportable": true - }, - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0", - "immutable": true - } - }, - "StatusCode": 400, + "RequestBody": null, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "108", + "Content-Length": "530", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:29 GMT", + "Date": "Mon, 27 Jun 2022 19:00:51 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=2;da_age=1914;rd_age=1914;brd_age=12995;ra_notif_age=195;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=89;da_age=6533;rd_age=6533;brd_age=23021;ra_notif_age=379;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "2ace052a-947e-472a-b6e7-fdd3a7cc6002" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "2bbe5dd4-d13d-40a3-ac0e-8e304753a118" }, "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "AKV.SKR.1020: Immutable Key Release Policy cannot be modified." + "recoveryId": "https://fakevault/deletedkeys/key1533221169", + "deletedDate": 1656356452, + "scheduledPurgeDate": 1656961252, + "key": { + "kid": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d", + "kty": "EC", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256", + "x": "lvTk4GJey8crDLlPc4fSThom3mDpv9qNEIhc8ivNAOc", + "y": "ZykAB0Q7KT3Ke6cOF_zuD6TN0UnG7PwNKjrGX1s3P7k" + }, + "attributes": { + "enabled": true, + "created": 1656356451, + "updated": 1656356451, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/immuta3226834185?api-version=7.3", - "RequestMethod": "DELETE", + "RequestUri": "https://fakevault/deletedkeys/key1533221169?api-version=7.3", + "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", @@ -156,49 +146,32 @@ "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 404, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "811", + "Content-Length": "81", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:29 GMT", + "Date": "Mon, 27 Jun 2022 19:00:51 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=2;da_age=1914;rd_age=1914;brd_age=12995;ra_notif_age=195;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=89;da_age=6534;rd_age=6534;brd_age=23021;ra_notif_age=379;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b9401f05-fbf0-4f73-832f-cfae17d3c8cc" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "ba144383-3d87-4214-a8b3-6f4ca2ed6b51" }, "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185", - "deletedDate": 1653348630, - "scheduledPurgeDate": 1653953430, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/immuta3226834185/db0e2cd1ab0442658ac141ee2a675b38", - "kty": "RSA-HSM", - "key_ops": [ - "encrypt", - "decrypt" - ], - "n": "4kcSIhZYwzJ4HO71EWJvDaWmahqSazCKKVRReMwTm4pcCsYHZ90j9TUVxiHMlVIwU_l36mbR9MS0cUosfTMUAX8ZfGVGyEshLJO_4h9Ge3WsPEFiKh4veWB73bVc2Yap-ua9YgXQZrXEX59Hgyk-sHtYkd4GBpJm_sMMU7PMIdXrfoN7xOHIqxatvueiLuenbmRaEntfWa61H1-7W45kQs-_EKfZR5hVi8pEfY1nxLASV6aees8_Dm9rAVHJu9OUlEjx99hWBpT_8_NaVW2XVzfuHmumjNScRHpq4wmW1wuzBI5JEL_f_bZi-JbG9RidxlfaHhyaQVOFq08gZ6m-mw", - "e": "AAEAAQ" - }, - "attributes": { - "enabled": true, - "created": 1653348628, - "updated": 1653348628, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true + "error": { + "code": "KeyNotFound", + "message": "Deleted Key not found: key1533221169" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185?api-version=7.3", + "RequestUri": "https://fakevault/deletedkeys/key1533221169?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", @@ -207,66 +180,98 @@ "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 404, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "84", + "Content-Length": "530", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:29 GMT", + "Date": "Mon, 27 Jun 2022 19:01:02 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=2;da_age=1915;rd_age=1915;brd_age=12996;ra_notif_age=196;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=99;da_age=6544;rd_age=6544;brd_age=23031;ra_notif_age=389;dec_lev=0;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "4b54b09f-2e49-4d0f-bfbd-68048e519c57" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "11f2e494-5d7d-45e7-b06f-e0bf332b8ebb" }, "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: immuta3226834185" + "recoveryId": "https://fakevault/deletedkeys/key1533221169", + "deletedDate": 1656356452, + "scheduledPurgeDate": 1656961252, + "key": { + "kid": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d", + "kty": "EC", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256", + "x": "lvTk4GJey8crDLlPc4fSThom3mDpv9qNEIhc8ivNAOc", + "y": "ZykAB0Q7KT3Ke6cOF_zuD6TN0UnG7PwNKjrGX1s3P7k" + }, + "attributes": { + "enabled": true, + "created": 1656356451, + "updated": 1656356451, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakevault/deletedkeys/key1533221169/recover?api-version=7.3", + "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", + "Content-Length": "0", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 404, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "84", + "Content-Length": "398", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:31 GMT", + "Date": "Mon, 27 Jun 2022 19:01:02 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=3;da_age=1916;rd_age=1916;brd_age=12997;ra_notif_age=197;dec_lev=0;", + "x-ms-keyvault-rbac-cache": "ra_age=100;da_age=6544;rd_age=6544;brd_age=23031;ra_notif_age=390;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0a86676f-c773-48fc-879a-ad9c470621a5" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "88273b0a-f7d0-467f-9f3c-8ba3a10f8a59" }, "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: immuta3226834185" + "key": { + "kid": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d", + "kty": "EC", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256", + "x": "lvTk4GJey8crDLlPc4fSThom3mDpv9qNEIhc8ivNAOc", + "y": "ZykAB0Q7KT3Ke6cOF_zuD6TN0UnG7PwNKjrGX1s3P7k" + }, + "attributes": { + "enabled": true, + "created": 1656356451, + "updated": 1656356451, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185?api-version=7.3", + "RequestUri": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", @@ -278,29 +283,29 @@ "StatusCode": 404, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "84", + "Content-Length": "334", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:32 GMT", + "Date": "Mon, 27 Jun 2022 19:01:03 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=4;da_age=1917;rd_age=1917;brd_age=12998;ra_notif_age=198;dec_lev=0;", + "x-ms-keyvault-rbac-cache": "ra_age=100;da_age=6545;rd_age=6545;brd_age=23032;ra_notif_age=390;dec_lev=0;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1071c80c-3c6b-4bf6-9b8d-de489f39b69c" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f475092c-0a55-4542-97c3-bee9f4a9b328" }, "ResponseBody": { "error": { "code": "KeyNotFound", - "message": "Deleted Key not found: immuta3226834185" + "message": "A key with (name/id) key1533221169/df4f492173004ebca0b91cc2a4baa32d was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185?api-version=7.3", + "RequestUri": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", @@ -312,46 +317,43 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "811", + "Content-Length": "398", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 23 May 2022 23:30:33 GMT", + "Date": "Mon, 27 Jun 2022 19:01:13 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=1918;rd_age=1918;brd_age=12999;ra_notif_age=199;dec_lev=0;", + "x-ms-keyvault-rbac-cache": "ra_age=110;da_age=6555;rd_age=6555;brd_age=23042;ra_notif_age=400;dec_lev=0;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "82f0daf7-d650-40be-a242-c87a48b0842a" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "5799b0ba-74cb-4572-8390-cf5c172040fa" }, "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185", - "deletedDate": 1653348630, - "scheduledPurgeDate": 1653953430, "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/immuta3226834185/db0e2cd1ab0442658ac141ee2a675b38", - "kty": "RSA-HSM", + "kid": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d", + "kty": "EC", "key_ops": [ - "encrypt", - "decrypt" + "sign", + "verify" ], - "n": "4kcSIhZYwzJ4HO71EWJvDaWmahqSazCKKVRReMwTm4pcCsYHZ90j9TUVxiHMlVIwU_l36mbR9MS0cUosfTMUAX8ZfGVGyEshLJO_4h9Ge3WsPEFiKh4veWB73bVc2Yap-ua9YgXQZrXEX59Hgyk-sHtYkd4GBpJm_sMMU7PMIdXrfoN7xOHIqxatvueiLuenbmRaEntfWa61H1-7W45kQs-_EKfZR5hVi8pEfY1nxLASV6aees8_Dm9rAVHJu9OUlEjx99hWBpT_8_NaVW2XVzfuHmumjNScRHpq4wmW1wuzBI5JEL_f_bZi-JbG9RidxlfaHhyaQVOFq08gZ6m-mw", - "e": "AAEAAQ" + "crv": "P-256", + "x": "lvTk4GJey8crDLlPc4fSThom3mDpv9qNEIhc8ivNAOc", + "y": "ZykAB0Q7KT3Ke6cOF_zuD6TN0UnG7PwNKjrGX1s3P7k" }, "attributes": { "enabled": true, - "created": 1653348628, - "updated": 1653348628, + "created": 1656356451, + "updated": 1656356451, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true + "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/immuta3226834185?api-version=7.3", + "RequestUri": "https://fakevault/keys/key1533221169?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -360,22 +362,46 @@ "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 204, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Date": "Mon, 23 May 2022 23:30:33 GMT", + "Content-Length": "530", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:13 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=6;da_age=1918;rd_age=1918;brd_age=12999;ra_notif_age=199;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=111;da_age=6555;rd_age=6555;brd_age=23042;ra_notif_age=400;dec_lev=0;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "81e134f8-1427-4bf4-af9b-dd438a1148ba" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f49853d5-9a97-4e4c-b93d-085ee69f23e9" }, - "ResponseBody": null + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/key1533221169", + "deletedDate": 1656356473, + "scheduledPurgeDate": 1656961273, + "key": { + "kid": "https://fakevault/keys/key1533221169/df4f492173004ebca0b91cc2a4baa32d", + "kty": "EC", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256", + "x": "lvTk4GJey8crDLlPc4fSThom3mDpv9qNEIhc8ivNAOc", + "y": "ZykAB0Q7KT3Ke6cOF_zuD6TN0UnG7PwNKjrGX1s3P7k" + }, + "attributes": { + "enabled": true, + "created": 1656356451, + "updated": 1656356451, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } } ], "Variables": {} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestCreateECKey/TestCreateECKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/MHSM.json similarity index 51% rename from sdk/keyvault/azkeys/testdata/recordings/TestCreateECKey/TestCreateECKey_HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/MHSM.json index 5209ce0f2a46..b17317eeab45 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestCreateECKey/TestCreateECKey_HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/MHSM.json @@ -1,14 +1,13 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1053998307/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/key2946000937/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { - ":method": "POST", "Accept": "application/json", "Accept-Encoding": "gzip", "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 401, @@ -18,25 +17,24 @@ "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "f5be9e46-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "0" + "x-ms-request-id": "84027074-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" }, "ResponseBody": null }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1053998307/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/key2946000937/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { - ":method": "POST", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", "Content-Length": "12", "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { "kty": "EC" @@ -44,25 +42,25 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "427", + "Content-Length": "426", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f6091d5e-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "278" + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "840aae60-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "313" }, "ResponseBody": { "attributes": { - "created": 1643132031, + "created": 1656356474, "enabled": true, "exportable": false, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132031 + "updated": 1656356474 }, "key": { "crv": "P-256", @@ -70,223 +68,254 @@ "verify", "sign" ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1053998307/b86c2e6ad9054f4abf69cc185b99aa60", + "kid": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d", "kty": "EC-HSM", - "x": "cQAMNqUMtkkZxa6qOHiPOGY5rkvz95889irT91q_u2o", - "y": "T-WX_P_7_ePFaZ6UfAzp-qIMEradOKaV0lEbFSLYutk" + "x": "fsjgR6oX7UFv_TxlrZ4Xwu-2rzBZiTDEtA5mgtJtHr8", + "y": "tvN29xQHlMyPWxt4mI37zUNz_UqLMXmx9CnKZ_lDV5M" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key%21@%23$/create?api-version=7.3", - "RequestMethod": "POST", + "RequestUri": "https://fakemhsm/keys/key2946000937?api-version=7.3", + "RequestMethod": "DELETE", "RequestHeaders": { - ":method": "POST", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "12", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "EC" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, - "StatusCode": 400, + "RequestBody": null, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "128", + "Content-Length": "563", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "f63e9826-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "1" + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "84518038-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "184" }, "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "Invalid key identifier or name (Activity ID: f63e9826-7e04-11ec-a044-000d3a731e50)" - } + "attributes": { + "created": 1656356474, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356474 + }, + "deletedDate": 1656356474, + "key": { + "crv": "P-256", + "key_ops": [ + "verify", + "sign" + ], + "kid": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d", + "kty": "EC-HSM", + "x": "fsjgR6oX7UFv_TxlrZ4Xwu-2rzBZiTDEtA5mgtJtHr8", + "y": "tvN29xQHlMyPWxt4mI37zUNz_UqLMXmx9CnKZ_lDV5M" + }, + "recoveryId": "https://fakemhsm/deletedkeys/key2946000937", + "scheduledPurgeDate": 1656961274 } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1053998307?api-version=7.3", - "RequestMethod": "DELETE", + "RequestUri": "https://fakemhsm/deletedkeys/key2946000937?api-version=7.3", + "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "565", + "Content-Length": "563", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f64a6412-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "146" + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "8480af66-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "29" }, "ResponseBody": { "attributes": { - "created": 1643132031, + "created": 1656356474, "enabled": true, "exportable": false, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132031 + "updated": 1656356474 }, - "deletedDate": 1643132032, + "deletedDate": 1656356474, "key": { "crv": "P-256", "key_ops": [ - "verify", - "sign" + "sign", + "verify" ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1053998307/b86c2e6ad9054f4abf69cc185b99aa60", + "kid": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d", "kty": "EC-HSM", - "x": "cQAMNqUMtkkZxa6qOHiPOGY5rkvz95889irT91q_u2o", - "y": "T-WX_P_7_ePFaZ6UfAzp-qIMEradOKaV0lEbFSLYutk" + "x": "fsjgR6oX7UFv_TxlrZ4Xwu-2rzBZiTDEtA5mgtJtHr8", + "y": "tvN29xQHlMyPWxt4mI37zUNz_UqLMXmx9CnKZ_lDV5M" }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1053998307", - "scheduledPurgeDate": 1643736832 + "recoveryId": "https://fakemhsm/deletedkeys/key2946000937", + "scheduledPurgeDate": 1656961274 } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1053998307?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakemhsm/deletedkeys/key2946000937/recover?api-version=7.3", + "RequestMethod": "POST", "RequestHeaders": { - ":method": "GET", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "565", + "Content-Length": "426", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f66b82f0-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "34" + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "848daafe-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "118" }, "ResponseBody": { "attributes": { - "created": 1643132031, + "created": 1656356474, "enabled": true, "exportable": false, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132031 + "updated": 1656356474 }, - "deletedDate": 1643132031, "key": { "crv": "P-256", "key_ops": [ "sign", "verify" ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1053998307/b86c2e6ad9054f4abf69cc185b99aa60", + "kid": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d", "kty": "EC-HSM", - "x": "cQAMNqUMtkkZxa6qOHiPOGY5rkvz95889irT91q_u2o", - "y": "T-WX_P_7_ePFaZ6UfAzp-qIMEradOKaV0lEbFSLYutk" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1053998307", - "scheduledPurgeDate": 1643736831 + "x": "fsjgR6oX7UFv_TxlrZ4Xwu-2rzBZiTDEtA5mgtJtHr8", + "y": "tvN29xQHlMyPWxt4mI37zUNz_UqLMXmx9CnKZ_lDV5M" + } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1053998307?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d?api-version=7.3", "RequestMethod": "GET", "RequestHeaders": { - ":method": "GET", "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "565", + "Content-Length": "426", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220117-1-eb2a1acb-1.0.20211206-1-be739728-develop", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f67ba4be-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "25" + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "84aecb94-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "15" }, "ResponseBody": { "attributes": { - "created": 1643132031, + "created": 1656356474, "enabled": true, "exportable": false, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1643132031 + "updated": 1656356474 }, - "deletedDate": 1643132031, "key": { "crv": "P-256", "key_ops": [ - "sign", - "verify" + "verify", + "sign" ], - "kid": "https://rosebudhsm.managedhsm.azure.net/keys/key1053998307/b86c2e6ad9054f4abf69cc185b99aa60", + "kid": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d", "kty": "EC-HSM", - "x": "cQAMNqUMtkkZxa6qOHiPOGY5rkvz95889irT91q_u2o", - "y": "T-WX_P_7_ePFaZ6UfAzp-qIMEradOKaV0lEbFSLYutk" - }, - "recoveryId": "https://rosebudhsm.managedhsm.azure.net/deletedkeys/key1053998307", - "scheduledPurgeDate": 1643736831 + "x": "fsjgR6oX7UFv_TxlrZ4Xwu-2rzBZiTDEtA5mgtJtHr8", + "y": "tvN29xQHlMyPWxt4mI37zUNz_UqLMXmx9CnKZ_lDV5M" + } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1053998307?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/key2946000937?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.3.0 azsdk-go-azcore/v0.21.0 (go1.17; Windows_NT)" + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 204, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "0", + "Content-Length": "563", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "f68a1968-7e04-11ec-a044-000d3a731e50", - "x-ms-server-latency": "109" + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "84b93278-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "73" }, - "ResponseBody": null + "ResponseBody": { + "attributes": { + "created": 1656356474, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356474 + }, + "deletedDate": 1656356475, + "key": { + "crv": "P-256", + "key_ops": [ + "verify", + "sign" + ], + "kid": "https://fakemhsm/keys/key2946000937/72048371586e45baa718a88e2dd9e70d", + "kty": "EC-HSM", + "x": "fsjgR6oX7UFv_TxlrZ4Xwu-2rzBZiTDEtA5mgtJtHr8", + "y": "tvN29xQHlMyPWxt4mI37zUNz_UqLMXmx9CnKZ_lDV5M" + }, + "recoveryId": "https://fakemhsm/deletedkeys/key2946000937", + "scheduledPurgeDate": 1656961275 + } } ], "Variables": {} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/TestRecoverDeletedKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/TestRecoverDeletedKey_HSM.json deleted file mode 100644 index 233742386e38..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/TestRecoverDeletedKey_HSM.json +++ /dev/null @@ -1,720 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "c4d37028-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "717", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c4fca43e-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "220" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c525cd14-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "150" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892491, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497291 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c54452c0-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "34" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892491, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497291 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c551581c-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "30" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892491, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497291 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c55da356-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "31" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892491, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497291 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179/recover?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "717", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c569fc46-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "121" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "717", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c584ac9e-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "1" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "717", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c58c74e2-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "0" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "717", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c5946cf6-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "1" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/INVALIDKEYNAME/recover?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "179", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "c59c31a2-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "27" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: https://seankanehsm.managedhsm.azure.net/deletedkeys/INVALIDKEYNAME (Activity ID: c59c31a2-a950-11ec-8238-000d3aed998e)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key1649980179?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c5a7e2fe-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "80" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892492, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497292 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c5bc45aa-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "29" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892492, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497292 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "856", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220305-2-902fedaa-closebadconnections", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c5c8f598-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "33" - }, - "ResponseBody": { - "attributes": { - "created": 1647892490, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1647892490 - }, - "deletedDate": 1647892492, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://seankanehsm.managedhsm.azure.net/keys/key1649980179/dab7a8b1f6b30e9d26236c2db174a7f1", - "kty": "RSA-HSM", - "n": "r1XEXYSpA2_iihJO3UO0BBAuc9EPE2bJKCBNQYxz17cc_tbVOwN48zgSzOsTT6XUtLb2_BDD_YQMDNN5reyhOR3SNIoLsYJ1fOmKTfPFaOvZTHk3r53dwVr_EWxoPsiAotASw7Dhh-r77SGjqOl4xGv9Dtk2gaFd1HqT1H6DFYVURespjUJtDHlFH4gGpHVDMb-fbwroPEFZeY3k10xqiszJjTsaZYjA4G6uzAsVNoq6q3o5oi9Pnst5Ut5UkrL-4CLTCouLmppG6DB167ulnRFeO4F3tLk1TaD85fKXRrtYZ_alKJDz-M98GIxp81SZwX5nx5Z7VbMyfs-KkP6VBw" - }, - "recoveryId": "https://seankanehsm.managedhsm.azure.net/deletedkeys/key1649980179", - "scheduledPurgeDate": 1648497292 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key1649980179?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-generated/v0.4.1 azsdk-go-azcore/v0.22.0 (go1.17; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=72.49.29.93;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "southcentralus", - "x-ms-request-id": "c5d60134-a950-11ec-8238-000d3aed998e", - "x-ms-server-latency": "117" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/TestRecoverDeletedKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/TestRecoverDeletedKey_NON-HSM.json deleted file mode 100644 index c0e1bd9539ec..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestRecoverDeletedKey/TestRecoverDeletedKey_NON-HSM.json +++ /dev/null @@ -1,693 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:13 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "8ceac389-61d6-4cb8-992b-f1a3a356212b" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:14 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=93;da_age=1405;rd_age=4599;brd_age=14434;ra_notif_age=580;da_notif_age=1930;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "293f2f44-c1e2-4225-b899-e44da2e16e25" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:14 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=94;da_age=1405;rd_age=4599;brd_age=14434;ra_notif_age=580;da_notif_age=1930;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c59a3327-1df6-428b-b35c-64142994ef58" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465", - "deletedDate": 1652819054, - "scheduledPurgeDate": 1653423854, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "80", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:14 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=94;da_age=1405;rd_age=4600;brd_age=14434;ra_notif_age=580;da_notif_age=1931;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "7b1c0e37-cab0-41f6-96a3-890fc963b4ab" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key108732465" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:15 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=95;da_age=1407;rd_age=4601;brd_age=14435;ra_notif_age=581;da_notif_age=1932;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b7e26a75-a967-4fdd-885b-2d3767eccf6e" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465", - "deletedDate": 1652819054, - "scheduledPurgeDate": 1653423854, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:15 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=95;da_age=1407;rd_age=4601;brd_age=14435;ra_notif_age=581;da_notif_age=1932;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "62a3d20b-69d3-4e48-be05-fb1d3fc62314" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465", - "deletedDate": 1652819054, - "scheduledPurgeDate": 1653423854, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465/recover?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:15 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=95;da_age=1407;rd_age=4601;brd_age=14436;ra_notif_age=582;da_notif_age=1932;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ea56f525-c10f-47fe-9fc3-ce4af5722f3a" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "300", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:15 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=95;da_age=1407;rd_age=4601;brd_age=14436;ra_notif_age=582;da_notif_age=1932;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "928803b4-ac16-4c52-98f9-f73116fa5ac1" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) key108732465 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:16 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=97;da_age=1408;rd_age=4602;brd_age=14437;ra_notif_age=583;da_notif_age=1933;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "031f5fcc-7505-4d1d-9eee-6a81bba19e87" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465/?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "686", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:16 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=97;da_age=1408;rd_age=4602;brd_age=14437;ra_notif_age=583;da_notif_age=1933;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3adb99de-c9c5-4687-82a4-9e90b73623d3" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/INVALIDKEYNAME/recover?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "302", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:16 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=97;da_age=1408;rd_age=4603;brd_age=14437;ra_notif_age=583;da_notif_age=1934;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "19c4f776-6ee3-48e7-a7cb-3d0ebf081337" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) INVALIDKEYNAME was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key108732465?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:17 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=97;da_age=1408;rd_age=4603;brd_age=14437;ra_notif_age=583;da_notif_age=1934;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6d30c572-9f1a-47dd-8cde-0b1780fc3bf6" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465", - "deletedDate": 1652819057, - "scheduledPurgeDate": 1653423857, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "80", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:17 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=97;da_age=1409;rd_age=4603;brd_age=14437;ra_notif_age=583;da_notif_age=1934;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "41c53d8b-6b6b-4311-a1d0-767b95c6bfe2" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key108732465" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "817", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:18 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=98;da_age=1410;rd_age=4604;brd_age=14439;ra_notif_age=584;da_notif_age=1935;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9555f8b9-5acc-4f65-ae01-6bbb179326a2" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465", - "deletedDate": 1652819057, - "scheduledPurgeDate": 1653423857, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key108732465/2244d7b122b64ecb8934dcfd0a48aa50", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "wZzhRUFdhwh5Mrra_MwkksgoLJoBPn0puod0RcFLSEZgt6lyRe0X_XFcqpqYdU4MFHGOs7yYoyxQAjXbIhnh6TL3aqLHek8zJWEAp0Qjaqwwhb1qopT954vJKpf96U0K5zrBKYkwfRC01MKWxDfxL1Y0SH9Bt_WSoTaUDMXbi9yGeyyJWRB-39JeXso0G9MOZO5_e944LXMq7IYa0QVrAdtRfHAshYJeffj4kVVVb2P6YV4MqBKfThTC_HpmKQDBSdnBBMx1ZcDlwO-i9zgoSBwztNnXSlAz7lusoNSP24Dr6ZWIbO0TCX3Bhthk3b9a-HqI7vGgKjfVMQakKS3Z5Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819054, - "updated": 1652819054, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key108732465?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:24:18 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=98;da_age=1410;rd_age=4604;brd_age=14439;ra_notif_age=585;da_notif_age=1935;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "809e38b3-4342-42d4-99ff-58f840d3135e" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/KV.json new file mode 100644 index 000000000000..b49955810691 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/KV.json @@ -0,0 +1,211 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/testreleasekey2353464635/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:15 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "cc4098ee-16bb-4237-a4c5-84632640a9c7" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/testreleasekey2353464635/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "265", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "attributes": { + "exportable": true + }, + "crv": "P-256K", + "kty": "EC-HSM", + "release_policy": { + "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0", + "immutable": true + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "706", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:17 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=112;da_age=6557;rd_age=6557;brd_age=23044;ra_notif_age=402;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "ffb825e0-9660-469a-8e9f-e1d5e452f6da" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/testreleasekey2353464635/4907cabe966c4cc1899314b55303cbd2", + "kty": "EC-HSM", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256K", + "x": "e6-6rePvUNGinU6TY8yXwTQLPY1hAkm2VWBCH6LJcro", + "y": "5uB7hMOt8Q_Dm10BLNYnStUIkRw9UDCMKlqXN7eULxQ" + }, + "attributes": { + "enabled": true, + "created": 1656356475, + "updated": 1656356475, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7, + "exportable": true + }, + "release_policy": { + "contentType": "application/json; charset=utf-8", + "data": "eyJ2ZXJzaW9uIjoiMS4wLjAiLCJhbnlPZiI6W3siYXV0aG9yaXR5IjoiaHR0cHM6Ly9jaGxvd2VhemtleXNzaXRlLmF6dXJld2Vic2l0ZXMubmV0IiwiYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dfV19", + "immutable": true + } + } + }, + { + "RequestUri": "https://fakeattestation/generate-test-token", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "User-Agent": "Go-http-client/1.1" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "20", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:18 GMT", + "ETag": "W/\u0022502-w7AKoa1z42VrLvEsZo7HOdajwBQ\u0022", + "X-Powered-By": "Express" + }, + "ResponseBody": { + "token": "redacted" + } + }, + { + "RequestUri": "https://fakevault/keys/testreleasekey2353464635//release?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "21", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "target": "redacted" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "10996", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:20 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=116;da_age=6560;rd_age=6560;brd_age=23048;ra_notif_age=406;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "24fbba01-e7d1-49ab-8786-a6b8e4d4b9cd" + }, + "ResponseBody": { + "value": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkU1MEM3RTBDN0M1NTUwQTAwRjYwMTg1MTNDNUJEOTBEMDg5QUQ1MjgiLCJ4NXQiOiI1UXgtREh4VlVLQVBZQmhSUEZ2WkRRaWExU2ciLCJ0eXAiOiJKV1QiLCJ4NXQjUzI1NiI6IkYweTBHYlBJSDQ3dlNGWV90VXFnOTlRMUdnMDkyZEs1bTdqb29jSTJHY28iLCJ4NWMiOlsiTUlJSU16Q0NCaHVnQXdJQkFnSVRFZ0F0VWtFMXF0OStTMG1ZdHdBQUFDMVNRVEFOQmdrcWhraUc5dzBCQVFzRkFEQlBNUXN3Q1FZRFZRUUdFd0pWVXpFZU1Cd0dBMVVFQ2hNVlRXbGpjbTl6YjJaMElFTnZjbkJ2Y21GMGFXOXVNU0F3SGdZRFZRUURFeGROYVdOeWIzTnZablFnVWxOQklGUk1VeUJEUVNBd01UQWVGdzB5TWpBMk1Ua3hNakF4TlRaYUZ3MHlNekEyTVRreE1qQXhOVFphTUJveEdEQVdCZ05WQkFNVEQzWmhkV3gwTG1GNmRYSmxMbTVsZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWM3TzNWNGlldFFUYzRRZmhZVmY2anhHcEVZMnpqUWRiMXlqOFBkTG1zQkV1R2RjMWhtZkZyamlTUEhyZUhxeWFIbHBoQVhNU1NDRDJMaGM2cEhSSi9XTkNXVEljMythR3hXc2NRaUl2aks1eW5JTUQ3RVZ4aFQ2SDZnV05hQVBjL01iV1dBMHVZczdvMDlxdWRkeVhTQ25rZUdXUjdJMGthUEJSYnc5YWg4QzEzcjk5ZVJrelY5MkhFSjZiQnhoSEVLSTZTYmsrdm1RZGIrUDI5OGRmWkNCRCtHUzZhU0VGYVQ5YXdlMXp0c1M5NDV5Z1N2dmVZMTIwU1JLUXlzY2NHQWdyWElWQjNyMnJHOG9LQmFKc25PVVVJV3hEZENVSkNvYmlQTENnaFZRdmlHZnR6QVFESUpIUHNkaFZ5UVhmcVQ0bFYzS0loenNtUTM2blhHSjZVQ0F3RUFBYU9DQkRzd2dnUTNNSUlCZndZS0t3WUJCQUhXZVFJRUFnU0NBVzhFZ2dGckFXa0FkZ0RvUHREYVB2VUdOVExuVnlpOGlXdkpBOVBMMFJGcjdPdHA0WGQ5YlFhOWJnQUFBWUY3NElZUUFBQUVBd0JITUVVQ0lCUG96TFFHU09Wdm5uaUpCTjV2cHBISDRRVXZ5ZVl6amV2MVFpZWN0cWNiQWlFQThHTjJHNDExVjhwR1pVVVVOUHRKalJhaktvemxMRHg4RG9EUk9hRkJSY3dBZGdDemMzY0g0WVJRK0dPRzFnV3AzQkVKU25rdHNXY01DNGZjOEFNT2VUYWxtZ0FBQVlGNzRJWkdBQUFFQXdCSE1FVUNJUUNqM0ZlSFN4VllvTHlGNVFsNzR5dEJ4b012ZmkwUjh1NHNlQnpxczBjWWVnSWdmUEpaaDBNTHgyKzV2SC9vY2tkN0NDUnIwKzRRdDdxQnlmbkgwcWtoUzJzQWR3QjZNb3hVMkxjdHRpRHFPT0JTSHVtRUZuQXlFNFZOTzlJcndUcFhvMUxyVWdBQUFZRjc0SVZjQUFBRUF3QklNRVlDSVFESnVsNyt1My91RXZxVC9LNHQ0UTNLNzk0Q2RZd0Z3VDNYTlE5YjdhZWdlQUloQUxMVFNDbU9mMjZMVWtYbVROMHVjaDJIZGVseFdTV0dmZFhvc3N5L0p3akZNQ2NHQ1NzR0FRUUJnamNWQ2dRYU1CZ3dDZ1lJS3dZQkJRVUhBd0V3Q2dZSUt3WUJCUVVIQXdJd1BnWUpLd1lCQkFHQ054VUhCREV3THdZbkt3WUJCQUdDTnhVSWg5cUdkWVB1MlFHQ3lZVWJnYldlWVlYMDYyQ0JYWVdHamtHSHdwaFFBZ0ZrQWdFbk1JR0hCZ2dyQmdFRkJRY0JBUVI3TUhrd1V3WUlLd1lCQlFVSE1BS0dSMmgwZEhBNkx5OTNkM2N1YldsamNtOXpiMlowTG1OdmJTOXdhMmt2YlhOamIzSndMMDFwWTNKdmMyOW1kQ1V5TUZKVFFTVXlNRlJNVXlVeU1FTkJKVEl3TURFdVkzSjBNQ0lHQ0NzR0FRVUZCekFCaGhab2RIUndPaTh2YjJOemNDNXRjMjlqYzNBdVkyOXRNQjBHQTFVZERnUVdCQlNTRktJekx5eEJ6R0p2Rm5welowM2c1VWRyNnpBT0JnTlZIUThCQWY4RUJBTUNCTEF3UkFZRFZSMFJCRDB3TzRJUGRtRjFiSFF1WVhwMWNtVXVibVYwZ2hFcUxuWmhkV3gwTG1GNmRYSmxMbTVsZElJVktpNTJZWFZzZEdOdmNtVXVZWHAxY21VdWJtVjBNSUd3QmdOVkhSOEVnYWd3Z2FVd2dhS2dnWitnZ1p5R1RXaDBkSEE2THk5dGMyTnliQzV0YVdOeWIzTnZablF1WTI5dEwzQnJhUzl0YzJOdmNuQXZZM0pzTDAxcFkzSnZjMjltZENVeU1GSlRRU1V5TUZSTVV5VXlNRU5CSlRJd01ERXVZM0pzaGt0b2RIUndPaTh2WTNKc0xtMXBZM0p2YzI5bWRDNWpiMjB2Y0d0cEwyMXpZMjl5Y0M5amNtd3ZUV2xqY205emIyWjBKVEl3VWxOQkpUSXdWRXhUSlRJd1EwRWxNakF3TVM1amNtd3dWd1lEVlIwZ0JGQXdUakJDQmdrckJnRUVBWUkzS2dFd05UQXpCZ2dyQmdFRkJRY0NBUlluYUhSMGNEb3ZMM2QzZHk1dGFXTnliM052Wm5RdVkyOXRMM0JyYVM5dGMyTnZjbkF2WTNCek1BZ0dCbWVCREFFQ0FUQWZCZ05WSFNNRUdEQVdnQlMxZGd3d0VjN0hra0pOVE1kY0xNaXBET2dMWkRBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFVSEF3SXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBSUgrbnYxZjI2UlJ1WUUwNGFBQlI4S0lPL1luTWQ5ZTc2am1uVkRVY1hYbytaL053TmtWVnNZVWZhRU1QVEp0U2lVQnlPYiszdEwvU0djUE93L25nWVp2ZXVveHM4NUZRRmVEb0YyNktxRFlmeWNMU2tWc3FOZ0grb3YvRGd3VFNVd1l2bktyU2pGQ3d3ZFRPeExBUG9FSDMzcDhoblptaTR2bFRCOW5OWUJaVkl3U3hmeE1oeHo4Wm9tdTFFM3NRL3ZZaWdiY2JJeEkxSHlPWCtYMkJsc3JsL1FsUitoN2dSUnlQVy93YXJINlJxV1RKZ2U2K1FUVW5EMXkzcDRiTC8vUGdNc0dlYzZwRUIwbVUzM3VTZG1iMU13MS9CcGEzY3ZDV3J3MTk3Ti9kOStpTEo3dnNoNWRRVjZNOFUxT2ZqMnJ3OGNJZU0vTUdjcDF4M0xBNDhZdVJRRkdheVJqUDFWYTBUaXNodGVmd2U5dzZXZG1oK0RlMVVTTEFlQzVFTjg3eXE4dkZlK1hpZmMwcy95b2x5bkRkaEhoYkVaRmlIOTlSb3V4VmloRVBiQzkrdGF3bWNNQ1BNUTByaTNBaURYV1pUYzZTR0pRblhWR2haL0RDVlhxZEZya2p0NmsrV1dVRThMNVJMamZVU3lwQ0pPWXpzMW0wQWs0RDhQajlxbUEwb2V4ZHUxNU9wNXlXWWFBbEhPMXJlMHJSUHFtOFAvaFplZ0YvUDhNUXZmZk9hbzBEdXlpK3A4SmxpM3cySnFHWXZ1UlFIck5FbWpQSGhJL05ZNm5aYnJQcWhYVGNOVXZxZXZjSTNBQjBrb2hldDJ5WS9CaVNoK2dkRm1GVGZwV0V3K0NUYW9HYXZoK2ZMTXNYbXNMdmNieGhkbFE5QmZVSWVPczRtL2oiLCJNSUlGV2pDQ0JFS2dBd0lCQWdJUUR4U1dYeUFnYVpsUDFjZXNlSWxCNGpBTkJna3Foa2lHOXcwQkFRc0ZBREJhTVFzd0NRWURWUVFHRXdKSlJURVNNQkFHQTFVRUNoTUpRbUZzZEdsdGIzSmxNUk13RVFZRFZRUUxFd3BEZVdKbGNsUnlkWE4wTVNJd0lBWURWUVFERXhsQ1lXeDBhVzF2Y21VZ1EzbGlaWEpVY25WemRDQlNiMjkwTUI0WERUSXdNRGN5TVRJek1EQXdNRm9YRFRJME1UQXdPREEzTURBd01Gb3dUekVMTUFrR0ExVUVCaE1DVlZNeEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakVnTUI0R0ExVUVBeE1YVFdsamNtOXpiMlowSUZKVFFTQlVURk1nUTBFZ01ERXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDcVluZlBtbU95Qm9UemtEYjBtZk1VVWF2cWxRbzdSZ2I5RVVFZi9sc0dXTWs0YmdqOFQwUkl6VHFrOTcwZW91S1Z1TDVSSU1XL3NuQmpYWGdNUThBcHpXUkpDWmJhcjg3OUJWOHJLcEhvQVc0dUdKc3NuTkFCZjJuMTdqOVRpRnk2Qld5K0loVm5GSUx5TE5LK1cyTTN6SzlnaGVpV2EydUFDS2h1dmdDY2E1VncvT1FZRXJFZEc3TEJFekZuTXpUbUpjbGlXMWlDZFhieS92SS9PeGJmcWtLRDR6SnRtNDVESnZDOURoK2hwenF2TE1pSzV1by8rYVhTSlkrU3Fob0lFcHorckVySHcrdUFsS3VIRnRFalNlZWt1OGVSMytaNU5EOUJTcWM2SnRMcWIwYmpPSFBtNWRTUnJndDRubmlsNzViamM5ajNsV1hwQmI5UFhQOVNwL25QQ0srblRRbVp3SEdqVW5xbE85ZWJBVlFENDdaaXNGb25uREFtanJaTlZxRVhGM3A3bGFFSHJGTXh0dFl1RDgxQmRPenhBYkw5UmIvOE1lRkdRakUyUXg2NXFnVmZoSCtSc1l1dUQ5ZFV3LzN3WkFocTA1eU82bmswN0FNOWMrQWJOdFJvRWNkWmNMQ0hmTURjYmtYS05zNURKbmNDcVhBTjZMaFhWRVJDdy91c0cyTW1DTUxTSXg5L2t3dDhid2hVbWl0T1hjNmZwVDdTbUZ2UkF0dnhnODR3VWtnNFkvR3grKzBqMHo2U3RTZU4wRUp6MTUwamFIRzZXVjRIVXFhV1RiOThUbTkwSWdYQVU0QVcyR0JPbHpGUGlVNUlZOWp0K2VYQzJRNnlDL1pwVEwxTEFjbkwzUWEvT2dMckhOMHdpdzFLRkdENTFXUlBRMFNoN1FJREFRQUJvNElCSlRDQ0FTRXdIUVlEVlIwT0JCWUVGTFYyRERBUnpzZVNRazFNeDF3c3lLa002QXRrTUI4R0ExVWRJd1FZTUJhQUZPV2RXVENDUjFqTXJQb0lWRGFHZXpxMUJFM3dNQTRHQTFVZER3RUIvd1FFQXdJQmhqQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBUVlJS3dZQkJRVUhBd0l3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBMEJnZ3JCZ0VGQlFjQkFRUW9NQ1l3SkFZSUt3WUJCUVVITUFHR0dHaDBkSEE2THk5dlkzTndMbVJwWjJsalpYSjBMbU52YlRBNkJnTlZIUjhFTXpBeE1DK2dMYUFyaGlsb2RIUndPaTh2WTNKc015NWthV2RwWTJWeWRDNWpiMjB2VDIxdWFYSnZiM1F5TURJMUxtTnliREFxQmdOVkhTQUVJekFoTUFnR0JtZUJEQUVDQVRBSUJnWm5nUXdCQWdJd0N3WUpLd1lCQkFHQ055b0JNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNmSzc2U1oxdmFlNHF0NlArZFRRVU83YllORlVIUjVoWGNBMkQ1OUNKV25FajVuYTdhS3p5b3dLdlF1cFc0eU1IOWZHTnh0c2g2aUpzd1JxT09mWllDNC9naUJPL2dOc0J2d3I4dURXN3QxbllvRFlHSFBwdm5weENNMm1ZZlFGSHE1NzYvVG1lWXUxUlpZMjlDNHc4eFlCbGtBQThtREpmUmhNQ21laGs3Y041Rkp0eVdSajJjWmovaE9vSTQ1VFlEQkNoWHBPbExaS0lZaUcxZ2lZMTZ2aENSaTZ6bVB6RXd2K3RrMTU2TjZjR1NWbTQ0alRRL3JzMXNhMEpTWWp6VWFZbmdvRmRaQzRPZnhuSWtRdlVJQTRUT0ZtUHpOUEVGZGpjWnNnYmVFejRUY0dIVEJQSzRSMjhGNDRxSU1DdEhSVjU1Vk1YNTNldjZQM2hSZGRKYiIsIk1JSURkekNDQWwrZ0F3SUJBZ0lFQWdBQXVUQU5CZ2txaGtpRzl3MEJBUVVGQURCYU1Rc3dDUVlEVlFRR0V3SkpSVEVTTUJBR0ExVUVDaE1KUW1Gc2RHbHRiM0psTVJNd0VRWURWUVFMRXdwRGVXSmxjbFJ5ZFhOME1TSXdJQVlEVlFRREV4bENZV3gwYVcxdmNtVWdRM2xpWlhKVWNuVnpkQ0JTYjI5ME1CNFhEVEF3TURVeE1qRTRORFl3TUZvWERUSTFNRFV4TWpJek5Ua3dNRm93V2pFTE1Ba0dBMVVFQmhNQ1NVVXhFakFRQmdOVkJBb1RDVUpoYkhScGJXOXlaVEVUTUJFR0ExVUVDeE1LUTNsaVpYSlVjblZ6ZERFaU1DQUdBMVVFQXhNWlFtRnNkR2x0YjNKbElFTjVZbVZ5VkhKMWMzUWdVbTl2ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS01FdXlLcm1EMVg2Q1p5bXJWNTFDbmk0ZWlWZ0xHdzQxdU9LeW1hWk4raFhlMndDUVZ0MnlndXptS2lZdjYwaU5vUzZ6anJJWjNBUVNzQlVudUlkOU1jajhlNnVZaTFhZ25uYytnUlFLZlJ6TXBpalMzbGp3dW1VTktvVU1NbzZ2V3JKWWVLbXBZY3FXZTRQd3pWOS9sU0V5L0NHOVZ3Y1BDUHdCTEtCc3VhNGRuS00zcDMxdmpzdWZGb1JFSklFOUxBd3FTdVhtRCt0cVlGL0xUZEIxa0MxRmtZbUdQMXBXUGdrQXg5WGJJR2V2T0Y2dXZVQTY1ZWhENWYveFh0YWJ6NU9UWnlkYzkzVWszenlaQXN1VDNseVNOVFB4OGttQ0ZjQjVrcHZjWTY3T2R1aGpwcmwzUmpNNzFvR0RId2VJMTJ2L3llamwwcWhxZE5rTnduR2prQ0F3RUFBYU5GTUVNd0hRWURWUjBPQkJZRUZPV2RXVENDUjFqTXJQb0lWRGFHZXpxMUJFM3dNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnRUdNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUNGREYyTzVHOVJhRUlGb04yN1R5Y2xoQU85OTJUOUxkY3c0NlFRRit2YUtTbTJlVDkyOWhrVEk3Z1FDdmxZcE5SaGNMMEVZV29TaWhmVkNyM0Z2REI4MXVrTUpZMkdRRS9zektOK09NWTNFVS90M1dneGprelNzd0YwN3I1MVhnZElHbjl3L3haY2hNQjVoYmdGL1grK1pSR2pEOEFDdFBoU056a0UxYWt4ZWhpL29DcjBFcG4zbzBXQzR6eGU5WjJldGNpZWZDN0lwSjVPQ0JSTGJmMXdiV3NhWTcxazVoKzN6dkR5bnk2N0c3ZnlVSWh6a3NMaTR4YU5taklDcTQ0WTNla1FFZTUrTmF1UXJ6NHdsSHJRTXoyblpRLzEvSTZlWXM5SFJDd0JYYnNkdFRMU1I5STRMdEQrZ2R3eWFoNjE3anpWL09lQkhSbkRKRUxxWXptcCJdfQ.eyJyZXF1ZXN0Ijp7ImFwaS12ZXJzaW9uIjoiNy4zIiwiZW5jIjoiQ0tNX1JTQV9BRVNfS0VZX1dSQVAiLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5cy52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0cmVsZWFzZWtleTIzNTM0NjQ2MzUifSwicmVzcG9uc2UiOnsia2V5Ijp7ImtleSI6eyJraWQiOiJodHRwczovL2NobG93ZWF6a2V5cy52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0cmVsZWFzZWtleTIzNTM0NjQ2MzUvNDkwN2NhYmU5NjZjNGNjMTg5OTMxNGI1NTMwM2NiZDIiLCJrdHkiOiJFQy1IU00iLCJrZXlfb3BzIjpbInNpZ24iLCJ2ZXJpZnkiXSwiY3J2IjoiUC0yNTZLIiwieCI6ImU2LTZyZVB2VU5HaW5VNlRZOHlYd1RRTFBZMWhBa20yVldCQ0g2TEpjcm8iLCJ5IjoiNXVCN2hNT3Q4UV9EbTEwQkxOWW5TdFVJa1J3OVVEQ01LbHFYTjdlVUx4USIsImtleV9oc20iOiJleUp6WTJobGJXRmZkbVZ5YzJsdmJpSTZJakV1TUNJc0ltaGxZV1JsY2lJNmV5SnJhV1FpT2lKbVlXdGxMWEpsYkdWaGMyVXRhMlY1SWl3aVlXeG5Jam9pWkdseUlpd2laVzVqSWpvaVEwdE5YMUpUUVY5QlJWTmZTMFZaWDFkU1FWQWlmU3dpWTJsd2FHVnlkR1Y0ZENJNklsVmhNREZIVDNWUmEwZG9NV2cwYmxkckxTMU9NMWgxUmpoa05reGpTRlk0ZURkS1ZHdERhRGRST0U5TU1HcFRRVTl2VVdkek4xVlBVa056WTJ0blJXOUJZWEZYVlVWbVNWWmxORUZGU0hkM2Vrd3pNMVpEUnpOR1pGbHFjbTlUZUVaa09FWkNWbGg0V214M01FazBjVzh0U0hSYUxVZDJORmxwY2xaMVptZGpaelJSZVZoU2JEaEVUaTEzTmxZNFdXOXNSVVZyU2tjMmVVbEhlbWRzZDFSU01HdDJkRmc0Um5jeE1uWmpiMk5mVWtSd01HTkRNMkZqWkRWWVlUTkNXSE5ZWTBjMFRrSmlSWGRaY2tadWVVNVhSRGR2WTAxT1QxRk5TVGgyUkVOaVIzTXhReTFqWW5KT2R6VjRkMjU0VUhCSVNXWjBNRWQxTm5sVlIyUnpNWFZCWldGMFVsOXFlSE5DZDJJMWEyRm5SM0UyUXpaU2VYSjFNVVYyTUhOcE5uRmZNbGN5UjFWT1dXWjJkVU5UUTNJdFUzbDRhVGhHWmxKT1lXdHNWbWhSWkd4M2NFTlNVbTR4YUY5Sk5WUk9WalExYTJkbWJ6ZFBTMlpVWjJaWU1GVjJWVWxFUlZKZmFHWjVWVVJ0U3pGNmFEVjFWVTlpZVdnMFEyVk5jWEEzYWpsR1JsazBVM3A0ZVZOUFVtSjZaVGhqWWtwaE0zVkNURWRGTmtKQmJuWkhVMWR6ZURad1QydHpUM2t5VW0xNVJtcHNPV05vZFdWT2N6WnBjMVZmTUhOT00wdFZkR1pEWVZseGMyOXlTVmRsYWpOQ2RIQktWV2wzZVhGdWRtaDVkRVpvVFhGall6TnNXV3hmTWpGcGJtdHlaazl2TFY5eGJuSnVSVkJ3WkU5QmRYaFNlbVZLZFV0dFZtZExiV1JMTlVSR1EyaDFOVXRXV1cxNk1FZzNPRTFQVFVwNVltUjZUbFJmV0V3ek9UUmZhMVpaUXpaSVJHbFdUbVEzVDFoSVRXeDFSekYyU0ZkU2NGaDVhSFZ0YVdwc1VtRlhWbGhTVDJoMFZtVmZTSGg2T1d4Q2RXTldSVFZZVDFaNFQzbzVRMU5GUzBJelN6SktObU4wVWxkR1NuUnNPVU5rTFZwZlQxZDROSGR2ZWpoM2MwRmhWMlV5VFRaWFV6VjZkME5xYVRCQlJWbEtUemRWT1dWUGFrVXRaM2t6U2pZMVpFVTJNMjFFTlRGNFYwMXhZbXhvZUdFMFNWbHRhRGMxVVZaSE5XOURTVzVLUVZoV2RWaFJRMEZ3WVZVaWZRIn0sImF0dHJpYnV0ZXMiOnsiZW5hYmxlZCI6dHJ1ZSwiY3JlYXRlZCI6MTY1NjM1NjQ3NSwidXBkYXRlZCI6MTY1NjM1NjQ3NSwicmVjb3ZlcnlMZXZlbCI6IkN1c3RvbWl6ZWRSZWNvdmVyYWJsZStQdXJnZWFibGUiLCJyZWNvdmVyYWJsZURheXMiOjcsImV4cG9ydGFibGUiOnRydWV9LCJyZWxlYXNlX3BvbGljeSI6eyJkYXRhIjoiZXlKMlpYSnphVzl1SWpvaU1TNHdMakFpTENKaGJubFBaaUk2VzNzaVlYVjBhRzl5YVhSNUlqb2lhSFIwY0hNNkx5OWphR3h2ZDJWaGVtdGxlWE56YVhSbExtRjZkWEpsZDJWaWMybDBaWE11Ym1WMElpd2lZVzU1VDJZaU9sdDdJbU5zWVdsdElqb2ljMlJyTFhSbGMzUWlMQ0psY1hWaGJITWlPaUowY25WbEluMWRmVjE5IiwiaW1tdXRhYmxlIjp0cnVlfX19fQ.fUqEJWOCy7Fe9OkPdHyxuuiappM8A57s-z8ZcnNt04mLJ1ohbnpFk5NpAbABBBnd0_ZgeWbmWHArwmcT117NahRWDUKMqdi7xNe1LiGtAQxllKcofOOchSDfOUxoO1DtRDqM7BuBCAXTy77nlM7wS3_qDEPvlrJ00bu372hI7AasNLm90SkqJxwf5Bsi0aXd7dI6yDhY0LvLYafTGhNirU6KAK6oj8DYL1tkBtqYlzG4LeiAszj3ltSN4WDm7XTW7cu2FHUHjQAmIXe5kRtImbzzg8xJ7P8Iv9VCi4h-ccsXWH2XIPY_SmPDaPjyYXfhD5IAwFaQv7O-EIItZEUZRw" + } + }, + { + "RequestUri": "https://fakevault/keys/testreleasekey2353464635?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "575", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:21 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=118;da_age=6562;rd_age=6562;brd_age=23050;ra_notif_age=408;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "217886d4-cf29-473c-8688-aebee4cbc7c4" + }, + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testreleasekey2353464635", + "deletedDate": 1656356481, + "scheduledPurgeDate": 1656961281, + "key": { + "kid": "https://fakevault/keys/testreleasekey2353464635/4907cabe966c4cc1899314b55303cbd2", + "kty": "EC-HSM", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256K", + "x": "e6-6rePvUNGinU6TY8yXwTQLPY1hAkm2VWBCH6LJcro", + "y": "5uB7hMOt8Q_Dm10BLNYnStUIkRw9UDCMKlqXN7eULxQ" + }, + "attributes": { + "enabled": true, + "created": 1656356475, + "updated": 1656356475, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7, + "exportable": true + } + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/MHSM.json new file mode 100644 index 000000000000..0ac2a757b007 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/MHSM.json @@ -0,0 +1,199 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/testreleasekey2633194999/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "88730538-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "0" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/testreleasekey2633194999/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "265", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "attributes": { + "exportable": true + }, + "crv": "P-256K", + "kty": "EC-HSM", + "release_policy": { + "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0", + "immutable": true + } + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "713", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "887b842e-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1441" + }, + "ResponseBody": { + "attributes": { + "created": 1656356481, + "enabled": true, + "exportable": true, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356481 + }, + "key": { + "crv": "P-256K", + "key_ops": [ + "verify", + "sign" + ], + "kid": "https://fakemhsm/keys/testreleasekey2633194999/6997cf3d4fab4d5b961b424ecf92e63d", + "kty": "EC-HSM", + "x": "t2lQW1kR2jC1pIuhLTGfrBaWec7e-bKzl1FFyzUCTcM", + "y": "RlW0JH_GBubABJVJpRlUVq-k06huQIl0iOuuqyA6-PQ" + }, + "release_policy": { + "contentType": "application/json; charset=utf-8", + "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", + "immutable": true + } + } + }, + { + "RequestUri": "https://fakeattestation/generate-test-token", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept-Encoding": "gzip", + "User-Agent": "Go-http-client/1.1" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "20", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:23 GMT", + "ETag": "W/\u0022502-k2UdRMkxcPlX6Gxpk1nGowITyYk\u0022", + "X-Powered-By": "Express" + }, + "ResponseBody": { + "token": "redacted" + } + }, + { + "RequestUri": "https://fakemhsm/keys/testreleasekey2633194999//release?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "21", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "target": "redacted" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "11166", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "89c3ae92-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1255" + }, + "ResponseBody": { + "value": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImI2ODAxY2Y3LWFjZDItNDQyOC0yNzVmLTg3MmNiY2IxOTcwMSIsIng1YyI6WyJNSUlJcFRDQ0JvMmdBd0lCQWdJVE13QkNLQ1F1c25QeE80MGdkd0FBQUVJb0pEQU5CZ2txaGtpRzl3MEJBUXdGQURCWk1Rc3dDUVlEVlFRR0V3SlZVekVlTUJ3R0ExVUVDaE1WVFdsamNtOXpiMlowSUVOdmNuQnZjbUYwYVc5dU1Tb3dLQVlEVlFRREV5Rk5hV055YjNOdlpuUWdRWHAxY21VZ1ZFeFRJRWx6YzNWcGJtY2dRMEVnTURZd0hoY05Nakl3TmpJM01UWTFOVEE1V2hjTk1qTXdOakl5TVRZMU5UQTVXakI3TVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNCTUNWMEV4RURBT0JnTlZCQWNUQjFKbFpHMXZibVF4SGpBY0JnTlZCQW9URlUxcFkzSnZjMjltZENCRGIzSndiM0poZEdsdmJqRXRNQ3NHQTFVRUF4TWtZMmhzYjNkbFlYcHJaWGx6YUhOdExtMWhibUZuWldSb2MyMHVZWHAxY21VdWJtVjBNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXFvTVhJOVF5NWpxdTZLVkp4UCtZZEpKZW16dmdFRVowVTZabjNlYUREdkN3Q2luam9ranhnOW1RQjJseXRObHhKZzVUZmtkUXBpQnRuN1FHNDBtRHQrcmxZblZ4d1cxV05pZFJId1hXRWUrMFkyUnp4czhDSVhrUjhwZW53UVk3K1F5TXloM3VacTVORWRsdGgxOWJ1R1JwZjVodWJibEFhcmdkaXk3KzVvNnlUWEQ3Y00wanpkWGpOUndHYTVHd1dlMkNOYll4UEgyQUNENWw0dXYzdUVBMkJrUkdKWUdqckFVOGlPeG93cVBESnJKY25LeEZkbHFodWd6SkxCbFNiQk9vd3RSYWJYWm5qLzkxU1NRcWxTeEIxMjRWemdRWmxZeThyVVVHZC9tUFpyL1AraG1KS21mclFMNGFtM3VlSXFmcmdxditwQXBrWVA5SnE4dlJpd0lEQVFBQm80SUVRakNDQkQ0d2dnRitCZ29yQmdFRUFkWjVBZ1FDQklJQmJnU0NBV29CYUFCMkFPZyswTm8rOVFZMU11ZFhLTHlKYThrRDA4dlJFV3ZzNjJuaGQzMXRCcjF1QUFBQmdhWWZ5NlVBQUFRREFFY3dSUUloQU5YanZvWXp0MHBQUVdLTDEvNkFxQWxKb2xuRXhySFBWdkJOdjVJbVFXQ2hBaUFYV0x6SDBKQVpiZTlwemRvd3JDMkNEeXZheU54UWFjWHpsbUorQ2ozdHpnQjJBTE56ZHdmaGhGRDRZNGJXQmFuY0VRbEtlUzJ4Wnd3TGg5endBdzU1TnFXYUFBQUJnYVlmeStJQUFBUURBRWN3UlFJZ1E0cENmdVBzb0N3cUkwOHpMaC9WZVJ6Ym9xQ3RJZCtzQjc5T0tibGlEc2NDSVFESlRCajNPeGhWRm40QTRLWllYUTc4cHAzaFRva0ZBc2RuaW9jZjFZc0JaZ0IyQUszM3Z2cDgveERJaTUwOW5CNCtHR3EwWnlsZHo3RU1KTXFGaGpUcjNJS0tBQUFCZ2FZZnkzUUFBQVFEQUVjd1JRSWdiMTNpazd2SEgwMm13ZzNmV2VRNVpGYnVFUnl3UGhrejlqMVFGblhYREJZQ0lRRE02SVV2K1hZcStza2dhNFhxamo4NHBKY3Nzb0Q0eXBxRnh2dDUrZU82RGpBbkJna3JCZ0VFQVlJM0ZRb0VHakFZTUFvR0NDc0dBUVVGQndNQ01Bb0dDQ3NHQVFVRkJ3TUJNRHdHQ1NzR0FRUUJnamNWQndRdk1DMEdKU3NHQVFRQmdqY1ZDSWU5MXh1QjUrdEdnb0dkTG83UURJZncyaDFkZ29UbGFZTHpwejRDQVdRQ0FTVXdnYTRHQ0NzR0FRVUZCd0VCQklHaE1JR2VNRzBHQ0NzR0FRVUZCekFDaG1Gb2RIUndPaTh2ZDNkM0xtMXBZM0p2YzI5bWRDNWpiMjB2Y0d0cGIzQnpMMk5sY25SekwwMXBZM0p2YzI5bWRDVXlNRUY2ZFhKbEpUSXdWRXhUSlRJd1NYTnpkV2x1WnlVeU1FTkJKVEl3TURZbE1qQXRKVEl3ZUhOcFoyNHVZM0owTUMwR0NDc0dBUVVGQnpBQmhpRm9kSFJ3T2k4dmIyNWxiMk56Y0M1dGFXTnliM052Wm5RdVkyOXRMMjlqYzNBd0hRWURWUjBPQkJZRUZLT05CQkxDZUxtU05VTlVMS0ZNTW1VOUpHVEdNQTRHQTFVZER3RUIvd1FFQXdJRXNEQlhCZ05WSFJFRVVEQk9naVJqYUd4dmQyVmhlbXRsZVhOb2MyMHViV0Z1WVdkbFpHaHpiUzVoZW5WeVpTNXVaWFNDSmlvdVkyaHNiM2RsWVhwclpYbHphSE50TG0xaGJtRm5aV1JvYzIwdVlYcDFjbVV1Ym1WME1Bd0dBMVVkRXdFQi93UUNNQUF3WkFZRFZSMGZCRjB3V3pCWm9GZWdWWVpUYUhSMGNEb3ZMM2QzZHk1dGFXTnliM052Wm5RdVkyOXRMM0JyYVc5d2N5OWpjbXd2VFdsamNtOXpiMlowSlRJd1FYcDFjbVVsTWpCVVRGTWxNakJKYzNOMWFXNW5KVEl3UTBFbE1qQXdOaTVqY213d1pnWURWUjBnQkY4d1hUQlJCZ3dyQmdFRUFZSTNUSU45QVFFd1FUQS9CZ2dyQmdFRkJRY0NBUll6YUhSMGNEb3ZMM2QzZHk1dGFXTnliM052Wm5RdVkyOXRMM0JyYVc5d2N5OUViMk56TDFKbGNHOXphWFJ2Y25rdWFIUnRNQWdHQm1lQkRBRUNBakFmQmdOVkhTTUVHREFXZ0JUVndXYzZ3cU9kOUhkU1cxa1NPQ25tVldpN3BUQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd0V3RFFZSktvWklodmNOQVFFTUJRQURnZ0lCQUo3NkZHNHN6bU5QU003S0w0WHZ5V3M3a3lvRXdUSjFyR1F0T1poQ2FLcmVzVUpnQ1Y1RmZPOVdEN29ueGMwdTJOZDQrN0dVa1g2YkdJZUN1enl1OTBMQkY5ZFp1VXNOZVRNR0tQbUNyYytZcXBvODFUWkUwdUtPcjlhUWtUSGI4Rkd4QmJtUlV0bzh2bzVINVZOZHdhTHNWY0hQczBXWkdQemluZE41OTlRbmJIQlNPc1FBYzVVRU9IcUQvMHl5WS9tbWtMK1FkYzNKY1gvKzg3Wm5rbHl6K3JLOVBrM1Q2RXFIUU41THRGV2hHNkZzazNkK1lKcjk1UERVenBvK1FCUlhDbG5hTUdjeDhVNHFReGNOOW1zdVJkbTlYTlpNaTJZQk96cFlSQ2o5M3U1ZUxuaHM1SUlsYnVyRWVaY0RDYWp5RzV2U0NaQklrVFRtZGYxbUVNVzVieDNmTWhja01zNC9iUkg2NjVuR2MwL2lBb01IS1ZSc0dsOEQyQnlUQnFjQURtMmZnRjJOQ0xrN2lHUWdCTDdjMm5pcTMrU0tzTDRiTU0vZmpuZ3k0SDU0OU9ETlRtTWdHeklYWnNmMzU3M3FobnlYc1ZTNTAxSVN5QnVSYWVXbk1Pa21NUmZtOHR4K0FqU2xPRVltVXRYSndETmNSWXR4MUdEYUxrSUt2enhNNG5wSU52REpaQkhTWm9naE1IUzRKODgxbytRYTFPR0Z4L29SdVJ3M05kUi9qdjFxQWpUQ2hyWFBWOHdQRFpGY1c0LzFzUTYzdE9OSVlrZWlhMzB1TnhxN1FjS3BwYjJhMkdSYW9VYTUzQTZzbmRsREhsUjRuWitOcTdTS2Q2T1NPQjN0NEY4eVR3aUtqeHE1NDhLZW5lS3ZkNlQzTHBXVlMxZHNpd1pZIiwiTUlJRjh6Q0NCTnVnQXdJQkFnSVFBdWVSY2Z1QUllay80dG1EZzB4UXdEQU5CZ2txaGtpRzl3MEJBUXdGQURCaE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TQXdIZ1lEVlFRREV4ZEVhV2RwUTJWeWRDQkhiRzlpWVd3Z1VtOXZkQ0JITWpBZUZ3MHlNREEzTWpreE1qTXdNREJhRncweU5EQTJNamN5TXpVNU5UbGFNRmt4Q3pBSkJnTlZCQVlUQWxWVE1SNHdIQVlEVlFRS0V4Vk5hV055YjNOdlpuUWdRMjl5Y0c5eVlYUnBiMjR4S2pBb0JnTlZCQU1USVUxcFkzSnZjMjltZENCQmVuVnlaU0JVVEZNZ1NYTnpkV2x1WnlCRFFTQXdOakNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFMVkdBUmw1NmJ4M0tCVVNHdVBjNEg1dW9ORmtGSDRlN3B2VEN4Umk0ai8reitYYndqRXorNUNpcERPcWp4OS9qV2pza0w1ZGs3UGFRa3pJdGlkc0FBbkRDVzFsZVpCT0lpNjhMZmYxYmpUZVpnTVlpd2RSZDNZMzliL2xjR3BpdVAyZDIzVzk1WUhrTU1UOElsV29zWUlYMGY0a1liNjJycGh5Zm5BalliLzRPZDk5VGhuaGxBeEd0ZnZTYlhjQlZJS0NZZlpncVJ2Vis1bFJlVW5kMWFOalJZVnpQT29pZmdTeDJmUnl5MStwTzFVemFNTU5uSU9FNzFiVllXMEExaHIxOXc3a09iMEtrSlhvQUxURERqMXVrVUVEcVF1QmZCeFJlTDVtWGl1MU83V0cwdmx0ZzBWWi9TWnpjdEJzZEJseDFCa21XWUJXMjYxS1pnQml2cnFsNUVMVEtLZDhxZ3RIY0xRQTVmbDZKQjBRZ3M1WERhV2VoTjg2R3BzNUpXOEFyakd0amNXQUlQK1g4Q1FhV2ZhQ251Um02QmsvMDNQUVdoZ2RpODRxd0Ewc3NSZkZKd0hVUFROU25FOEVpR1ZrMmZydDB1OFBHMXB3U1FzRnVOSmZjWUlIRXYxdk96UDd1RU91RHlkc21DamhseHVvSzJuNS8yYVZSM0JNVHUrcDQrZ2w4YWxYb0J5Y3lMbWozSi9QVWdxRDhTTDVmVENVZWdHc2RpYS9TYTYwTjJvVjd2UTE3d2pNTitMWGEycmpqL2I0WmxaZ1hWb2pEbUFqRHdJUmREVXVqUXUwUlZzSnFGTE16U0lIcHAyQ1pwN21Jb0xyeVNheTJZWUJ1N1NpTndMOTVYNkhlMmtTOGVlZkJCSGp6d1cvOUZ4R3FyeTU3aTcxYzJjREFnTUJBQUdqZ2dHdE1JSUJxVEFkQmdOVkhRNEVGZ1FVMWNGbk9zS2puZlIzVWx0WkVqZ3A1bFZvdTZVd0h3WURWUjBqQkJnd0ZvQVVUaUpVSUJpVjV1TnU1Zy82K3JrUzdRWVhqemt3RGdZRFZSMFBBUUgvQkFRREFnR0dNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUZCUWNEQWpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1IWUdDQ3NHQVFVRkJ3RUJCR293YURBa0JnZ3JCZ0VGQlFjd0FZWVlhSFIwY0RvdkwyOWpjM0F1WkdsbmFXTmxjblF1WTI5dE1FQUdDQ3NHQVFVRkJ6QUNoalJvZEhSd09pOHZZMkZqWlhKMGN5NWthV2RwWTJWeWRDNWpiMjB2UkdsbmFVTmxjblJIYkc5aVlXeFNiMjkwUnpJdVkzSjBNSHNHQTFVZEh3UjBNSEl3TjZBMW9ET0dNV2gwZEhBNkx5OWpjbXd6TG1ScFoybGpaWEowTG1OdmJTOUVhV2RwUTJWeWRFZHNiMkpoYkZKdmIzUkhNaTVqY213d042QTFvRE9HTVdoMGRIQTZMeTlqY213MExtUnBaMmxqWlhKMExtTnZiUzlFYVdkcFEyVnlkRWRzYjJKaGJGSnZiM1JITWk1amNtd3dIUVlEVlIwZ0JCWXdGREFJQmdabmdRd0JBZ0V3Q0FZR1o0RU1BUUlDTUJBR0NTc0dBUVFCZ2pjVkFRUURBZ0VBTUEwR0NTcUdTSWIzRFFFQkRBVUFBNElCQVFCMm9XYzkzZkI4ZXNjaS84ZXNpeGorK04yMm1laUdEamdGK3JBMkxVSzVJT1FPZ2NVU1RHS1NxRjlsWWZBeFBqcnFQakRDVVBIQ1VSdisyNmFkNVAvQll0WHRibXR4Sld1K2NTNUJoTURQUGVHM29QWndYUkhCSkZBa1k0TzRBRjdSSUFBVVc2RXpEZmxVb0RIS3Y4M3pPaVBmWUdjcEhjOXNreEFJbkNlZGs3UVNnWHZNQVJqak9xZGFrb3IyMURUbU5JVW90eG84a0h2NWh3UmxHaEJKd3BzNmZFVmkxQnQwdHJwTS8zd1l4bHI0NzNXU1BVRlpQZ1AxajUxOWtMcFdPSjh6MDl3eGF5K0JyMjlpclBjQll2MEdNWGxIcVRoeTh5NG0vSHlUUWVJMklNdk1yUW53cVBwWStyTElYeXZpSTJ2TG9JKzR4S0U0Um4zOFpaOG0iLCJNSUlEampDQ0FuYWdBd0lCQWdJUUF6cng1cWNScWFDN0tHU3hIUW42NVRBTkJna3Foa2lHOXcwQkFRc0ZBREJoTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNBd0hnWURWUVFERXhkRWFXZHBRMlZ5ZENCSGJHOWlZV3dnVW05dmRDQkhNakFlRncweE16QTRNREV4TWpBd01EQmFGdzB6T0RBeE1UVXhNakF3TURCYU1HRXhDekFKQmdOVkJBWVRBbFZUTVJVd0V3WURWUVFLRXd4RWFXZHBRMlZ5ZENCSmJtTXhHVEFYQmdOVkJBc1RFSGQzZHk1a2FXZHBZMlZ5ZEM1amIyMHhJREFlQmdOVkJBTVRGMFJwWjJsRFpYSjBJRWRzYjJKaGJDQlNiMjkwSUVjeU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXpmTk5OeDdhOG15YUpDdFNuWC9Scm9oQ2dpTjlSbFV5ZnVJMi9PdThqcUprVHg2NXFzR0dtdlByQzNvWGdra1JMcGltbjdXbzZoKzRGUjFJQVdzVUxlY1l4cHNNTnphSHhteDF4N2UvZGZneTVTRE42N3NIME5PM1hzczByMHVwUy9rcWJpdE90U1pwTFlsNlp0ckFHQ1NZUDlQSVVrWTkyZVFxMkVHbkkveXV1bTA2Wkl5YTdYelYraGRHODJNSGF1VkJKVko4elV0bHVOSmJkMTM0L3RKUzdTc1ZRZXBqNVd6dENPN1RHMUY4UGFwc3BVd3RQMU1WWXduU2xjVWZJS2R6WE9TMHhaS0JneU1VTkdQSGdtK0Y2SG1JY3I5ZytVUXZJT2xDc1JuS1BaekZCUTlSbmJEaHhTSklUUk5ydzlGREtaSm9icTduTVd4TTRNcGhRSURBUUFCbzBJd1FEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCaGpBZEJnTlZIUTRFRmdRVVRpSlVJQmlWNXVOdTVnLzYrcmtTN1FZWGp6a3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR0JuS0pSdkRraGo2ekhkNm1jWTFZbDlQTVdMU24vcHZ0c3JGOSt3WDNOM0tqSVRPWUZuUW9RajhrVm5OZXlJdi9pUHNHRU1OS1N1SUV5RXh0djROZUYyMmQrbVFydkhSQWlHZnpaMEpGcmFiQTBVV1RXOThrbmR0aC9Kc3cxSEtqMlpMN3RjdTdYVUlPR1pYMU5HRmR0b20vRHpNTlUrTWVLTmhKN2ppdHJhbGo0MUU2VmY4UGx3VUhCSFFSRlhHVTdBajY0R3hKVVRGeThiSlo5MThyR09tYUZ2RTdGQmNmNklLc2hQRUNCVjEvTVVSZVhnUlBUcWg1VXlrdzcrVTBiNkxKMy9peUs1UzlrSlJhVGVwTGlhV04wYmZWS2ZqbGxEaUlHa25pYlZiNjNkRGNZM2ZlMERraHZsZDE5MjdqeU54RjFXVzZMWlptNnpOVGZsTXJZPSJdLCJ4NXQjUzI1NiI6IloyUjUzamh6MUhNMlZ4dEl4YW5EdDBxTUxzbXNoUU00Tk9jbjI5VDl5MTgifQ.eyJyZXF1ZXN0Ijp7ImFwaS12ZXJzaW9uIjoiNy4zIiwiZW5jIjoiQ0tNX1JTQV9BRVNfS0VZX1dSQVAiLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5c2hzbS5tYW5hZ2VkaHNtLmF6dXJlLm5ldC9rZXlzL3Rlc3RyZWxlYXNla2V5MjYzMzE5NDk5OSJ9LCJyZXNwb25zZSI6eyJrZXkiOnsiYXR0cmlidXRlcyI6eyJjcmVhdGVkIjoxNjU2MzU2NDgxLCJlbmFibGVkIjp0cnVlLCJleHBvcnRhYmxlIjp0cnVlLCJyZWNvdmVyYWJsZURheXMiOjcsInJlY292ZXJ5TGV2ZWwiOiJDdXN0b21pemVkUmVjb3ZlcmFibGUrUHVyZ2VhYmxlIiwidXBkYXRlZCI6MTY1NjM1NjQ4MX0sImtleSI6eyJjcnYiOiJQLTI1NksiLCJrZXlfaHNtIjoiZXlKamFYQm9aWEowWlhoMElqb2lSVFkzUm05c05XSlpjRGxLWVdjd1VTMW1hVVpQVUdWblFubGpTMnBSWjB4clFWOWllVEJaWTFBM05UYzRNbEpKWVRKT2QzVmZka0ZpVjNaUFNtWnhTR2hZWXpkUFlYQmhjak50ZHpWVVpVRmFjMGQ1YVV0Q2VYRm1WMm96UTFkMmFWSnhUbkJLTmt0Q2RsOWpZakZFUldGbFVEZEpSa3hMYVd4bFRUaEtUVVpMVmxsWE56ZzNkelpQY0ZCcE1qTmZYekJETUc1cmFFOVdWR2x5U3pBelpqUXROVU5JUkhKMWJXSnRiMGxIZWxCWVltMTNSa0p1TVRRNFJrWXdWSHBsTkd3Mk9HTktUbkJMY2psRGFGUjZMV3hTWVVKM09IUXRhRlEyTTFORE0yUjVOVlF5UW1OM1EwTk9Ra3BPUlhsck9YcE9TMHBMTldwUFQzbzRXa2hwZDNGRWFFdDFjSFEwUVVOTlZHeHhabm96YUUxcWNDMDRNVUV5YkVSVk9XWjRVMWwzVUUxYVJWZGxSVlJhZWxaaVpWaDFRV1JqTUhkbVZHUnpSVTFJZUdzNExTMDBSbEJvWjFFdFltUlFUMmhCWDI5S2MwUmplRmhIYmpsaWRrWnlkR2d3VFdSR01tVm9iRUl4T1d3eGNqbEJhMWRvWDNWUlFUWlZTako2VlZGc2FIbHFRelpmYURKZmFFUlRXRjh3YkY5c05IVm5PWEJLYmpKaVl6VldiMXB0VmxGSFUwSlJWVWxvVTI1MFh6Y3lSRTFhZFZadWRYWlZjSGRyZUVkTlQybHRMVVZKUlVsd1YxWm1XRkZ0UW5WZlNGaEJVM1pmTTNCd2RtTlplbGw0YzNwRWVGUmpkVTg1UTFkS1lqUk9PVE00WTNKSFJHVklTMFV0Y21KTE9FWTVRbWxzUmxnMlIwRk5RME0wVEVWbUxYRXRlbnBSSWl3aWFHVmhaR1Z5SWpwN0ltRnNaeUk2SW1ScGNpSXNJbVZ1WXlJNklrTkxUVjlTVTBGZlFVVlRYMHRGV1Y5WFVrRlFJaXdpYTJsa0lqb2labUZyWlMxeVpXeGxZWE5sTFd0bGVTSjlMQ0p6WTJobGJXRmZkbVZ5YzJsdmJpSTZJakV1TUNKOSIsImtleV9vcHMiOlsidmVyaWZ5Iiwic2lnbiJdLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5c2hzbS5tYW5hZ2VkaHNtLmF6dXJlLm5ldC9rZXlzL3Rlc3RyZWxlYXNla2V5MjYzMzE5NDk5OS82OTk3Y2YzZDRmYWI0ZDViOTYxYjQyNGVjZjkyZTYzZCIsImt0eSI6IkVDIiwieCI6InQybFFXMWtSMmpDMXBJdWhMVEdmckJhV2VjN2UtYkt6bDFGRnl6VUNUY00iLCJ5IjoiUmxXMEpIX0dCdWJBQkpWSnBSbFVWcS1rMDZodVFJbDBpT3V1cXlBNi1QUSJ9LCJyZWxlYXNlX3BvbGljeSI6eyJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiLCJkYXRhIjoiZXlKaGJubFBaaUk2VzNzaVlXNTVUMllpT2x0N0ltTnNZV2x0SWpvaWMyUnJMWFJsYzNRaUxDSmxjWFZoYkhNaU9pSjBjblZsSW4xZExDSmhkWFJvYjNKcGRIa2lPaUpvZEhSd2N6b3ZMMk5vYkc5M1pXRjZhMlY1YzNOcGRHVXVZWHAxY21WM1pXSnphWFJsY3k1dVpYUXZJbjFkTENKMlpYSnphVzl1SWpvaU1TNHdMakFpZlEiLCJpbW11dGFibGUiOnRydWV9fX19.cj4KC8tM9Py0i9l7vYCgAhEEx6ufeadHWRzwN_7XtSh988C9q7R8wDpyTZ1qrL5wjIaZFxbqnxeUpThPBGCq0s-sI0xIqWQGgxHFYESPi4-R3yrDjoh38WtzQOMDUim8Ij6JsHMJ3dMQ8oxTwBUp5Q6nD2sWIJfOtD5L2ion99jCxZJssu404r34P8iUNsFX7xtRljKsgWM9ZUiiDW4S_MwBTU2xFhf0VoVRpEaNt1K9jDsGAHsta_rXjuVtakuAUskxfyc0YMukgEgmCKAOKrJImP3AGX1WTuwiMjiY-O0mrfaG593dlKECwWJ2X6wOfU_Xc3FMvyYkJLTmfDECMQ" + } + }, + { + "RequestUri": "https://fakemhsm/keys/testreleasekey2633194999?api-version=7.3", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "861", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "8a9cf670-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "74" + }, + "ResponseBody": { + "attributes": { + "created": 1656356481, + "enabled": true, + "exportable": true, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356481 + }, + "deletedDate": 1656356485, + "key": { + "crv": "P-256K", + "key_ops": [ + "verify", + "sign" + ], + "kid": "https://fakemhsm/keys/testreleasekey2633194999/6997cf3d4fab4d5b961b424ecf92e63d", + "kty": "EC-HSM", + "x": "t2lQW1kR2jC1pIuhLTGfrBaWec7e-bKzl1FFyzUCTcM", + "y": "RlW0JH_GBubABJVJpRlUVq-k06huQIl0iOuuqyA6-PQ" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testreleasekey2633194999", + "release_policy": { + "contentType": "application/json; charset=utf-8", + "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", + "immutable": true + }, + "scheduledPurgeDate": 1656961285 + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_HSM_latest.json b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_HSM_latest.json deleted file mode 100644 index beb4fbdd6b4a..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_HSM_latest.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "203b884a-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "248", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "exportable": true - }, - "crv": "P-256K", - "kty": "EC-HSM", - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0" - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "714", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "20787d72-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "1715" - }, - "ResponseBody": { - "attributes": { - "created": 1653590777, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653590777 - }, - "key": { - "crv": "P-256K", - "key_ops": [ - "verify", - "sign" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585/a4c66c2f64754d5b922131588ee3e494", - "kty": "EC-HSM", - "x": "LPAXJ4d-Jn9E3cHDyzmSbO7xU70j5sKK_9TBUAjsj8E", - "y": "yPU4-al_-nqWjaURQgAaYJym1t66MY1G4HkYYNITlUA" - }, - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": false - } - } - }, - { - "RequestUri": "https://fakeattestation/generate-test-token", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept-Encoding": "gzip", - "User-Agent": "Go-http-client/1.1" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Content-Length": "20", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:18 GMT", - "ETag": "W/\u0022502-03rkX4NDWt5L5ZC/8kCYpnDdPiw\u0022", - "X-Powered-By": "Express" - }, - "ResponseBody": { - "token": "redacted" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585/release?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "21", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "target": "redacted" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "11182", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "21c16c98-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "1589" - }, - "ResponseBody": { - "value": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlQ3TkVuNGdpU2MzRElNYjBuLU5DQWpqVll1ZUQ1QWRzZDhZaU0xTzZjRUUiLCJ4NWMiOlsiTUlJSXB6Q0NCbytnQXdJQkFnSVRNd0E4S2YxNDRNY0VldXJ4dWdBQUFEd3AvVEFOQmdrcWhraUc5dzBCQVF3RkFEQlpNUXN3Q1FZRFZRUUdFd0pWVXpFZU1Cd0dBMVVFQ2hNVlRXbGpjbTl6YjJaMElFTnZjbkJ2Y21GMGFXOXVNU293S0FZRFZRUURFeUZOYVdOeWIzTnZablFnUVhwMWNtVWdWRXhUSUVsemMzVnBibWNnUTBFZ01EWXdIaGNOTWpJd05USTJNVGd5TnpVNFdoY05Nak13TlRJeE1UZ3lOelU0V2pCOU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DVjBFeEVEQU9CZ05WQkFjVEIxSmxaRzF2Ym1ReEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakV2TUMwR0ExVUVBd3dtS2k1amFHeHZkMlZoZW10bGVYTm9jMjB1YldGdVlXZGxaR2h6YlM1aGVuVnlaUzV1WlhRd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMrblpvWFZOQ29FbWlNSXhsWTRENTh4NTdZRFBZbmlQTWF3MS9DUFFNL2FiYXgyOVdKZjNhWjI1ZFFGMGg1ZEQ5d1JLNndKU051aHZuZnp6elkwT2QxdlZYaENNOGVZa3VhQm1QQThSNVhBUHQ0WnpHWEdUbkhhejMrRUF6aXgyZUs4elBoamRpTkRGa0prYTNablRJTFN6ODJvKzI1TnBsNWloOTA1akc1bDNWazlXVEtZQURFbHdMaVB5bHBBZlA3Yjh3aTI3YXdXeFZTeVZZZG5kai9NdEhmSG1JNHFxWkV6bjU0M2QxTXhFaDM2S0EvZkRLcnE2MGJkd3dFcEdkaW1KNnl4S3J1d3RHU1BQNFN5b01jblg0ZHYzQ0RnUHZjWFJtU3R5T0hwSHBvTHhzM05JYUV6dEZLMVB3NUNKQkNpd2RtbGlNalp2R3h1RXNiNE5HZkFnTUJBQUdqZ2dSQ01JSUVQakNDQVg0R0Npc0dBUVFCMW5rQ0JBSUVnZ0Z1QklJQmFnRm9BSFlBNkQ3UTJqNzFCalV5NTFjb3ZJbHJ5UVBUeTlFUmErenJhZUYzZlcwR3ZXNEFBQUdCQWFsQ3ZnQUFCQU1BUnpCRkFpQnU5di8ycVFiMFY2aHowREF5N2pLRktDMWhKcTNocC9RdWdQVU5kMWk4RlFJaEFObGo2Z1F0SmpDVi9IZVZ3eFNsTmRtM1kzbEdtbllnOHNQbTNwa3lUTXVVQUhVQWVqS01WTmkzTGJZZzZqamdVaDdwaEJad01oT0ZUVHZTSzhFNlY2TlM2MUlBQUFHQkFhbERCUUFBQkFNQVJqQkVBaUJZQlhzeFBYbExxcW81VmJZc1ZrVldaY2FDL0ZPSjlkcVJid3RwbG9MUFZRSWdVbUhPZWt1MG96MVFvczdUSjFPMWI2b3VtYjRzcG9lemNncWJRSDJUSU0wQWR3Q3Q5Nzc2ZlA4UXlJdWRQWndlUGhocXRHY3BYYyt4RENUS2hZWTA2OXlDaWdBQUFZRUJxVUtQQUFBRUF3QklNRVlDSVFDVXhsSVMybHBzT0tIZWZLc3F5dXFDYWZKUUgwY1hiVk9Kb0NYblNsdGFxQUloQVBvQ2VPZ1o0YTd3SWFpUGZEN09mK2FEMzVRNkdwTEdpRVFhVjBSczBLakNNQ2NHQ1NzR0FRUUJnamNWQ2dRYU1CZ3dDZ1lJS3dZQkJRVUhBd0l3Q2dZSUt3WUJCUVVIQXdFd1BBWUpLd1lCQkFHQ054VUhCQzh3TFFZbEt3WUJCQUdDTnhVSWg3M1hHNEhuNjBhQ2daMHVqdEFNaC9EYUhWMkNoT1ZwZ3ZPblBnSUJaQUlCSlRDQnJnWUlLd1lCQlFVSEFRRUVnYUV3Z1o0d2JRWUlLd1lCQlFVSE1BS0dZV2gwZEhBNkx5OTNkM2N1YldsamNtOXpiMlowTG1OdmJTOXdhMmx2Y0hNdlkyVnlkSE12VFdsamNtOXpiMlowSlRJd1FYcDFjbVVsTWpCVVRGTWxNakJKYzNOMWFXNW5KVEl3UTBFbE1qQXdOaVV5TUMwbE1qQjRjMmxuYmk1amNuUXdMUVlJS3dZQkJRVUhNQUdHSVdoMGRIQTZMeTl2Ym1WdlkzTndMbTFwWTNKdmMyOW1kQzVqYjIwdmIyTnpjREFkQmdOVkhRNEVGZ1FVM3JtUXRrSzFtRytaM3FKZVY0ZGcvZ29PQ3Vrd0RnWURWUjBQQVFIL0JBUURBZ1N3TUZjR0ExVWRFUVJRTUU2Q0ppb3VZMmhzYjNkbFlYcHJaWGx6YUhOdExtMWhibUZuWldSb2MyMHVZWHAxY21VdWJtVjBnaVJqYUd4dmQyVmhlbXRsZVhOb2MyMHViV0Z1WVdkbFpHaHpiUzVoZW5WeVpTNXVaWFF3REFZRFZSMFRBUUgvQkFJd0FEQmtCZ05WSFI4RVhUQmJNRm1nVjZCVmhsTm9kSFJ3T2k4dmQzZDNMbTFwWTNKdmMyOW1kQzVqYjIwdmNHdHBiM0J6TDJOeWJDOU5hV055YjNOdlpuUWxNakJCZW5WeVpTVXlNRlJNVXlVeU1FbHpjM1ZwYm1jbE1qQkRRU1V5TURBMkxtTnliREJtQmdOVkhTQUVYekJkTUZFR0RDc0dBUVFCZ2pkTWczMEJBVEJCTUQ4R0NDc0dBUVVGQndJQkZqTm9kSFJ3T2k4dmQzZDNMbTFwWTNKdmMyOW1kQzVqYjIwdmNHdHBiM0J6TDBSdlkzTXZVbVZ3YjNOcGRHOXllUzVvZEcwd0NBWUdaNEVNQVFJQ01COEdBMVVkSXdRWU1CYUFGTlhCWnpyQ281MzBkMUpiV1JJNEtlWlZhTHVsTUIwR0ExVWRKUVFXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQU5CZ2txaGtpRzl3MEJBUXdGQUFPQ0FnRUFSdWF6ajFTOThEN2YxTlZGWXJtSVByeVB0V0RqZVpkNnhpblZPQWkxSm9EZk9iaUw4RlJNTUdXcDh0WHJoRUpJZllCVzNubmpsQjJUWllIMXJVVE1LdWowcUpVbVRNNktRWi9sYktCRVRxS1dSTWJCbytNek12ampNY3NoUVYwR2JiemRMQ3VsdG9Ob0c3WTQ3K1ljQTJSampIVzB6Q1JsS1liRUxqNVVDakRLbmt3Y3o4M2kwRTRJTFpjSTc1ZUplV0RPQjJ6WFpLMHd1OEFiZkVyUnVsN29UV3FEMURZY2RGaEVkRFVCVzE5UEhoWlczUkNscFcrY01ZbUJQcVRoSGlXZ2N2ckVUTWNHQVg0TjJTY3R2ZW9pS2t2WkVYcHVzODU1N3J6ZWpmSEF4a2hjclRDOFN5YkY2TFcxY1NUcTF3TUhwSEszZVZUdDU5OUFNeXR3eGdEM3QrRVh2bHk3R0RSVVhJb2VEY1NST05PWDJibCtFT3dYWFg5Yk82QXZVc2RWWS82VkRhR2ZaSGxnNWhhTld6SXlwREtaQUJBTWtodWpHZ1BsQnpCMUJsbTdnRUFndVFmRUxqTEVPQnQ4SEdJRzZ6ZEgxS2o5YTg3Rm9qK05PSWh4cXlOTmRzRjR0WTNRRWJLSUQwSGZBRks0OTY4ODduWWs4dFBBczdGR1Z2S3QwRkZKemlJMnZ1dmhvVGhwMEtwdGNiWEJ4UThPUENTak52eWwzWEc4dms2aWRUdXJRajNCVjk4WGhOVDRacFZPZVpSL0FtWUR5TUkwbU1NUUVlVi9JcFFZQi9IeU1JbEdZSDhzNUVQNHZpY01mVUY0UTFvbUN1azFBRmpDNjhrR2Z5aHJNM1c4Qm95NkdIUVNqZVdLSUFxbmhoZEhZSEc4RzNXbHF2az0iLCJNSUlGOHpDQ0JOdWdBd0lCQWdJUUF1ZVJjZnVBSWVrLzR0bURnMHhRd0RBTkJna3Foa2lHOXcwQkFRd0ZBREJoTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNBd0hnWURWUVFERXhkRWFXZHBRMlZ5ZENCSGJHOWlZV3dnVW05dmRDQkhNakFlRncweU1EQTNNamt4TWpNd01EQmFGdzB5TkRBMk1qY3lNelU1TlRsYU1Ga3hDekFKQmdOVkJBWVRBbFZUTVI0d0hBWURWUVFLRXhWTmFXTnliM052Wm5RZ1EyOXljRzl5WVhScGIyNHhLakFvQmdOVkJBTVRJVTFwWTNKdmMyOW1kQ0JCZW5WeVpTQlVURk1nU1hOemRXbHVaeUJEUVNBd05qQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUxWR0FSbDU2YngzS0JVU0d1UGM0SDV1b05Ga0ZINGU3cHZUQ3hSaTRqLyt6K1hid2pFeis1Q2lwRE9xang5L2pXanNrTDVkazdQYVFrekl0aWRzQUFuRENXMWxlWkJPSWk2OExmZjFialRlWmdNWWl3ZFJkM1kzOWIvbGNHcGl1UDJkMjNXOTVZSGtNTVQ4SWxXb3NZSVgwZjRrWWI2MnJwaHlmbkFqWWIvNE9kOTlUaG5obEF4R3RmdlNiWGNCVklLQ1lmWmdxUnZWKzVsUmVVbmQxYU5qUllWelBPb2lmZ1N4MmZSeXkxK3BPMVV6YU1NTm5JT0U3MWJWWVcwQTFocjE5dzdrT2IwS2tKWG9BTFRERGoxdWtVRURxUXVCZkJ4UmVMNW1YaXUxTzdXRzB2bHRnMFZaL1NaemN0QnNkQmx4MUJrbVdZQlcyNjFLWmdCaXZycWw1RUxUS0tkOHFndEhjTFFBNWZsNkpCMFFnczVYRGFXZWhOODZHcHM1Slc4QXJqR3RqY1dBSVArWDhDUWFXZmFDbnVSbTZCay8wM1BRV2hnZGk4NHF3QTBzc1JmRkp3SFVQVE5TbkU4RWlHVmsyZnJ0MHU4UEcxcHdTUXNGdU5KZmNZSUhFdjF2T3pQN3VFT3VEeWRzbUNqaGx4dW9LMm41LzJhVlIzQk1UdStwNCtnbDhhbFhvQnljeUxtajNKL1BVZ3FEOFNMNWZUQ1VlZ0dzZGlhL1NhNjBOMm9WN3ZRMTd3ak1OK0xYYTJyamovYjRabFpnWFZvakRtQWpEd0lSZERVdWpRdTBSVnNKcUZMTXpTSUhwcDJDWnA3bUlvTHJ5U2F5MllZQnU3U2lOd0w5NVg2SGUya1M4ZWVmQkJIanp3Vy85RnhHcXJ5NTdpNzFjMmNEQWdNQkFBR2pnZ0d0TUlJQnFUQWRCZ05WSFE0RUZnUVUxY0ZuT3NLam5mUjNVbHRaRWpncDVsVm91NlV3SHdZRFZSMGpCQmd3Rm9BVVRpSlVJQmlWNXVOdTVnLzYrcmtTN1FZWGp6a3dEZ1lEVlIwUEFRSC9CQVFEQWdHR01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUhZR0NDc0dBUVVGQndFQkJHb3dhREFrQmdnckJnRUZCUWN3QVlZWWFIUjBjRG92TDI5amMzQXVaR2xuYVdObGNuUXVZMjl0TUVBR0NDc0dBUVVGQnpBQ2hqUm9kSFJ3T2k4dlkyRmpaWEowY3k1a2FXZHBZMlZ5ZEM1amIyMHZSR2xuYVVObGNuUkhiRzlpWVd4U2IyOTBSekl1WTNKME1Ic0dBMVVkSHdSME1ISXdONkExb0RPR01XaDBkSEE2THk5amNtd3pMbVJwWjJsalpYSjBMbU52YlM5RWFXZHBRMlZ5ZEVkc2IySmhiRkp2YjNSSE1pNWpjbXd3TjZBMW9ET0dNV2gwZEhBNkx5OWpjbXcwTG1ScFoybGpaWEowTG1OdmJTOUVhV2RwUTJWeWRFZHNiMkpoYkZKdmIzUkhNaTVqY213d0hRWURWUjBnQkJZd0ZEQUlCZ1puZ1F3QkFnRXdDQVlHWjRFTUFRSUNNQkFHQ1NzR0FRUUJnamNWQVFRREFnRUFNQTBHQ1NxR1NJYjNEUUVCREFVQUE0SUJBUUIyb1djOTNmQjhlc2NpLzhlc2l4aisrTjIybWVpR0RqZ0YrckEyTFVLNUlPUU9nY1VTVEdLU3FGOWxZZkF4UGpycVBqRENVUEhDVVJ2KzI2YWQ1UC9CWXRYdGJtdHhKV3UrY1M1QmhNRFBQZUczb1Bad1hSSEJKRkFrWTRPNEFGN1JJQUFVVzZFekRmbFVvREhLdjgzek9pUGZZR2NwSGM5c2t4QUluQ2VkazdRU2dYdk1BUmpqT3FkYWtvcjIxRFRtTklVb3R4bzhrSHY1aHdSbEdoQkp3cHM2ZkVWaTFCdDB0cnBNLzN3WXhscjQ3M1dTUFVGWlBnUDFqNTE5a0xwV09KOHowOXd4YXkrQnIyOWlyUGNCWXYwR01YbEhxVGh5OHk0bS9IeVRRZUkySU12TXJRbndxUHBZK3JMSVh5dmlJMnZMb0krNHhLRTRSbjM4Wlo4bSIsIk1JSURqakNDQW5hZ0F3SUJBZ0lRQXpyeDVxY1JxYUM3S0dTeEhRbjY1VEFOQmdrcWhraUc5dzBCQVFzRkFEQmhNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU0F3SGdZRFZRUURFeGRFYVdkcFEyVnlkQ0JIYkc5aVlXd2dVbTl2ZENCSE1qQWVGdzB4TXpBNE1ERXhNakF3TURCYUZ3MHpPREF4TVRVeE1qQXdNREJhTUdFeEN6QUpCZ05WQkFZVEFsVlRNUlV3RXdZRFZRUUtFd3hFYVdkcFEyVnlkQ0JKYm1NeEdUQVhCZ05WQkFzVEVIZDNkeTVrYVdkcFkyVnlkQzVqYjIweElEQWVCZ05WQkFNVEYwUnBaMmxEWlhKMElFZHNiMkpoYkNCU2IyOTBJRWN5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1emZOTk54N2E4bXlhSkN0U25YL1Jyb2hDZ2lOOVJsVXlmdUkyL091OGpxSmtUeDY1cXNHR212UHJDM29YZ2trUkxwaW1uN1dvNmgrNEZSMUlBV3NVTGVjWXhwc01OemFIeG14MXg3ZS9kZmd5NVNETjY3c0gwTk8zWHNzMHIwdXBTL2txYml0T3RTWnBMWWw2WnRyQUdDU1lQOVBJVWtZOTJlUXEyRUduSS95dXVtMDZaSXlhN1h6VitoZEc4Mk1IYXVWQkpWSjh6VXRsdU5KYmQxMzQvdEpTN1NzVlFlcGo1V3p0Q083VEcxRjhQYXBzcFV3dFAxTVZZd25TbGNVZklLZHpYT1MweFpLQmd5TVVOR1BIZ20rRjZIbUljcjlnK1VRdklPbENzUm5LUFp6RkJROVJuYkRoeFNKSVRSTnJ3OUZES1pKb2JxN25NV3hNNE1waFFJREFRQUJvMEl3UURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJoakFkQmdOVkhRNEVGZ1FVVGlKVUlCaVY1dU51NWcvNitya1M3UVlYanprd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFHQm5LSlJ2RGtoajZ6SGQ2bWNZMVlsOVBNV0xTbi9wdnRzckY5K3dYM04zS2pJVE9ZRm5Rb1FqOGtWbk5leUl2L2lQc0dFTU5LU3VJRXlFeHR2NE5lRjIyZCttUXJ2SFJBaUdmelowSkZyYWJBMFVXVFc5OGtuZHRoL0pzdzFIS2oyWkw3dGN1N1hVSU9HWlgxTkdGZHRvbS9Eek1OVStNZUtOaEo3aml0cmFsajQxRTZWZjhQbHdVSEJIUVJGWEdVN0FqNjRHeEpVVEZ5OGJKWjkxOHJHT21hRnZFN0ZCY2Y2SUtzaFBFQ0JWMS9NVVJlWGdSUFRxaDVVeWt3NytVMGI2TEozL2l5SzVTOWtKUmFUZXBMaWFXTjBiZlZLZmpsbERpSUdrbmliVmI2M2REY1kzZmUwRGtodmxkMTkyN2p5TnhGMVdXNkxaWm02ek5UZmxNclk9Il0sIng1dCNTMjU2IjoiVDdORW40Z2lTYzNESU1iMG4tTkNBampWWXVlRDVBZHNkOFlpTTFPNmNFRSJ9.eyJyZXF1ZXN0Ijp7ImFwaS12ZXJzaW9uIjoiNy4zIiwiZW5jIjoiQ0tNX1JTQV9BRVNfS0VZX1dSQVAiLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5c2hzbS5tYW5hZ2VkaHNtLmF6dXJlLm5ldC9rZXlzL3Rlc3RyZWxlYXNla2V5MzQyMzkxNjU4NSJ9LCJyZXNwb25zZSI6eyJrZXkiOnsiYXR0cmlidXRlcyI6eyJjcmVhdGVkIjoxNjUzNTkwNzc3LCJlbmFibGVkIjp0cnVlLCJleHBvcnRhYmxlIjp0cnVlLCJyZWNvdmVyYWJsZURheXMiOjcsInJlY292ZXJ5TGV2ZWwiOiJDdXN0b21pemVkUmVjb3ZlcmFibGUrUHVyZ2VhYmxlIiwidXBkYXRlZCI6MTY1MzU5MDc3N30sImtleSI6eyJjcnYiOiJQLTI1NksiLCJrZXlfaHNtIjoiZXlKamFYQm9aWEowWlhoMElqb2labEZsVjBoRlJ6bFZkVEZFY3pORGFuVkRlVXBXWlhCSldTMHhhRmw1Y2tORVYzWnNTMFZ6YzAxeVYwNTNTV1V5TkMwd1pIRTJWRVZ3VFZaZk9WQkhWbUZxZVRKSlExQm5kRk00UWsxSE9FWTJTRGt4VG5neGNHZGtUekpUWmpCVE1sUlpkRk5vVFVSQ1UyMVhkRmRqYmw5R1JWRmxjVTVmTUdkVFZYbDBUbWg1VFhCVmNUZDBZbVZ1TFdOMlFXTnNXVXRmYm1WQ1NsOWZXRTV2ZVRGNVlsaHpja3d6UWpGc00yNVdTRXhKUlVGQ1lWSkVUVU5zTkcwMlJWaFNUVXhrV1ZCdFNUazFUMkl3ZVdsS1QyVklaMGd6VkVaNk0yUlBOa0ZxVG5KT1JWazRUQzFmZG1ORlJWUk1kR0pZUTJaU1dHbzBZbmg2Tm5rNGJXbDZZazlKWVRScE1sUmxka3RKWDBaTFRVSm1WVUpxTVZGdFpGUk1ZbU5vU0c1ZmFXTjBibGg2T0hWdlpUVmFUMmhxYkd4V1ZFOXRhbGhsY2tadWRIb3dkekkyZDI5NWFubEpVVFp6YkdKVGMweE5VMWMwUW5SYVFuTkVkbVpHVkVsdmIwdDNRV3B6Y0RJeGNIVnBhRE5DUTB0YVlVdHVjMFJ2WjFSMk1UaDZjbWhoZGw5RFdFVTBURjh6YW14dGRtbFJYMlI0VFVOTU1FZHdjMmMxZURsS2NUVkZRVUpZUm5aQlYySllkakJ0UW1GUU5IZHBPVjlaZHpGSlZXeG5hMDR4VTBaRlRuVkxjVGhVVFVWU2RIbHJRa1JvVm1sWE1HSXdTazk2UlZvNE1URnRSR1JEVDB4U2FIRm1TRk5oYjBoaGJqTjNWRjl4VFhoeFozaEpkMUZaZVY5cmVVOXNXa1V5Vm5JNVZVTlRhSGRaVkhSNlRsRnNVa05uSWl3aWFHVmhaR1Z5SWpwN0ltRnNaeUk2SW1ScGNpSXNJbVZ1WXlJNklrTkxUVjlTVTBGZlFVVlRYMHRGV1Y5WFVrRlFJaXdpYTJsa0lqb2labUZyWlMxeVpXeGxZWE5sTFd0bGVTSjlMQ0p6WTJobGJXRmZkbVZ5YzJsdmJpSTZJakV1TUNKOSIsImtleV9vcHMiOlsidmVyaWZ5Iiwic2lnbiJdLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5c2hzbS5tYW5hZ2VkaHNtLmF6dXJlLm5ldC9rZXlzL3Rlc3RyZWxlYXNla2V5MzQyMzkxNjU4NS9hNGM2NmMyZjY0NzU0ZDViOTIyMTMxNTg4ZWUzZTQ5NCIsImt0eSI6IkVDIiwieCI6IkxQQVhKNGQtSm45RTNjSER5em1TYk83eFU3MGo1c0tLXzlUQlVBanNqOEUiLCJ5IjoieVBVNC1hbF8tbnFXamFVUlFnQWFZSnltMXQ2Nk1ZMUc0SGtZWU5JVGxVQSJ9LCJyZWxlYXNlX3BvbGljeSI6eyJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiLCJkYXRhIjoiZXlKaGJubFBaaUk2VzNzaVlXNTVUMllpT2x0N0ltTnNZV2x0SWpvaWMyUnJMWFJsYzNRaUxDSmxjWFZoYkhNaU9pSjBjblZsSW4xZExDSmhkWFJvYjNKcGRIa2lPaUpvZEhSd2N6b3ZMMk5vYkc5M1pXRjZhMlY1YzNOcGRHVXVZWHAxY21WM1pXSnphWFJsY3k1dVpYUXZJbjFkTENKMlpYSnphVzl1SWpvaU1TNHdMakFpZlEiLCJpbW11dGFibGUiOmZhbHNlfX19fQ.jx-ohycalyj1j1PWolxVASMzQVLK7qMI6aAl8bxnsdivlhicDdACf6Z_nlADcxWxAq55btEIkySzJAH4Ndsz1qUeMwSB4pYjAFERhmR-r8W3WZmq11lhGhtEk8dtGGLntBfNk14tDY-sURf9uwlkMqQEJvR92GTx_6iRQTVE8lZFUIWpuhA7Snz4TQzkr_IiWZFvPW6Wetb64DWzF2AoMsvZAs8fLWHt7zWDsAL8X14OzRDzFcCGff0-SVHT8MPEnrEus1Fy1TZ8QcW32uzX7rExCTECN0Ui4FkMUOu3TpY1-U1MIRaCam-akRframhOk0bYK9NJM7cqseWui6jqCA" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "862", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "22bc7110-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "70" - }, - "ResponseBody": { - "attributes": { - "created": 1653590777, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653590777 - }, - "deletedDate": 1653590781, - "key": { - "crv": "P-256K", - "key_ops": [ - "verify", - "sign" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585/a4c66c2f64754d5b922131588ee3e494", - "kty": "EC-HSM", - "x": "LPAXJ4d-Jn9E3cHDyzmSbO7xU70j5sKK_9TBUAjsj8E", - "y": "yPU4-al_-nqWjaURQgAaYJym1t66MY1G4HkYYNITlUA" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey3423916585", - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": false - }, - "scheduledPurgeDate": 1654195581 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey3423916585?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "862", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220503-3-e1430fa9-1.0.20220430-1-f02155ab-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "22d05b08-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "30" - }, - "ResponseBody": { - "attributes": { - "created": 1653590777, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653590777 - }, - "deletedDate": 1653590781, - "key": { - "crv": "P-256K", - "key_ops": [ - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey3423916585/a4c66c2f64754d5b922131588ee3e494", - "kty": "EC-HSM", - "x": "LPAXJ4d-Jn9E3cHDyzmSbO7xU70j5sKK_9TBUAjsj8E", - "y": "yPU4-al_-nqWjaURQgAaYJym1t66MY1G4HkYYNITlUA" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey3423916585", - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": false - }, - "scheduledPurgeDate": 1654195581 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey3423916585?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "22dd22c0-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "96" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_HSM_specificVersion.json b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_HSM_specificVersion.json deleted file mode 100644 index 398fe5498a2b..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_HSM_specificVersion.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1d324184-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "1" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "248", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "exportable": true - }, - "crv": "P-256K", - "kty": "EC-HSM", - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0" - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "713", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1d6b5a46-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "1889" - }, - "ResponseBody": { - "attributes": { - "created": 1653590772, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653590772 - }, - "key": { - "crv": "P-256K", - "key_ops": [ - "verify", - "sign" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958/6544e99772f0471b9cade513c7f686b4", - "kty": "EC-HSM", - "x": "CcACgSwQw0L9920ta6Zmh19vu5XvlyHUfLxeKS8Ci7w", - "y": "MhVF9xCvgPTnWn7lT6aNoWkMpkw6aOSa_Wd6trHGr68" - }, - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": false - } - } - }, - { - "RequestUri": "https://fakeattestation/generate-test-token", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept-Encoding": "gzip", - "User-Agent": "Go-http-client/1.1" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Content-Length": "20", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:14 GMT", - "ETag": "W/\u0022502-ICRXSZOp4hK9VJJLUY5/Lp66CyQ\u0022", - "X-Powered-By": "Express" - }, - "ResponseBody": { - "token": "redacted" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958/6544e99772f0471b9cade513c7f686b4/release?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "21", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "target": "redacted" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "11223", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1ef1e358-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "1585" - }, - "ResponseBody": { - "value": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlQ3TkVuNGdpU2MzRElNYjBuLU5DQWpqVll1ZUQ1QWRzZDhZaU0xTzZjRUUiLCJ4NWMiOlsiTUlJSXB6Q0NCbytnQXdJQkFnSVRNd0E4S2YxNDRNY0VldXJ4dWdBQUFEd3AvVEFOQmdrcWhraUc5dzBCQVF3RkFEQlpNUXN3Q1FZRFZRUUdFd0pWVXpFZU1Cd0dBMVVFQ2hNVlRXbGpjbTl6YjJaMElFTnZjbkJ2Y21GMGFXOXVNU293S0FZRFZRUURFeUZOYVdOeWIzTnZablFnUVhwMWNtVWdWRXhUSUVsemMzVnBibWNnUTBFZ01EWXdIaGNOTWpJd05USTJNVGd5TnpVNFdoY05Nak13TlRJeE1UZ3lOelU0V2pCOU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DVjBFeEVEQU9CZ05WQkFjVEIxSmxaRzF2Ym1ReEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakV2TUMwR0ExVUVBd3dtS2k1amFHeHZkMlZoZW10bGVYTm9jMjB1YldGdVlXZGxaR2h6YlM1aGVuVnlaUzV1WlhRd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMrblpvWFZOQ29FbWlNSXhsWTRENTh4NTdZRFBZbmlQTWF3MS9DUFFNL2FiYXgyOVdKZjNhWjI1ZFFGMGg1ZEQ5d1JLNndKU051aHZuZnp6elkwT2QxdlZYaENNOGVZa3VhQm1QQThSNVhBUHQ0WnpHWEdUbkhhejMrRUF6aXgyZUs4elBoamRpTkRGa0prYTNablRJTFN6ODJvKzI1TnBsNWloOTA1akc1bDNWazlXVEtZQURFbHdMaVB5bHBBZlA3Yjh3aTI3YXdXeFZTeVZZZG5kai9NdEhmSG1JNHFxWkV6bjU0M2QxTXhFaDM2S0EvZkRLcnE2MGJkd3dFcEdkaW1KNnl4S3J1d3RHU1BQNFN5b01jblg0ZHYzQ0RnUHZjWFJtU3R5T0hwSHBvTHhzM05JYUV6dEZLMVB3NUNKQkNpd2RtbGlNalp2R3h1RXNiNE5HZkFnTUJBQUdqZ2dSQ01JSUVQakNDQVg0R0Npc0dBUVFCMW5rQ0JBSUVnZ0Z1QklJQmFnRm9BSFlBNkQ3UTJqNzFCalV5NTFjb3ZJbHJ5UVBUeTlFUmErenJhZUYzZlcwR3ZXNEFBQUdCQWFsQ3ZnQUFCQU1BUnpCRkFpQnU5di8ycVFiMFY2aHowREF5N2pLRktDMWhKcTNocC9RdWdQVU5kMWk4RlFJaEFObGo2Z1F0SmpDVi9IZVZ3eFNsTmRtM1kzbEdtbllnOHNQbTNwa3lUTXVVQUhVQWVqS01WTmkzTGJZZzZqamdVaDdwaEJad01oT0ZUVHZTSzhFNlY2TlM2MUlBQUFHQkFhbERCUUFBQkFNQVJqQkVBaUJZQlhzeFBYbExxcW81VmJZc1ZrVldaY2FDL0ZPSjlkcVJid3RwbG9MUFZRSWdVbUhPZWt1MG96MVFvczdUSjFPMWI2b3VtYjRzcG9lemNncWJRSDJUSU0wQWR3Q3Q5Nzc2ZlA4UXlJdWRQWndlUGhocXRHY3BYYyt4RENUS2hZWTA2OXlDaWdBQUFZRUJxVUtQQUFBRUF3QklNRVlDSVFDVXhsSVMybHBzT0tIZWZLc3F5dXFDYWZKUUgwY1hiVk9Kb0NYblNsdGFxQUloQVBvQ2VPZ1o0YTd3SWFpUGZEN09mK2FEMzVRNkdwTEdpRVFhVjBSczBLakNNQ2NHQ1NzR0FRUUJnamNWQ2dRYU1CZ3dDZ1lJS3dZQkJRVUhBd0l3Q2dZSUt3WUJCUVVIQXdFd1BBWUpLd1lCQkFHQ054VUhCQzh3TFFZbEt3WUJCQUdDTnhVSWg3M1hHNEhuNjBhQ2daMHVqdEFNaC9EYUhWMkNoT1ZwZ3ZPblBnSUJaQUlCSlRDQnJnWUlLd1lCQlFVSEFRRUVnYUV3Z1o0d2JRWUlLd1lCQlFVSE1BS0dZV2gwZEhBNkx5OTNkM2N1YldsamNtOXpiMlowTG1OdmJTOXdhMmx2Y0hNdlkyVnlkSE12VFdsamNtOXpiMlowSlRJd1FYcDFjbVVsTWpCVVRGTWxNakJKYzNOMWFXNW5KVEl3UTBFbE1qQXdOaVV5TUMwbE1qQjRjMmxuYmk1amNuUXdMUVlJS3dZQkJRVUhNQUdHSVdoMGRIQTZMeTl2Ym1WdlkzTndMbTFwWTNKdmMyOW1kQzVqYjIwdmIyTnpjREFkQmdOVkhRNEVGZ1FVM3JtUXRrSzFtRytaM3FKZVY0ZGcvZ29PQ3Vrd0RnWURWUjBQQVFIL0JBUURBZ1N3TUZjR0ExVWRFUVJRTUU2Q0ppb3VZMmhzYjNkbFlYcHJaWGx6YUhOdExtMWhibUZuWldSb2MyMHVZWHAxY21VdWJtVjBnaVJqYUd4dmQyVmhlbXRsZVhOb2MyMHViV0Z1WVdkbFpHaHpiUzVoZW5WeVpTNXVaWFF3REFZRFZSMFRBUUgvQkFJd0FEQmtCZ05WSFI4RVhUQmJNRm1nVjZCVmhsTm9kSFJ3T2k4dmQzZDNMbTFwWTNKdmMyOW1kQzVqYjIwdmNHdHBiM0J6TDJOeWJDOU5hV055YjNOdlpuUWxNakJCZW5WeVpTVXlNRlJNVXlVeU1FbHpjM1ZwYm1jbE1qQkRRU1V5TURBMkxtTnliREJtQmdOVkhTQUVYekJkTUZFR0RDc0dBUVFCZ2pkTWczMEJBVEJCTUQ4R0NDc0dBUVVGQndJQkZqTm9kSFJ3T2k4dmQzZDNMbTFwWTNKdmMyOW1kQzVqYjIwdmNHdHBiM0J6TDBSdlkzTXZVbVZ3YjNOcGRHOXllUzVvZEcwd0NBWUdaNEVNQVFJQ01COEdBMVVkSXdRWU1CYUFGTlhCWnpyQ281MzBkMUpiV1JJNEtlWlZhTHVsTUIwR0ExVWRKUVFXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQU5CZ2txaGtpRzl3MEJBUXdGQUFPQ0FnRUFSdWF6ajFTOThEN2YxTlZGWXJtSVByeVB0V0RqZVpkNnhpblZPQWkxSm9EZk9iaUw4RlJNTUdXcDh0WHJoRUpJZllCVzNubmpsQjJUWllIMXJVVE1LdWowcUpVbVRNNktRWi9sYktCRVRxS1dSTWJCbytNek12ampNY3NoUVYwR2JiemRMQ3VsdG9Ob0c3WTQ3K1ljQTJSampIVzB6Q1JsS1liRUxqNVVDakRLbmt3Y3o4M2kwRTRJTFpjSTc1ZUplV0RPQjJ6WFpLMHd1OEFiZkVyUnVsN29UV3FEMURZY2RGaEVkRFVCVzE5UEhoWlczUkNscFcrY01ZbUJQcVRoSGlXZ2N2ckVUTWNHQVg0TjJTY3R2ZW9pS2t2WkVYcHVzODU1N3J6ZWpmSEF4a2hjclRDOFN5YkY2TFcxY1NUcTF3TUhwSEszZVZUdDU5OUFNeXR3eGdEM3QrRVh2bHk3R0RSVVhJb2VEY1NST05PWDJibCtFT3dYWFg5Yk82QXZVc2RWWS82VkRhR2ZaSGxnNWhhTld6SXlwREtaQUJBTWtodWpHZ1BsQnpCMUJsbTdnRUFndVFmRUxqTEVPQnQ4SEdJRzZ6ZEgxS2o5YTg3Rm9qK05PSWh4cXlOTmRzRjR0WTNRRWJLSUQwSGZBRks0OTY4ODduWWs4dFBBczdGR1Z2S3QwRkZKemlJMnZ1dmhvVGhwMEtwdGNiWEJ4UThPUENTak52eWwzWEc4dms2aWRUdXJRajNCVjk4WGhOVDRacFZPZVpSL0FtWUR5TUkwbU1NUUVlVi9JcFFZQi9IeU1JbEdZSDhzNUVQNHZpY01mVUY0UTFvbUN1azFBRmpDNjhrR2Z5aHJNM1c4Qm95NkdIUVNqZVdLSUFxbmhoZEhZSEc4RzNXbHF2az0iLCJNSUlGOHpDQ0JOdWdBd0lCQWdJUUF1ZVJjZnVBSWVrLzR0bURnMHhRd0RBTkJna3Foa2lHOXcwQkFRd0ZBREJoTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNBd0hnWURWUVFERXhkRWFXZHBRMlZ5ZENCSGJHOWlZV3dnVW05dmRDQkhNakFlRncweU1EQTNNamt4TWpNd01EQmFGdzB5TkRBMk1qY3lNelU1TlRsYU1Ga3hDekFKQmdOVkJBWVRBbFZUTVI0d0hBWURWUVFLRXhWTmFXTnliM052Wm5RZ1EyOXljRzl5WVhScGIyNHhLakFvQmdOVkJBTVRJVTFwWTNKdmMyOW1kQ0JCZW5WeVpTQlVURk1nU1hOemRXbHVaeUJEUVNBd05qQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUxWR0FSbDU2YngzS0JVU0d1UGM0SDV1b05Ga0ZINGU3cHZUQ3hSaTRqLyt6K1hid2pFeis1Q2lwRE9xang5L2pXanNrTDVkazdQYVFrekl0aWRzQUFuRENXMWxlWkJPSWk2OExmZjFialRlWmdNWWl3ZFJkM1kzOWIvbGNHcGl1UDJkMjNXOTVZSGtNTVQ4SWxXb3NZSVgwZjRrWWI2MnJwaHlmbkFqWWIvNE9kOTlUaG5obEF4R3RmdlNiWGNCVklLQ1lmWmdxUnZWKzVsUmVVbmQxYU5qUllWelBPb2lmZ1N4MmZSeXkxK3BPMVV6YU1NTm5JT0U3MWJWWVcwQTFocjE5dzdrT2IwS2tKWG9BTFRERGoxdWtVRURxUXVCZkJ4UmVMNW1YaXUxTzdXRzB2bHRnMFZaL1NaemN0QnNkQmx4MUJrbVdZQlcyNjFLWmdCaXZycWw1RUxUS0tkOHFndEhjTFFBNWZsNkpCMFFnczVYRGFXZWhOODZHcHM1Slc4QXJqR3RqY1dBSVArWDhDUWFXZmFDbnVSbTZCay8wM1BRV2hnZGk4NHF3QTBzc1JmRkp3SFVQVE5TbkU4RWlHVmsyZnJ0MHU4UEcxcHdTUXNGdU5KZmNZSUhFdjF2T3pQN3VFT3VEeWRzbUNqaGx4dW9LMm41LzJhVlIzQk1UdStwNCtnbDhhbFhvQnljeUxtajNKL1BVZ3FEOFNMNWZUQ1VlZ0dzZGlhL1NhNjBOMm9WN3ZRMTd3ak1OK0xYYTJyamovYjRabFpnWFZvakRtQWpEd0lSZERVdWpRdTBSVnNKcUZMTXpTSUhwcDJDWnA3bUlvTHJ5U2F5MllZQnU3U2lOd0w5NVg2SGUya1M4ZWVmQkJIanp3Vy85RnhHcXJ5NTdpNzFjMmNEQWdNQkFBR2pnZ0d0TUlJQnFUQWRCZ05WSFE0RUZnUVUxY0ZuT3NLam5mUjNVbHRaRWpncDVsVm91NlV3SHdZRFZSMGpCQmd3Rm9BVVRpSlVJQmlWNXVOdTVnLzYrcmtTN1FZWGp6a3dEZ1lEVlIwUEFRSC9CQVFEQWdHR01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUhZR0NDc0dBUVVGQndFQkJHb3dhREFrQmdnckJnRUZCUWN3QVlZWWFIUjBjRG92TDI5amMzQXVaR2xuYVdObGNuUXVZMjl0TUVBR0NDc0dBUVVGQnpBQ2hqUm9kSFJ3T2k4dlkyRmpaWEowY3k1a2FXZHBZMlZ5ZEM1amIyMHZSR2xuYVVObGNuUkhiRzlpWVd4U2IyOTBSekl1WTNKME1Ic0dBMVVkSHdSME1ISXdONkExb0RPR01XaDBkSEE2THk5amNtd3pMbVJwWjJsalpYSjBMbU52YlM5RWFXZHBRMlZ5ZEVkc2IySmhiRkp2YjNSSE1pNWpjbXd3TjZBMW9ET0dNV2gwZEhBNkx5OWpjbXcwTG1ScFoybGpaWEowTG1OdmJTOUVhV2RwUTJWeWRFZHNiMkpoYkZKdmIzUkhNaTVqY213d0hRWURWUjBnQkJZd0ZEQUlCZ1puZ1F3QkFnRXdDQVlHWjRFTUFRSUNNQkFHQ1NzR0FRUUJnamNWQVFRREFnRUFNQTBHQ1NxR1NJYjNEUUVCREFVQUE0SUJBUUIyb1djOTNmQjhlc2NpLzhlc2l4aisrTjIybWVpR0RqZ0YrckEyTFVLNUlPUU9nY1VTVEdLU3FGOWxZZkF4UGpycVBqRENVUEhDVVJ2KzI2YWQ1UC9CWXRYdGJtdHhKV3UrY1M1QmhNRFBQZUczb1Bad1hSSEJKRkFrWTRPNEFGN1JJQUFVVzZFekRmbFVvREhLdjgzek9pUGZZR2NwSGM5c2t4QUluQ2VkazdRU2dYdk1BUmpqT3FkYWtvcjIxRFRtTklVb3R4bzhrSHY1aHdSbEdoQkp3cHM2ZkVWaTFCdDB0cnBNLzN3WXhscjQ3M1dTUFVGWlBnUDFqNTE5a0xwV09KOHowOXd4YXkrQnIyOWlyUGNCWXYwR01YbEhxVGh5OHk0bS9IeVRRZUkySU12TXJRbndxUHBZK3JMSVh5dmlJMnZMb0krNHhLRTRSbjM4Wlo4bSIsIk1JSURqakNDQW5hZ0F3SUJBZ0lRQXpyeDVxY1JxYUM3S0dTeEhRbjY1VEFOQmdrcWhraUc5dzBCQVFzRkFEQmhNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU0F3SGdZRFZRUURFeGRFYVdkcFEyVnlkQ0JIYkc5aVlXd2dVbTl2ZENCSE1qQWVGdzB4TXpBNE1ERXhNakF3TURCYUZ3MHpPREF4TVRVeE1qQXdNREJhTUdFeEN6QUpCZ05WQkFZVEFsVlRNUlV3RXdZRFZRUUtFd3hFYVdkcFEyVnlkQ0JKYm1NeEdUQVhCZ05WQkFzVEVIZDNkeTVrYVdkcFkyVnlkQzVqYjIweElEQWVCZ05WQkFNVEYwUnBaMmxEWlhKMElFZHNiMkpoYkNCU2IyOTBJRWN5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1emZOTk54N2E4bXlhSkN0U25YL1Jyb2hDZ2lOOVJsVXlmdUkyL091OGpxSmtUeDY1cXNHR212UHJDM29YZ2trUkxwaW1uN1dvNmgrNEZSMUlBV3NVTGVjWXhwc01OemFIeG14MXg3ZS9kZmd5NVNETjY3c0gwTk8zWHNzMHIwdXBTL2txYml0T3RTWnBMWWw2WnRyQUdDU1lQOVBJVWtZOTJlUXEyRUduSS95dXVtMDZaSXlhN1h6VitoZEc4Mk1IYXVWQkpWSjh6VXRsdU5KYmQxMzQvdEpTN1NzVlFlcGo1V3p0Q083VEcxRjhQYXBzcFV3dFAxTVZZd25TbGNVZklLZHpYT1MweFpLQmd5TVVOR1BIZ20rRjZIbUljcjlnK1VRdklPbENzUm5LUFp6RkJROVJuYkRoeFNKSVRSTnJ3OUZES1pKb2JxN25NV3hNNE1waFFJREFRQUJvMEl3UURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJoakFkQmdOVkhRNEVGZ1FVVGlKVUlCaVY1dU51NWcvNitya1M3UVlYanprd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFHQm5LSlJ2RGtoajZ6SGQ2bWNZMVlsOVBNV0xTbi9wdnRzckY5K3dYM04zS2pJVE9ZRm5Rb1FqOGtWbk5leUl2L2lQc0dFTU5LU3VJRXlFeHR2NE5lRjIyZCttUXJ2SFJBaUdmelowSkZyYWJBMFVXVFc5OGtuZHRoL0pzdzFIS2oyWkw3dGN1N1hVSU9HWlgxTkdGZHRvbS9Eek1OVStNZUtOaEo3aml0cmFsajQxRTZWZjhQbHdVSEJIUVJGWEdVN0FqNjRHeEpVVEZ5OGJKWjkxOHJHT21hRnZFN0ZCY2Y2SUtzaFBFQ0JWMS9NVVJlWGdSUFRxaDVVeWt3NytVMGI2TEozL2l5SzVTOWtKUmFUZXBMaWFXTjBiZlZLZmpsbERpSUdrbmliVmI2M2REY1kzZmUwRGtodmxkMTkyN2p5TnhGMVdXNkxaWm02ek5UZmxNclk9Il0sIng1dCNTMjU2IjoiVDdORW40Z2lTYzNESU1iMG4tTkNBampWWXVlRDVBZHNkOFlpTTFPNmNFRSJ9.eyJyZXF1ZXN0Ijp7ImFwaS12ZXJzaW9uIjoiNy4zIiwiZW5jIjoiQ0tNX1JTQV9BRVNfS0VZX1dSQVAiLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5c2hzbS5tYW5hZ2VkaHNtLmF6dXJlLm5ldC9rZXlzL3Rlc3RyZWxlYXNla2V5NTg4MzQxOTU4LzY1NDRlOTk3NzJmMDQ3MWI5Y2FkZTUxM2M3ZjY4NmI0In0sInJlc3BvbnNlIjp7ImtleSI6eyJhdHRyaWJ1dGVzIjp7ImNyZWF0ZWQiOjE2NTM1OTA3NzIsImVuYWJsZWQiOnRydWUsImV4cG9ydGFibGUiOnRydWUsInJlY292ZXJhYmxlRGF5cyI6NywicmVjb3ZlcnlMZXZlbCI6IkN1c3RvbWl6ZWRSZWNvdmVyYWJsZStQdXJnZWFibGUiLCJ1cGRhdGVkIjoxNjUzNTkwNzcyfSwia2V5Ijp7ImNydiI6IlAtMjU2SyIsImtleV9oc20iOiJleUpqYVhCb1pYSjBaWGgwSWpvaVZuTnROVm93WW5ZM0xUUXdOM0UxU0RCVGJHa3pRMmgyYVdneU56a3pZVkZwWmxGWE1IaG5UV1p3UnpWS1pUTjRhbVZPYkROelpYQnhlbEF6TUdJeFpsTnNXVkJXTlVOSkxWSmxUamxhWTFCVVFrSlBZazUzYTFWS2FFcG9VRVJZWm1sMlVGWklZa2RTYkMxamRsRklNbkZ3Y1RKNFVVdzFVVlJLV21WMGJsaDBSVEZTVm10VmNuQTFPSFYxTFU5c1RtOVBjVFpHVGtKUlJEQk9kMGt4WDJSWk5tRXpRMEpFVm01VVZHRklVVXBVUVVOT09WY3lXa1kwYm1KU1FVMHpSMEp4U1daYVlqWnZhVGh4WjNSQlpIbHFkRFpwTUdsd2NYbEljMFZHZURacU1XSlNaVFpMTURObmJWaHpaRmt0V0dsSlJEWm9jRzF3WVRaNE1YRkZhelJvV25WaExXVjZObE4zVWpNdFVHeGxkVzh0YTFacVVHa3daWGx3TW05VFpFOWhNWFpaYlRWMWRHUnFkV1l3ZDNkUmFGZ3lkamxpVmkwM2FYQTFlRGh3VXpGdE1tb3dVMVZpWld4T0xXeGZVVWh5UkdWV1IwSTBTMUJ2WjFocE5HdENRVjkzTFZSdlJHbG5ZVWhuUm5NMlRYcElRbUpCV0RkVk9YcHBTR015Y1ROcFowcHlhMEpSYldnNFlXRmhiMmt0ZEhGdGJtVm9ZbEpQZDBwTllqaGxlbE5LTFRCUFkxVnNjRFEwUWxWWU1FZ3pZeTFMT0dvMFdYbHBWVXRVUTFGWVZYcEdPVXB2TVVGd2NWZG9XR3Q0YUhsb1pVdDJUWEkxWTFKeldXWjNjV3hGY0ZNek5YQjVSa1ZYY2xsR1VHRnZlbmwyYXpseFdFOVRWa0ZRV1Rkc1FuaDBhRFZMYkRJM1ZreERialZFUkZjeFZ6WkJJaXdpYUdWaFpHVnlJanA3SW1Gc1p5STZJbVJwY2lJc0ltVnVZeUk2SWtOTFRWOVNVMEZmUVVWVFgwdEZXVjlYVWtGUUlpd2lhMmxrSWpvaVptRnJaUzF5Wld4bFlYTmxMV3RsZVNKOUxDSnpZMmhsYldGZmRtVnljMmx2YmlJNklqRXVNQ0o5Iiwia2V5X29wcyI6WyJzaWduIiwidmVyaWZ5Il0sImtpZCI6Imh0dHBzOi8vY2hsb3dlYXprZXlzaHNtLm1hbmFnZWRoc20uYXp1cmUubmV0L2tleXMvdGVzdHJlbGVhc2VrZXk1ODgzNDE5NTgvNjU0NGU5OTc3MmYwNDcxYjljYWRlNTEzYzdmNjg2YjQiLCJrdHkiOiJFQyIsIngiOiJDY0FDZ1N3UXcwTDk5MjB0YTZabWgxOXZ1NVh2bHlIVWZMeGVLUzhDaTd3IiwieSI6Ik1oVkY5eEN2Z1BUblduN2xUNmFOb1drTXBrdzZhT1NhX1dkNnRySEdyNjgifSwicmVsZWFzZV9wb2xpY3kiOnsiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04IiwiZGF0YSI6ImV5SmhibmxQWmlJNlczc2lZVzU1VDJZaU9sdDdJbU5zWVdsdElqb2ljMlJyTFhSbGMzUWlMQ0psY1hWaGJITWlPaUowY25WbEluMWRMQ0poZFhSb2IzSnBkSGtpT2lKb2RIUndjem92TDJOb2JHOTNaV0Y2YTJWNWMzTnBkR1V1WVhwMWNtVjNaV0p6YVhSbGN5NXVaWFF2SW4xZExDSjJaWEp6YVc5dUlqb2lNUzR3TGpBaWZRIiwiaW1tdXRhYmxlIjpmYWxzZX19fX0.JMFqqCYgAls9aPi5Z0WZ6duPAjD7coj96OetAwJd8BMgkJ1xsihAbIOErwn8wIT6seYmHFm4db90Ql9T0sG1Mjtw3paw5XU1AN9YXS1M1iFpYN_KcK3TD2zQJVRIr61qfeApJ_p4l9qUbfGBozilYA43zGJs8-HuwKl2Z9zgw0xV7-zmNJVV0oGEAhiT8C-DyoV9WBEMyUj6hqYmihw6PlTB4tGszHoKOgFQscriyiXQWD5tjqKpzhFfNrdUh-ZRq34b4mSv4YrasHNF50qntXHnchENskrpY_Mgt5PiJquXHTWLJMMMKlnvxhHXVrq1iMHMesj4N-VgrTtunc1enw" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "860", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1ffbc886-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "77" - }, - "ResponseBody": { - "attributes": { - "created": 1653590772, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653590772 - }, - "deletedDate": 1653590776, - "key": { - "crv": "P-256K", - "key_ops": [ - "verify", - "sign" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958/6544e99772f0471b9cade513c7f686b4", - "kty": "EC-HSM", - "x": "CcACgSwQw0L9920ta6Zmh19vu5XvlyHUfLxeKS8Ci7w", - "y": "MhVF9xCvgPTnWn7lT6aNoWkMpkw6aOSa_Wd6trHGr68" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey588341958", - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": false - }, - "scheduledPurgeDate": 1654195576 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey588341958?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "860", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220503-3-e1430fa9-1.0.20220430-1-f02155ab-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "200f618e-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "24" - }, - "ResponseBody": { - "attributes": { - "created": 1653590772, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653590772 - }, - "deletedDate": 1653590776, - "key": { - "crv": "P-256K", - "key_ops": [ - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/testreleasekey588341958/6544e99772f0471b9cade513c7f686b4", - "kty": "EC-HSM", - "x": "CcACgSwQw0L9920ta6Zmh19vu5XvlyHUfLxeKS8Ci7w", - "y": "MhVF9xCvgPTnWn7lT6aNoWkMpkw6aOSa_Wd6trHGr68" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey588341958", - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": false - }, - "scheduledPurgeDate": 1654195576 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/testreleasekey588341958?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "201b49c2-dd24-11ec-ae10-6045bd86ce4d", - "x-ms-server-latency": "109" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_NON-HSM_latest.json b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_NON-HSM_latest.json deleted file mode 100644 index 97149399543c..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_NON-HSM_latest.json +++ /dev/null @@ -1,425 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:26 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "394268cd-c201-459a-9098-22c479f17b40" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "248", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "exportable": true - }, - "crv": "P-256K", - "kty": "EC-HSM", - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0" - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "707", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:29 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1725;da_age=7750;rd_age=7750;brd_age=17922;ra_notif_age=2468;dec_lev=2;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "5442bef1-96ec-4bbf-b8a7-f1473112aa4e" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719/37e0512dc1be423185ea599f9ea681c0", - "kty": "EC-HSM", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256K", - "x": "Fa7eaeXoctP8xnB48ljnPSmokVrIE-4k1EAKA9dkR5o", - "y": "htMthVD7W6V9IXJAN74rRiRWWqHRq5-ScV9es7mLhvg" - }, - "attributes": { - "enabled": true, - "created": 1653592408, - "updated": 1653592408, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - }, - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJ2ZXJzaW9uIjoiMS4wLjAiLCJhbnlPZiI6W3siYXV0aG9yaXR5IjoiaHR0cHM6Ly9jaGxvd2VhemtleXNzaXRlLmF6dXJld2Vic2l0ZXMubmV0IiwiYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dfV19", - "immutable": false - } - } - }, - { - "RequestUri": "https://fakeattestation/generate-test-token", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept-Encoding": "gzip", - "User-Agent": "Go-http-client/1.1" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Content-Length": "20", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:31 GMT", - "ETag": "W/\u0022502-HtBTa85GNnwWxITuWvuRNu2L6zQ\u0022", - "X-Powered-By": "Express" - }, - "ResponseBody": { - "token": "redacted" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719/release?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "21", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "target": "redacted" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "10997", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:48 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1729;da_age=7753;rd_age=7753;brd_age=17925;ra_notif_age=2472;dec_lev=1;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6ca7ff20-b7bf-4cc0-84b2-cf81fc0e1a77" - }, - "ResponseBody": { - "value": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjZFMDQ1MDhGRkNFOThFNTUwNTI1MDQ0NjMzRkIyODI4NUEzM0E2RTIiLCJ4NXQiOiJiZ1JRal96cGpsVUZKUVJHTV9zb0tGb3pwdUkiLCJ0eXAiOiJKV1QiLCJ4NXQjUzI1NiI6IjB0MmFSNGhQZlBsSmkzR0txWHoyZWtQUUF3ZjNkWGM2R3FhNUxnbFFoM0kiLCJ4NWMiOlsiTUlJSU1UQ0NCaG1nQXdJQkFnSVRmd0FtYzhOaDhVcjJjMVdkWUFBQUFDWnp3ekFOQmdrcWhraUc5dzBCQVFzRkFEQlBNUXN3Q1FZRFZRUUdFd0pWVXpFZU1Cd0dBMVVFQ2hNVlRXbGpjbTl6YjJaMElFTnZjbkJ2Y21GMGFXOXVNU0F3SGdZRFZRUURFeGROYVdOeWIzTnZablFnVWxOQklGUk1VeUJEUVNBd01qQWVGdzB5TWpBek1qRXdNelUyTlRSYUZ3MHlNekF6TWpFd016VTJOVFJhTUJveEdEQVdCZ05WQkFNVEQzWmhkV3gwTG1GNmRYSmxMbTVsZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTnpJbENqWFd2d0lXNW9TRjY4TEU1dmp2bTdOM1l1b3NXWVJiM0ZobkRCV0hEdWZQUytWQmxVdFRsZWZDcjF4Q1N3Y3VBU2YvcllHbHVrM09UVEd6Rk4yd0JkQ2JTclAvaWlrMDEyMkt4Tzh1TGo4MXpuRHptNWZMR2pMbFp6QXV2ZFZrUE11TzE1T0t3VHZqOUthdFBOZHB5QnNJa0JNK3RhczNXS1MwNWR2cnRaWmFIUUoremV0TnlIYjZ3L045TTR4c05hbE1kVHNrVUZMUFlMbm9ScXRjaU5PMUV4WFZQNGsvb1lTb09JMnZrRHo1YmZNUVFsMEx1Z2FQY2pIdEhmRWpwNmQvRDNIbk93WWQ5SExZRFlxYVRLYmQwVUZQWFUwOEV4OVgyTUlXaUo0aFZLeTNIOVlSNFJOSTJ6NmNOZFFvem5KQXlxLzJvb1JlV3REWFNFQ0F3RUFBYU9DQkRrd2dnUTFNSUlCZlFZS0t3WUJCQUhXZVFJRUFnU0NBVzBFZ2dGcEFXY0FkZ0RvUHREYVB2VUdOVExuVnlpOGlXdkpBOVBMMFJGcjdPdHA0WGQ5YlFhOWJnQUFBWCtxcUNMRkFBQUVBd0JITUVVQ0lBWmx1Q3prMnEvZGRYWUYzNytaeWJMcWRrOTRuTnZOd2dmemdic3VrN2w5QWlFQTNmb2IrZlcxaERXZzhsLzhXTCtFUCs4ZmRlQ2pXWU9VaXFXWkVnUGQrcW9BZFFDemMzY0g0WVJRK0dPRzFnV3AzQkVKU25rdHNXY01DNGZjOEFNT2VUYWxtZ0FBQVgrcXFDUHVBQUFFQXdCR01FUUNJRVc0Tk1xS21CcVBoc2laV2h1RzNYODFCVHVIVWNwd0hlR3R0NVFHK043ckFpQjdrQ3V1L1V6ZFVhZ0p4M3Rma0EwTW9rM0RYT3M4aDlaUm02OUMvanRLK3dCMkFGV0IxTUlXa0RZQlN1b0xtMWM4VS9EQTVEaDRjQ1VJRnkranFoMEhFOU1NQUFBQmY2cW9KRzBBQUFRREFFY3dSUUloQUx6WUJHMzBLL2M3M0lBTUxXNFFSZXdHOWJpU0psblNYcENZWi9Ndmt4azVBaUFzckMyRDJGZzJvT2lzODNvUmxSTzRTWEFFSnQ1WjdtYll6azROT1NJOEFUQW5CZ2tyQmdFRUFZSTNGUW9FR2pBWU1Bb0dDQ3NHQVFVRkJ3TUJNQW9HQ0NzR0FRVUZCd01DTUQ0R0NTc0dBUVFCZ2pjVkJ3UXhNQzhHSnlzR0FRUUJnamNWQ0lmYWhuV0Q3dGtCZ3NtRkc0RzFubUdGOU90Z2dWMkZobzVCaDhLWVVBSUJaQUlCSnpDQmh3WUlLd1lCQlFVSEFRRUVlekI1TUZNR0NDc0dBUVVGQnpBQ2hrZG9kSFJ3T2k4dmQzZDNMbTFwWTNKdmMyOW1kQzVqYjIwdmNHdHBMMjF6WTI5eWNDOU5hV055YjNOdlpuUWxNakJTVTBFbE1qQlVURk1sTWpCRFFTVXlNREF5TG1OeWREQWlCZ2dyQmdFRkJRY3dBWVlXYUhSMGNEb3ZMMjlqYzNBdWJYTnZZM053TG1OdmJUQWRCZ05WSFE0RUZnUVVoV3FSbm0wODRlVzQvOUZJVkQzdVFzN1psVU13RGdZRFZSMFBBUUgvQkFRREFnU3dNRVFHQTFVZEVRUTlNRHVDRDNaaGRXeDBMbUY2ZFhKbExtNWxkSUlSS2k1MllYVnNkQzVoZW5WeVpTNXVaWFNDRlNvdWRtRjFiSFJqYjNKbExtRjZkWEpsTG01bGREQ0JzQVlEVlIwZkJJR29NSUdsTUlHaW9JR2ZvSUdjaGsxb2RIUndPaTh2YlhOamNtd3ViV2xqY205emIyWjBMbU52YlM5d2Eya3ZiWE5qYjNKd0wyTnliQzlOYVdOeWIzTnZablFsTWpCU1UwRWxNakJVVEZNbE1qQkRRU1V5TURBeUxtTnliSVpMYUhSMGNEb3ZMMk55YkM1dGFXTnliM052Wm5RdVkyOXRMM0JyYVM5dGMyTnZjbkF2WTNKc0wwMXBZM0p2YzI5bWRDVXlNRkpUUVNVeU1GUk1VeVV5TUVOQkpUSXdNREl1WTNKc01GY0dBMVVkSUFSUU1FNHdRZ1lKS3dZQkJBR0NOeW9CTURVd013WUlLd1lCQlFVSEFnRVdKMmgwZEhBNkx5OTNkM2N1YldsamNtOXpiMlowTG1OdmJTOXdhMmt2YlhOamIzSndMMk53Y3pBSUJnWm5nUXdCQWdFd0h3WURWUjBqQkJnd0ZvQVUveTkvNFFiME9QTXQ3U1dObU1MK0R2WnMvUG93SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQjBwd2ZISUhHUUlXY2NEeEZCMVR2R1pvMUF0cEF2RERMOVpzRzNRbmY2d1cvZzgzZGw5bTZ6RlpTMjVJVnhTaHdPS3UzMk5oeXR4YXNKdlNOV2pIb3dNZmJyMDhFUk1ySkk2YnpneUVyeWErMXdLUmZKQURuaUpWU3lvK3NqN00vN1oxV3hlQWZBb05RY3pmRU9SenNXN0srNTYydHZnL3ZTU0x6Z28zeVg0cjZLbGJrV2tjL285TE1KUlo2ZUFrOEtWWFVhS1NFeVhkTmdySXRudjNhZzhYVWd5WHdkTW9pTVVsd0gxbzhBNlFEdFV2REcvZE1sLzBrMWFhYk83Yy9kUm56bUlkRXM4YnA0TElGU0pPT0tmQmdNT0tGTG95aVMzTlBaMVljOEFNSk9oK2QzdC8xekJadFdYVnBaYXNRUjZsNHJOVXM0V3lOS3NuUmswVmphSWd2Vkc0eFdUaWhWdE1yQjNoZHA0SEtGWFk3UEtjTnFPS3pNTjhPeWVqWFpya2xsZG5OWDlvTjllQWZVeXJsQjZ3T0hCRVdpQ2pXUTR0TFQ4MUh0ZERjb3UxaUZWQkpZZVIyOXg1cGUzV0xCNDBmU0s4QWhXcWRzanMrSzZEaWk5RjVmVVNrMjkzMUlaWDBEbmUza2tmaWNDS24vMFVOUUNYK0owOWM4TEo4YXJRU0l1bERzOHR0WmNlQjZCM3lOWU9aeVdZKzZ0bndPZHRXNVF1dWl0UUk2NmVVOWJ0L2s5Q1Q1N2FtSEtaS1JMdThZRlpPb21BajlLcHkyRlBCUzhZdmxnOHZ3WC9ndjBiUHFLSE5hQVJLcEdUTEt0OEg5TFhYN2dGZzUxY21RVlY0RmFJNU54SVY5cHptakdPYkRzeVl5bEluSzBwN25OdlFnd3oxTzVBPT0iLCJNSUlGV2pDQ0JFS2dBd0lCQWdJUUQ2ZEhJc1U5aU1nUFdKNzdINTFLT2pBTkJna3Foa2lHOXcwQkFRc0ZBREJhTVFzd0NRWURWUVFHRXdKSlJURVNNQkFHQTFVRUNoTUpRbUZzZEdsdGIzSmxNUk13RVFZRFZRUUxFd3BEZVdKbGNsUnlkWE4wTVNJd0lBWURWUVFERXhsQ1lXeDBhVzF2Y21VZ1EzbGlaWEpVY25WemRDQlNiMjkwTUI0WERUSXdNRGN5TVRJek1EQXdNRm9YRFRJME1UQXdPREEzTURBd01Gb3dUekVMTUFrR0ExVUVCaE1DVlZNeEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakVnTUI0R0ExVUVBeE1YVFdsamNtOXpiMlowSUZKVFFTQlVURk1nUTBFZ01ESXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFEMHdCbFpxaW9rZkFZaE1kSHVFdldCYXBUajl0RktMK05kc1M0cEZEaTh6SlZkS1FmUitGMDM5Q0RYdEQ5WU9ucVM3bzg4K2lzS2NnT2VRTlRyaTQ3Mm1Qbm44TjN2UENYMGJET0VWaytua1pOSUJBM3pBcHZHR2cvNDBUaHY3OGtBbHhpYk1pcHNLYWhkYnVvSEJ5T0I0WmxZb3RjQmhmL09iVWY2NWtDUmZYTVJRcU9LV2taTGtpbFBQbjN6a1lNNUdIeGVJNE1OWjFTb0tCRW9IYTJFL3VEd0JRVnhhZFk0U1JaV0Z4TWQ3QVJ5STRDejFpazROMlo2QUxEM01makFnRUVEd29rbnl3OVRHdnI0UHViQVpkcVU1MTF6TkxCb2F2YXIyT0FWVGwwVGRkaitSQWhiblgxL3p5cHFrK2lmditkM0NnaURhOE1idm8xdTJROG51VUJyS1ZVbVI2RWprVi9kRHJJc1VhVTY0M3YvV3AvdUU3eExEZGhDNXJwbEs5c2lObFlvaE1UTUtMQWtqeFZlV0JXYlFqN1JFaWNrSVNwYyt5b3dpM3lVck81bENnTkFLckNOWXcrd0FmQXZoRmtPZXFQbTZrUDQxSUhWWFZ0R05DL1VvZ2NkaUtVaVIvTjU5SWZZQitvMnY1NEdNVyt1YlNDM0JvaExGYmhvL29aWjVYeXVsSVpLNzVwd1RIbWF1Q0llRTVjbFU5aXZwTHdQVHg5YjBWbm85K0FwRWxyRmdkWTAvWUtaNDZHZmpPQzl0YTRHMjVWSjFXS3NNbVdMdHp5cmZnd2JZb3BxdVpkNzI0ZkZkcHZzeGZJdk1HNW0zVkZrVGhPcXpzT3R0RGNVZnlNVHFNMnBhbjR0eEc1OHV4TkowTWpSMDNVQ0VVTFJVK3FNbndJREFRQUJvNElCSlRDQ0FTRXdIUVlEVlIwT0JCWUVGUDh2ZitFRzlEanpMZTBsalpqQy9nNzJiUHo2TUI4R0ExVWRJd1FZTUJhQUZPV2RXVENDUjFqTXJQb0lWRGFHZXpxMUJFM3dNQTRHQTFVZER3RUIvd1FFQXdJQmhqQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBUVlJS3dZQkJRVUhBd0l3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBMEJnZ3JCZ0VGQlFjQkFRUW9NQ1l3SkFZSUt3WUJCUVVITUFHR0dHaDBkSEE2THk5dlkzTndMbVJwWjJsalpYSjBMbU52YlRBNkJnTlZIUjhFTXpBeE1DK2dMYUFyaGlsb2RIUndPaTh2WTNKc015NWthV2RwWTJWeWRDNWpiMjB2VDIxdWFYSnZiM1F5TURJMUxtTnliREFxQmdOVkhTQUVJekFoTUFnR0JtZUJEQUVDQVRBSUJnWm5nUXdCQWdJd0N3WUpLd1lCQkFHQ055b0JNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNnMmQxNjVkUTF0SFMwSU44M3VPaTRTNWhlTGhzeCt6WElPd3R4bnZ3Q1dkT0ozd0ZMUWFGRGNnYU10Tjc5VWpNSUZWSVVlZERaQnN2YWxLbngrNmwydE0vVkg0WUF5TlB4K3UxTEZSMGpvUFlwUVlMYk5Za2Vka051aFJtRUJlc1BxajRhRHo2OFpESTZmSjkyc2oycTE4UXZKVUo1UXo3MjhBdnRGT2F0K0FqZ0swUEZxUFlFQXZpVUtyMTYyTkIxWFpKeGY2dXlJalVsbkc0VUVkSGZVcWRobDBSODRtTXRyWUlOa3NUelEyc0hZTThmRWhxSUN0VGxjUkxyL0ZFclVhUFVlOTY0OG56aVNuQTBxS0g3clVacVAvSWZtYm8rV05aU1pHMUJiZ09obGsrNTIxVytOY2loM0hSYnZSQkUwTFdZVDh2V0tuZmpnWkt4d0h3SiIsIk1JSURkekNDQWwrZ0F3SUJBZ0lFQWdBQXVUQU5CZ2txaGtpRzl3MEJBUVVGQURCYU1Rc3dDUVlEVlFRR0V3SkpSVEVTTUJBR0ExVUVDaE1KUW1Gc2RHbHRiM0psTVJNd0VRWURWUVFMRXdwRGVXSmxjbFJ5ZFhOME1TSXdJQVlEVlFRREV4bENZV3gwYVcxdmNtVWdRM2xpWlhKVWNuVnpkQ0JTYjI5ME1CNFhEVEF3TURVeE1qRTRORFl3TUZvWERUSTFNRFV4TWpJek5Ua3dNRm93V2pFTE1Ba0dBMVVFQmhNQ1NVVXhFakFRQmdOVkJBb1RDVUpoYkhScGJXOXlaVEVUTUJFR0ExVUVDeE1LUTNsaVpYSlVjblZ6ZERFaU1DQUdBMVVFQXhNWlFtRnNkR2x0YjNKbElFTjVZbVZ5VkhKMWMzUWdVbTl2ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS01FdXlLcm1EMVg2Q1p5bXJWNTFDbmk0ZWlWZ0xHdzQxdU9LeW1hWk4raFhlMndDUVZ0MnlndXptS2lZdjYwaU5vUzZ6anJJWjNBUVNzQlVudUlkOU1jajhlNnVZaTFhZ25uYytnUlFLZlJ6TXBpalMzbGp3dW1VTktvVU1NbzZ2V3JKWWVLbXBZY3FXZTRQd3pWOS9sU0V5L0NHOVZ3Y1BDUHdCTEtCc3VhNGRuS00zcDMxdmpzdWZGb1JFSklFOUxBd3FTdVhtRCt0cVlGL0xUZEIxa0MxRmtZbUdQMXBXUGdrQXg5WGJJR2V2T0Y2dXZVQTY1ZWhENWYveFh0YWJ6NU9UWnlkYzkzVWszenlaQXN1VDNseVNOVFB4OGttQ0ZjQjVrcHZjWTY3T2R1aGpwcmwzUmpNNzFvR0RId2VJMTJ2L3llamwwcWhxZE5rTnduR2prQ0F3RUFBYU5GTUVNd0hRWURWUjBPQkJZRUZPV2RXVENDUjFqTXJQb0lWRGFHZXpxMUJFM3dNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnRUdNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUNGREYyTzVHOVJhRUlGb04yN1R5Y2xoQU85OTJUOUxkY3c0NlFRRit2YUtTbTJlVDkyOWhrVEk3Z1FDdmxZcE5SaGNMMEVZV29TaWhmVkNyM0Z2REI4MXVrTUpZMkdRRS9zektOK09NWTNFVS90M1dneGprelNzd0YwN3I1MVhnZElHbjl3L3haY2hNQjVoYmdGL1grK1pSR2pEOEFDdFBoU056a0UxYWt4ZWhpL29DcjBFcG4zbzBXQzR6eGU5WjJldGNpZWZDN0lwSjVPQ0JSTGJmMXdiV3NhWTcxazVoKzN6dkR5bnk2N0c3ZnlVSWh6a3NMaTR4YU5taklDcTQ0WTNla1FFZTUrTmF1UXJ6NHdsSHJRTXoyblpRLzEvSTZlWXM5SFJDd0JYYnNkdFRMU1I5STRMdEQrZ2R3eWFoNjE3anpWL09lQkhSbkRKRUxxWXptcCJdfQ.eyJyZXF1ZXN0Ijp7ImFwaS12ZXJzaW9uIjoiNy4zIiwiZW5jIjoiQ0tNX1JTQV9BRVNfS0VZX1dSQVAiLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5cy52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0cmVsZWFzZWtleTMzNTgwMzg3MTkifSwicmVzcG9uc2UiOnsia2V5Ijp7ImtleSI6eyJraWQiOiJodHRwczovL2NobG93ZWF6a2V5cy52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0cmVsZWFzZWtleTMzNTgwMzg3MTkvMzdlMDUxMmRjMWJlNDIzMTg1ZWE1OTlmOWVhNjgxYzAiLCJrdHkiOiJFQy1IU00iLCJrZXlfb3BzIjpbInNpZ24iLCJ2ZXJpZnkiXSwiY3J2IjoiUC0yNTZLIiwieCI6IkZhN2VhZVhvY3RQOHhuQjQ4bGpuUFNtb2tWcklFLTRrMUVBS0E5ZGtSNW8iLCJ5IjoiaHRNdGhWRDdXNlY5SVhKQU43NHJSaVJXV3FIUnE1LVNjVjllczdtTGh2ZyIsImtleV9oc20iOiJleUp6WTJobGJXRmZkbVZ5YzJsdmJpSTZJakV1TUNJc0ltaGxZV1JsY2lJNmV5SnJhV1FpT2lKbVlXdGxMWEpsYkdWaGMyVXRhMlY1SWl3aVlXeG5Jam9pWkdseUlpd2laVzVqSWpvaVEwdE5YMUpUUVY5QlJWTmZTMFZaWDFkU1FWQWlmU3dpWTJsd2FHVnlkR1Y0ZENJNklrTnNlbEZ5UXprMlMxTm9TRzlmUmsxNU0xRkROVkZLUW1wMVJtVk5NRGt3UmpsaVpFdDFUa3BGYjJ4V1NXeE5VVXhXVDJoRFQwMUpVSEEzVW1sdGEwZHFRMmhNTm5wWmMyZFVXV0pIZDNCRGR6QXRVM1YwVFhOSFpEZFRTa3Q2VjFsWWJVSTNVa1EyYmtVd2RFcDZVVlE1WVZSTWNWWmFkelZFV1dkWk9ERkVUSE5VWVdWUVR6WXRVa3hHYjAxSGQzZzRRM3BMTlRSa2JuWmFhblp3VlRWT1gzWlBORE5GTVROc1MxOXJNVXQyTkd4dFowWkxhRmhHVW5wUWVFdDFiazFwVUVOSVlUaG9jWEJHVTJwM1N6UnlWMnRDUzB0dlUyRkdZbTgzV2tJeU1rdzRWMDh0ZWw5cmVrOVNSVVZJV1UxR1ZuQlVlRzkyVTA1bFVGbERlRUZUTjJsYVYyTlplWHBpVDNZMk5FczNTa0ZKZVRGM1ZYUklTVTlQUmtwd2JqZzVYMDlWYUVoRFNrOVpSVlo0VjFSa1dXSXlWRkpLYlZkd1RVRnJiSFp5VUhoTVRrMXNVWE5KVjBGZmFYUldNa2RSTWtwdVJuZEpSVXg2ZFhSNU9VcEliVXhGYVZWc2VXRmtNa0pOU1cwelExaEVkRWhMVFVwZllsUkljMVIyTUdaRmRVZFphVFEyYWxCb2F6STNVM0JWVmpCV1RFbGFSVEpTYmt0VGVEZDFOVU10VEVKc1VrSXRRUzFQWWsxUGIzZDRaMDlvWjNWeFIwODNOSE5tYkU5elpXdzVTVE0zWm1OaGRqTlBha1JhTW5kRmQyRmpRV1JUUVU0M1pIcHFRV3h4YWxScFdWTlhhbmhSWVVoaFQzQnRaMFY0U2tZNU5YbHNXSGxaZDJsQk5VaENOUzFpUmpsNFFWTlhjWG94YUVoSk1HYzRUMUkxYVZKU2J6VjFPRlJ3YjE4M1MyNWhiVVE1VnpodFFXZEVNM1Z5ZWtadVQyMXpURVZWZDNkc1pHOVlRVnBEYTBNMlVIZEVRbWxvT1dwbVJGa3hiak5WZWt0UGJUbE5VRTFtVDBwd1pGRjROREJpYTNsMVlsaFhaVEpJWTBkbmFXOWlTamd4WmtKdmFpMWlaWFJZWmpCbVpIb3paMlpGUkVGVGQwMUtkbTlZU0hFd2RuaE5aVTloYldoNWJ6RlFTRE0zWWtwa1ZVbHJZMkpOWTA1MExTMUJVREZ5VjA5WlJFMWhNVWt4T0ZVMVlqUm9VR0YyU0dZM1EzbFZiUzE0TTNCTVJ6RmZVMU0wWjI4aWZRIn0sImF0dHJpYnV0ZXMiOnsiZW5hYmxlZCI6dHJ1ZSwiY3JlYXRlZCI6MTY1MzU5MjQwOCwidXBkYXRlZCI6MTY1MzU5MjQwOCwicmVjb3ZlcnlMZXZlbCI6IkN1c3RvbWl6ZWRSZWNvdmVyYWJsZStQdXJnZWFibGUiLCJyZWNvdmVyYWJsZURheXMiOjcsImV4cG9ydGFibGUiOnRydWV9LCJyZWxlYXNlX3BvbGljeSI6eyJkYXRhIjoiZXlKMlpYSnphVzl1SWpvaU1TNHdMakFpTENKaGJubFBaaUk2VzNzaVlYVjBhRzl5YVhSNUlqb2lhSFIwY0hNNkx5OWphR3h2ZDJWaGVtdGxlWE56YVhSbExtRjZkWEpsZDJWaWMybDBaWE11Ym1WMElpd2lZVzU1VDJZaU9sdDdJbU5zWVdsdElqb2ljMlJyTFhSbGMzUWlMQ0psY1hWaGJITWlPaUowY25WbEluMWRmVjE5IiwiaW1tdXRhYmxlIjpmYWxzZX19fX0.RsAKzu2EwiXm_DCiZzuT7XELZDE25Xqp-XxvsycqcJXYXcrDHMgpf6YqytrOCYSNZOZoXs5MTdM4JQwtjsuN-vmrQQho5nDEMmu41Fes6owsX_4Uxw2jPK56XS3lUnyFlSxu5Gm5SUzmqHxNv900o7USgRNtoFJyOHK4h8uWx6x4RqyPbvE5AKDOS9Bu0IJO6qzKA-4V9nXIbvod9p5qjOAm1O4pFY28yyQEU2IAbhlY4Dkf5-sHpjpPOYR_farERVfaINFCTqbN1bzaypS7t1EaaN3ec3gEViPH5ofOzV20Dc9ns2fisVOE-OKhcZ2uWZ7ketLvK3xPWGBR95nV9w" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "575", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:48 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1746;da_age=7770;rd_age=7770;brd_age=17943;ra_notif_age=2489;dec_lev=1;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1cd027fe-d39d-4b70-823b-a059b8700f7d" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719", - "deletedDate": 1653592429, - "scheduledPurgeDate": 1654197229, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719/37e0512dc1be423185ea599f9ea681c0", - "kty": "EC-HSM", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256K", - "x": "Fa7eaeXoctP8xnB48ljnPSmokVrIE-4k1EAKA9dkR5o", - "y": "htMthVD7W6V9IXJAN74rRiRWWqHRq5-ScV9es7mLhvg" - }, - "attributes": { - "enabled": true, - "created": 1653592408, - "updated": 1653592408, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:49 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1746;da_age=7771;rd_age=7771;brd_age=17943;ra_notif_age=2489;dec_lev=1;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "844745ea-dd46-4e48-b633-9a4db107430f" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: testreleasekey3358038719" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:50 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1747;da_age=7772;rd_age=7772;brd_age=17944;ra_notif_age=2490;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "e21d9d60-0efb-4780-92d2-fbf4e4c359d1" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: testreleasekey3358038719" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:51 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1748;da_age=7773;rd_age=7773;brd_age=17945;ra_notif_age=2491;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "38b82e2e-8354-4514-bd45-ccc034783ed7" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: testreleasekey3358038719" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:52 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1750;da_age=7774;rd_age=7774;brd_age=17946;ra_notif_age=2493;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "52d1a7a7-b0ec-452b-bdd8-afefa0210aff" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: testreleasekey3358038719" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "575", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 19:13:53 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1751;da_age=7775;rd_age=7775;brd_age=17948;ra_notif_age=2494;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "7bb88f07-9e8d-4f78-b538-6c480d9367e0" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719", - "deletedDate": 1653592429, - "scheduledPurgeDate": 1654197229, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/testreleasekey3358038719/37e0512dc1be423185ea599f9ea681c0", - "kty": "EC-HSM", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256K", - "x": "Fa7eaeXoctP8xnB48ljnPSmokVrIE-4k1EAKA9dkR5o", - "y": "htMthVD7W6V9IXJAN74rRiRWWqHRq5-ScV9es7mLhvg" - }, - "attributes": { - "enabled": true, - "created": 1653592408, - "updated": 1653592408, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey3358038719?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Thu, 26 May 2022 19:13:54 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=1751;da_age=7776;rd_age=7776;brd_age=17948;ra_notif_age=2494;dec_lev=1;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c2bda3b9-11e4-4570-a308-546944194dc4" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_NON-HSM_specificVersion.json b/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_NON-HSM_specificVersion.json deleted file mode 100644 index 103df73c4c23..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestReleaseKey/TestReleaseKey_NON-HSM_specificVersion.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:45:59 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "45df6a49-f24f-4728-a218-13a60c8ff53e" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "248", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "exportable": true - }, - "crv": "P-256K", - "kty": "EC-HSM", - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0" - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "707", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:02 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=77;da_age=6102;rd_age=6102;brd_age=16274;ra_notif_age=820;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6ca8f6e6-5035-4b7e-b253-16291ccd5098" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984/e280b07ffa4b4cc595f42f4ca94d6b1b", - "kty": "EC-HSM", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256K", - "x": "FSPlrHGc2wtgiLKkrzKMK5Z6NJly_BQE9QO94iU6MwM", - "y": "tlC6PKBo9uKQlpv8kEf7bXIoCMPUcIJaLt1Juhpy3I4" - }, - "attributes": { - "enabled": true, - "created": 1653590760, - "updated": 1653590760, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - }, - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJ2ZXJzaW9uIjoiMS4wLjAiLCJhbnlPZiI6W3siYXV0aG9yaXR5IjoiaHR0cHM6Ly9jaGxvd2VhemtleXNzaXRlLmF6dXJld2Vic2l0ZXMubmV0IiwiYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dfV19", - "immutable": false - } - } - }, - { - "RequestUri": "https://fakeattestation/generate-test-token", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept-Encoding": "gzip", - "User-Agent": "Go-http-client/1.1" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Content-Length": "20", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:02 GMT", - "ETag": "W/\u0022502-ddg1B5nTlhbJ3woMo4jugPwzBtM\u0022", - "X-Powered-By": "Express" - }, - "ResponseBody": { - "token": "redacted" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984/e280b07ffa4b4cc595f42f4ca94d6b1b/release?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "21", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "target": "redacted" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "11041", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=80;da_age=6104;rd_age=6104;brd_age=16277;ra_notif_age=823;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "13d8c660-cd40-43d4-9a3f-b1ba9fa5ed5d" - }, - "ResponseBody": { - "value": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjZFMDQ1MDhGRkNFOThFNTUwNTI1MDQ0NjMzRkIyODI4NUEzM0E2RTIiLCJ4NXQiOiJiZ1JRal96cGpsVUZKUVJHTV9zb0tGb3pwdUkiLCJ0eXAiOiJKV1QiLCJ4NXQjUzI1NiI6IjB0MmFSNGhQZlBsSmkzR0txWHoyZWtQUUF3ZjNkWGM2R3FhNUxnbFFoM0kiLCJ4NWMiOlsiTUlJSU1UQ0NCaG1nQXdJQkFnSVRmd0FtYzhOaDhVcjJjMVdkWUFBQUFDWnp3ekFOQmdrcWhraUc5dzBCQVFzRkFEQlBNUXN3Q1FZRFZRUUdFd0pWVXpFZU1Cd0dBMVVFQ2hNVlRXbGpjbTl6YjJaMElFTnZjbkJ2Y21GMGFXOXVNU0F3SGdZRFZRUURFeGROYVdOeWIzTnZablFnVWxOQklGUk1VeUJEUVNBd01qQWVGdzB5TWpBek1qRXdNelUyTlRSYUZ3MHlNekF6TWpFd016VTJOVFJhTUJveEdEQVdCZ05WQkFNVEQzWmhkV3gwTG1GNmRYSmxMbTVsZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTnpJbENqWFd2d0lXNW9TRjY4TEU1dmp2bTdOM1l1b3NXWVJiM0ZobkRCV0hEdWZQUytWQmxVdFRsZWZDcjF4Q1N3Y3VBU2YvcllHbHVrM09UVEd6Rk4yd0JkQ2JTclAvaWlrMDEyMkt4Tzh1TGo4MXpuRHptNWZMR2pMbFp6QXV2ZFZrUE11TzE1T0t3VHZqOUthdFBOZHB5QnNJa0JNK3RhczNXS1MwNWR2cnRaWmFIUUoremV0TnlIYjZ3L045TTR4c05hbE1kVHNrVUZMUFlMbm9ScXRjaU5PMUV4WFZQNGsvb1lTb09JMnZrRHo1YmZNUVFsMEx1Z2FQY2pIdEhmRWpwNmQvRDNIbk93WWQ5SExZRFlxYVRLYmQwVUZQWFUwOEV4OVgyTUlXaUo0aFZLeTNIOVlSNFJOSTJ6NmNOZFFvem5KQXlxLzJvb1JlV3REWFNFQ0F3RUFBYU9DQkRrd2dnUTFNSUlCZlFZS0t3WUJCQUhXZVFJRUFnU0NBVzBFZ2dGcEFXY0FkZ0RvUHREYVB2VUdOVExuVnlpOGlXdkpBOVBMMFJGcjdPdHA0WGQ5YlFhOWJnQUFBWCtxcUNMRkFBQUVBd0JITUVVQ0lBWmx1Q3prMnEvZGRYWUYzNytaeWJMcWRrOTRuTnZOd2dmemdic3VrN2w5QWlFQTNmb2IrZlcxaERXZzhsLzhXTCtFUCs4ZmRlQ2pXWU9VaXFXWkVnUGQrcW9BZFFDemMzY0g0WVJRK0dPRzFnV3AzQkVKU25rdHNXY01DNGZjOEFNT2VUYWxtZ0FBQVgrcXFDUHVBQUFFQXdCR01FUUNJRVc0Tk1xS21CcVBoc2laV2h1RzNYODFCVHVIVWNwd0hlR3R0NVFHK043ckFpQjdrQ3V1L1V6ZFVhZ0p4M3Rma0EwTW9rM0RYT3M4aDlaUm02OUMvanRLK3dCMkFGV0IxTUlXa0RZQlN1b0xtMWM4VS9EQTVEaDRjQ1VJRnkranFoMEhFOU1NQUFBQmY2cW9KRzBBQUFRREFFY3dSUUloQUx6WUJHMzBLL2M3M0lBTUxXNFFSZXdHOWJpU0psblNYcENZWi9Ndmt4azVBaUFzckMyRDJGZzJvT2lzODNvUmxSTzRTWEFFSnQ1WjdtYll6azROT1NJOEFUQW5CZ2tyQmdFRUFZSTNGUW9FR2pBWU1Bb0dDQ3NHQVFVRkJ3TUJNQW9HQ0NzR0FRVUZCd01DTUQ0R0NTc0dBUVFCZ2pjVkJ3UXhNQzhHSnlzR0FRUUJnamNWQ0lmYWhuV0Q3dGtCZ3NtRkc0RzFubUdGOU90Z2dWMkZobzVCaDhLWVVBSUJaQUlCSnpDQmh3WUlLd1lCQlFVSEFRRUVlekI1TUZNR0NDc0dBUVVGQnpBQ2hrZG9kSFJ3T2k4dmQzZDNMbTFwWTNKdmMyOW1kQzVqYjIwdmNHdHBMMjF6WTI5eWNDOU5hV055YjNOdlpuUWxNakJTVTBFbE1qQlVURk1sTWpCRFFTVXlNREF5TG1OeWREQWlCZ2dyQmdFRkJRY3dBWVlXYUhSMGNEb3ZMMjlqYzNBdWJYTnZZM053TG1OdmJUQWRCZ05WSFE0RUZnUVVoV3FSbm0wODRlVzQvOUZJVkQzdVFzN1psVU13RGdZRFZSMFBBUUgvQkFRREFnU3dNRVFHQTFVZEVRUTlNRHVDRDNaaGRXeDBMbUY2ZFhKbExtNWxkSUlSS2k1MllYVnNkQzVoZW5WeVpTNXVaWFNDRlNvdWRtRjFiSFJqYjNKbExtRjZkWEpsTG01bGREQ0JzQVlEVlIwZkJJR29NSUdsTUlHaW9JR2ZvSUdjaGsxb2RIUndPaTh2YlhOamNtd3ViV2xqY205emIyWjBMbU52YlM5d2Eya3ZiWE5qYjNKd0wyTnliQzlOYVdOeWIzTnZablFsTWpCU1UwRWxNakJVVEZNbE1qQkRRU1V5TURBeUxtTnliSVpMYUhSMGNEb3ZMMk55YkM1dGFXTnliM052Wm5RdVkyOXRMM0JyYVM5dGMyTnZjbkF2WTNKc0wwMXBZM0p2YzI5bWRDVXlNRkpUUVNVeU1GUk1VeVV5TUVOQkpUSXdNREl1WTNKc01GY0dBMVVkSUFSUU1FNHdRZ1lKS3dZQkJBR0NOeW9CTURVd013WUlLd1lCQlFVSEFnRVdKMmgwZEhBNkx5OTNkM2N1YldsamNtOXpiMlowTG1OdmJTOXdhMmt2YlhOamIzSndMMk53Y3pBSUJnWm5nUXdCQWdFd0h3WURWUjBqQkJnd0ZvQVUveTkvNFFiME9QTXQ3U1dObU1MK0R2WnMvUG93SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQjBwd2ZISUhHUUlXY2NEeEZCMVR2R1pvMUF0cEF2RERMOVpzRzNRbmY2d1cvZzgzZGw5bTZ6RlpTMjVJVnhTaHdPS3UzMk5oeXR4YXNKdlNOV2pIb3dNZmJyMDhFUk1ySkk2YnpneUVyeWErMXdLUmZKQURuaUpWU3lvK3NqN00vN1oxV3hlQWZBb05RY3pmRU9SenNXN0srNTYydHZnL3ZTU0x6Z28zeVg0cjZLbGJrV2tjL285TE1KUlo2ZUFrOEtWWFVhS1NFeVhkTmdySXRudjNhZzhYVWd5WHdkTW9pTVVsd0gxbzhBNlFEdFV2REcvZE1sLzBrMWFhYk83Yy9kUm56bUlkRXM4YnA0TElGU0pPT0tmQmdNT0tGTG95aVMzTlBaMVljOEFNSk9oK2QzdC8xekJadFdYVnBaYXNRUjZsNHJOVXM0V3lOS3NuUmswVmphSWd2Vkc0eFdUaWhWdE1yQjNoZHA0SEtGWFk3UEtjTnFPS3pNTjhPeWVqWFpya2xsZG5OWDlvTjllQWZVeXJsQjZ3T0hCRVdpQ2pXUTR0TFQ4MUh0ZERjb3UxaUZWQkpZZVIyOXg1cGUzV0xCNDBmU0s4QWhXcWRzanMrSzZEaWk5RjVmVVNrMjkzMUlaWDBEbmUza2tmaWNDS24vMFVOUUNYK0owOWM4TEo4YXJRU0l1bERzOHR0WmNlQjZCM3lOWU9aeVdZKzZ0bndPZHRXNVF1dWl0UUk2NmVVOWJ0L2s5Q1Q1N2FtSEtaS1JMdThZRlpPb21BajlLcHkyRlBCUzhZdmxnOHZ3WC9ndjBiUHFLSE5hQVJLcEdUTEt0OEg5TFhYN2dGZzUxY21RVlY0RmFJNU54SVY5cHptakdPYkRzeVl5bEluSzBwN25OdlFnd3oxTzVBPT0iLCJNSUlGV2pDQ0JFS2dBd0lCQWdJUUQ2ZEhJc1U5aU1nUFdKNzdINTFLT2pBTkJna3Foa2lHOXcwQkFRc0ZBREJhTVFzd0NRWURWUVFHRXdKSlJURVNNQkFHQTFVRUNoTUpRbUZzZEdsdGIzSmxNUk13RVFZRFZRUUxFd3BEZVdKbGNsUnlkWE4wTVNJd0lBWURWUVFERXhsQ1lXeDBhVzF2Y21VZ1EzbGlaWEpVY25WemRDQlNiMjkwTUI0WERUSXdNRGN5TVRJek1EQXdNRm9YRFRJME1UQXdPREEzTURBd01Gb3dUekVMTUFrR0ExVUVCaE1DVlZNeEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakVnTUI0R0ExVUVBeE1YVFdsamNtOXpiMlowSUZKVFFTQlVURk1nUTBFZ01ESXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFEMHdCbFpxaW9rZkFZaE1kSHVFdldCYXBUajl0RktMK05kc1M0cEZEaTh6SlZkS1FmUitGMDM5Q0RYdEQ5WU9ucVM3bzg4K2lzS2NnT2VRTlRyaTQ3Mm1Qbm44TjN2UENYMGJET0VWaytua1pOSUJBM3pBcHZHR2cvNDBUaHY3OGtBbHhpYk1pcHNLYWhkYnVvSEJ5T0I0WmxZb3RjQmhmL09iVWY2NWtDUmZYTVJRcU9LV2taTGtpbFBQbjN6a1lNNUdIeGVJNE1OWjFTb0tCRW9IYTJFL3VEd0JRVnhhZFk0U1JaV0Z4TWQ3QVJ5STRDejFpazROMlo2QUxEM01makFnRUVEd29rbnl3OVRHdnI0UHViQVpkcVU1MTF6TkxCb2F2YXIyT0FWVGwwVGRkaitSQWhiblgxL3p5cHFrK2lmditkM0NnaURhOE1idm8xdTJROG51VUJyS1ZVbVI2RWprVi9kRHJJc1VhVTY0M3YvV3AvdUU3eExEZGhDNXJwbEs5c2lObFlvaE1UTUtMQWtqeFZlV0JXYlFqN1JFaWNrSVNwYyt5b3dpM3lVck81bENnTkFLckNOWXcrd0FmQXZoRmtPZXFQbTZrUDQxSUhWWFZ0R05DL1VvZ2NkaUtVaVIvTjU5SWZZQitvMnY1NEdNVyt1YlNDM0JvaExGYmhvL29aWjVYeXVsSVpLNzVwd1RIbWF1Q0llRTVjbFU5aXZwTHdQVHg5YjBWbm85K0FwRWxyRmdkWTAvWUtaNDZHZmpPQzl0YTRHMjVWSjFXS3NNbVdMdHp5cmZnd2JZb3BxdVpkNzI0ZkZkcHZzeGZJdk1HNW0zVkZrVGhPcXpzT3R0RGNVZnlNVHFNMnBhbjR0eEc1OHV4TkowTWpSMDNVQ0VVTFJVK3FNbndJREFRQUJvNElCSlRDQ0FTRXdIUVlEVlIwT0JCWUVGUDh2ZitFRzlEanpMZTBsalpqQy9nNzJiUHo2TUI4R0ExVWRJd1FZTUJhQUZPV2RXVENDUjFqTXJQb0lWRGFHZXpxMUJFM3dNQTRHQTFVZER3RUIvd1FFQXdJQmhqQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBUVlJS3dZQkJRVUhBd0l3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBMEJnZ3JCZ0VGQlFjQkFRUW9NQ1l3SkFZSUt3WUJCUVVITUFHR0dHaDBkSEE2THk5dlkzTndMbVJwWjJsalpYSjBMbU52YlRBNkJnTlZIUjhFTXpBeE1DK2dMYUFyaGlsb2RIUndPaTh2WTNKc015NWthV2RwWTJWeWRDNWpiMjB2VDIxdWFYSnZiM1F5TURJMUxtTnliREFxQmdOVkhTQUVJekFoTUFnR0JtZUJEQUVDQVRBSUJnWm5nUXdCQWdJd0N3WUpLd1lCQkFHQ055b0JNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNnMmQxNjVkUTF0SFMwSU44M3VPaTRTNWhlTGhzeCt6WElPd3R4bnZ3Q1dkT0ozd0ZMUWFGRGNnYU10Tjc5VWpNSUZWSVVlZERaQnN2YWxLbngrNmwydE0vVkg0WUF5TlB4K3UxTEZSMGpvUFlwUVlMYk5Za2Vka051aFJtRUJlc1BxajRhRHo2OFpESTZmSjkyc2oycTE4UXZKVUo1UXo3MjhBdnRGT2F0K0FqZ0swUEZxUFlFQXZpVUtyMTYyTkIxWFpKeGY2dXlJalVsbkc0VUVkSGZVcWRobDBSODRtTXRyWUlOa3NUelEyc0hZTThmRWhxSUN0VGxjUkxyL0ZFclVhUFVlOTY0OG56aVNuQTBxS0g3clVacVAvSWZtYm8rV05aU1pHMUJiZ09obGsrNTIxVytOY2loM0hSYnZSQkUwTFdZVDh2V0tuZmpnWkt4d0h3SiIsIk1JSURkekNDQWwrZ0F3SUJBZ0lFQWdBQXVUQU5CZ2txaGtpRzl3MEJBUVVGQURCYU1Rc3dDUVlEVlFRR0V3SkpSVEVTTUJBR0ExVUVDaE1KUW1Gc2RHbHRiM0psTVJNd0VRWURWUVFMRXdwRGVXSmxjbFJ5ZFhOME1TSXdJQVlEVlFRREV4bENZV3gwYVcxdmNtVWdRM2xpWlhKVWNuVnpkQ0JTYjI5ME1CNFhEVEF3TURVeE1qRTRORFl3TUZvWERUSTFNRFV4TWpJek5Ua3dNRm93V2pFTE1Ba0dBMVVFQmhNQ1NVVXhFakFRQmdOVkJBb1RDVUpoYkhScGJXOXlaVEVUTUJFR0ExVUVDeE1LUTNsaVpYSlVjblZ6ZERFaU1DQUdBMVVFQXhNWlFtRnNkR2x0YjNKbElFTjVZbVZ5VkhKMWMzUWdVbTl2ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS01FdXlLcm1EMVg2Q1p5bXJWNTFDbmk0ZWlWZ0xHdzQxdU9LeW1hWk4raFhlMndDUVZ0MnlndXptS2lZdjYwaU5vUzZ6anJJWjNBUVNzQlVudUlkOU1jajhlNnVZaTFhZ25uYytnUlFLZlJ6TXBpalMzbGp3dW1VTktvVU1NbzZ2V3JKWWVLbXBZY3FXZTRQd3pWOS9sU0V5L0NHOVZ3Y1BDUHdCTEtCc3VhNGRuS00zcDMxdmpzdWZGb1JFSklFOUxBd3FTdVhtRCt0cVlGL0xUZEIxa0MxRmtZbUdQMXBXUGdrQXg5WGJJR2V2T0Y2dXZVQTY1ZWhENWYveFh0YWJ6NU9UWnlkYzkzVWszenlaQXN1VDNseVNOVFB4OGttQ0ZjQjVrcHZjWTY3T2R1aGpwcmwzUmpNNzFvR0RId2VJMTJ2L3llamwwcWhxZE5rTnduR2prQ0F3RUFBYU5GTUVNd0hRWURWUjBPQkJZRUZPV2RXVENDUjFqTXJQb0lWRGFHZXpxMUJFM3dNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnRUdNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUNGREYyTzVHOVJhRUlGb04yN1R5Y2xoQU85OTJUOUxkY3c0NlFRRit2YUtTbTJlVDkyOWhrVEk3Z1FDdmxZcE5SaGNMMEVZV29TaWhmVkNyM0Z2REI4MXVrTUpZMkdRRS9zektOK09NWTNFVS90M1dneGprelNzd0YwN3I1MVhnZElHbjl3L3haY2hNQjVoYmdGL1grK1pSR2pEOEFDdFBoU056a0UxYWt4ZWhpL29DcjBFcG4zbzBXQzR6eGU5WjJldGNpZWZDN0lwSjVPQ0JSTGJmMXdiV3NhWTcxazVoKzN6dkR5bnk2N0c3ZnlVSWh6a3NMaTR4YU5taklDcTQ0WTNla1FFZTUrTmF1UXJ6NHdsSHJRTXoyblpRLzEvSTZlWXM5SFJDd0JYYnNkdFRMU1I5STRMdEQrZ2R3eWFoNjE3anpWL09lQkhSbkRKRUxxWXptcCJdfQ.eyJyZXF1ZXN0Ijp7ImFwaS12ZXJzaW9uIjoiNy4zIiwiZW5jIjoiQ0tNX1JTQV9BRVNfS0VZX1dSQVAiLCJraWQiOiJodHRwczovL2NobG93ZWF6a2V5cy52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0cmVsZWFzZWtleTE0OTg5OTU5ODQvZTI4MGIwN2ZmYTRiNGNjNTk1ZjQyZjRjYTk0ZDZiMWIifSwicmVzcG9uc2UiOnsia2V5Ijp7ImtleSI6eyJraWQiOiJodHRwczovL2NobG93ZWF6a2V5cy52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0cmVsZWFzZWtleTE0OTg5OTU5ODQvZTI4MGIwN2ZmYTRiNGNjNTk1ZjQyZjRjYTk0ZDZiMWIiLCJrdHkiOiJFQy1IU00iLCJrZXlfb3BzIjpbInNpZ24iLCJ2ZXJpZnkiXSwiY3J2IjoiUC0yNTZLIiwieCI6IkZTUGxySEdjMnd0Z2lMS2tyektNSzVaNk5KbHlfQlFFOVFPOTRpVTZNd00iLCJ5IjoidGxDNlBLQm85dUtRbHB2OGtFZjdiWElvQ01QVWNJSmFMdDFKdWhweTNJNCIsImtleV9oc20iOiJleUp6WTJobGJXRmZkbVZ5YzJsdmJpSTZJakV1TUNJc0ltaGxZV1JsY2lJNmV5SnJhV1FpT2lKbVlXdGxMWEpsYkdWaGMyVXRhMlY1SWl3aVlXeG5Jam9pWkdseUlpd2laVzVqSWpvaVEwdE5YMUpUUVY5QlJWTmZTMFZaWDFkU1FWQWlmU3dpWTJsd2FHVnlkR1Y0ZENJNklrUTJWVkJZWjNRd2JHazJWUzF5VmpoclYwSlplVmxqUjJ3dE5HbDJabVYzYjFsS2FWZE5jV2hoTkhwQ05qaHRkRkZoWkVkWk56bFpjMWxQVkc1MGRHcFViVXRCWW1JMVgwZHJZa05YTTNjMFZsUkNlRTB0ZFUxYWNrWlJRMGhCV1Uxd2VucE5hRWMyV1dRMWR6ZFFRazlOUWpkclJXbDFjVFpwWlhoTGJsaGhja05DVDNoVWFuRjBSVmt6V1VSMWQyNVpkbVJVZW5sdlRtMUpUWEZrWVVsMVVVSm9NRlJPTkRaa2RteEJXR2xoV0RCVlMzSnJielZHYVVkMFJFaE9jRFV4YlVSVloyMTZVa3N6VjE5Qk5VeDRaRlJQTUdWUGFEVm5RMWRwVjBwMWNXTXhhSE5aUWxWNVdESmtTRVY0WDJ0clZHOWhTblV6VVZOeFRFZGtlV3BXWjA4eU5YbDBMWHBWZFZVM1NEYzNkamc1ZWpGSGRtTlRaR1JoYnpWek9XZDRNMTk1V21SMU5VOXZRVGxsZEd3eFVFeG1MVWwwU1ZGR1FUWkNNVTFGWVVwek5IRnJhWFZXY0dkbE5VeE5XbGh4YWxnMWRtTjRhR1p6VTI1S1duTTFXSFJzWkVrd1dsZFdTbHB5TVc5TVUyeDBlVTV0TFRKTU5GOWlWa0o1ZDNoUVQwSndTREYxVW5GUE9XNDJTMUJHU1dkdlVHNUJWMmxGYTJKelQydHBRekJrVURacFUxOWhiMmgxT0V0dVdVY3RYMGw1UnpreVNrUlliWFUyU21OcVdGOXRTMjl6UTBSUU0wSmZlbmQwY1dNMGJXbFNhVjkzYzNselFuSnlMVWgwUzFwcVdsVnVhblJRT1ZSdVRESlpXa2xuWVY5VlRsOTVTVzVNYjBrNGFuZE5ZbEJhZEc1VWJXbG5aVUpOZFZkRFVqUm5OMUpvVVhkRmIyWTJWbEoyWTBNek9XMTRha2RyYzIweFJGQm1USFpXWlZSNlJVUktZakEwVVZsWk1raHRjek5pV0RGdWVVWTJRM2hST0VVd2IyVk5aMjA0UzFBMVl6RlhXbGxtU1djMFdXZHFlbFJJVlZRMk5GRnBSREZzV21wU00zSXdlRk52VjBVd2VYaHJWekoyWm1OR2NEZzNWRTl2UnprMFFWQldia2w2VjFGWVpUUTBaMnBVYVRSVmRWbFpNbGxPTFhGdGF6SlhiRGx1VFZScVQydHVkMlphY0hFMGRUQldSVWgwTWtsd04xVkxTMU5IZEdwbmVEUlRRMDlsY3pKRVRpMUllVlV6WlZVaWZRIn0sImF0dHJpYnV0ZXMiOnsiZW5hYmxlZCI6dHJ1ZSwiY3JlYXRlZCI6MTY1MzU5MDc2MCwidXBkYXRlZCI6MTY1MzU5MDc2MCwicmVjb3ZlcnlMZXZlbCI6IkN1c3RvbWl6ZWRSZWNvdmVyYWJsZStQdXJnZWFibGUiLCJyZWNvdmVyYWJsZURheXMiOjcsImV4cG9ydGFibGUiOnRydWV9LCJyZWxlYXNlX3BvbGljeSI6eyJkYXRhIjoiZXlKMlpYSnphVzl1SWpvaU1TNHdMakFpTENKaGJubFBaaUk2VzNzaVlYVjBhRzl5YVhSNUlqb2lhSFIwY0hNNkx5OWphR3h2ZDJWaGVtdGxlWE56YVhSbExtRjZkWEpsZDJWaWMybDBaWE11Ym1WMElpd2lZVzU1VDJZaU9sdDdJbU5zWVdsdElqb2ljMlJyTFhSbGMzUWlMQ0psY1hWaGJITWlPaUowY25WbEluMWRmVjE5IiwiaW1tdXRhYmxlIjpmYWxzZX19fX0.HtiVddCMrebiZrd7FredQlan3sfUSRy-ANG1KuKZ0Ak8fVZjzLSlNd96mMFarIo5D2mf-ZRZUVbTHN_novHFPMYAOTkOjl9NWz3W1nAp6B0TzBVZ865gk6M4OYFJZpBDnqeKBFYpTm06Ux7nT3FdkHaBoDmlLGxY7QvWiKE11A5Yt3hGBRsm1j7XoF1mZwnEBTn6b_9JJR5Yhg0x6X8fkWznEDdMbWYyfOjOZ8TUUX838Aka5BugonGNjukbZKX_EPUlZkkVec3ogibLp796WuObua8ef3BsRJxHwFZxPy15o25jiHUX01V3m4KjoGeDBjm6RMkBFDPVjX7DFgfugA" - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "575", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=80;da_age=6105;rd_age=6105;brd_age=16277;ra_notif_age=823;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1eb9923b-482e-4f56-8208-aac9d42dba99" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey1498995984", - "deletedDate": 1653590763, - "scheduledPurgeDate": 1654195563, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984/e280b07ffa4b4cc595f42f4ca94d6b1b", - "kty": "EC-HSM", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256K", - "x": "FSPlrHGc2wtgiLKkrzKMK5Z6NJly_BQE9QO94iU6MwM", - "y": "tlC6PKBo9uKQlpv8kEf7bXIoCMPUcIJaLt1Juhpy3I4" - }, - "attributes": { - "enabled": true, - "created": 1653590760, - "updated": 1653590760, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey1498995984?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:03 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=80;da_age=6105;rd_age=6105;brd_age=16277;ra_notif_age=823;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "018c91ae-ab85-4eb6-a5df-a710f3428019" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: testreleasekey1498995984" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey1498995984?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "92", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:04 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=81;da_age=6106;rd_age=6106;brd_age=16278;ra_notif_age=825;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "ebb46473-1f6e-49ba-9f6d-af210adf27ba" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: testreleasekey1498995984" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey1498995984?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "575", - "Content-Type": "application/json; charset=utf-8", - "Date": "Thu, 26 May 2022 18:46:05 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=83;da_age=6107;rd_age=6107;brd_age=16280;ra_notif_age=826;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "50af8f85-0d0a-4536-ae83-968658b741b6" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey1498995984", - "deletedDate": 1653590763, - "scheduledPurgeDate": 1654195563, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/testreleasekey1498995984/e280b07ffa4b4cc595f42f4ca94d6b1b", - "kty": "EC-HSM", - "key_ops": [ - "sign", - "verify" - ], - "crv": "P-256K", - "x": "FSPlrHGc2wtgiLKkrzKMK5Z6NJly_BQE9QO94iU6MwM", - "y": "tlC6PKBo9uKQlpv8kEf7bXIoCMPUcIJaLt1Juhpy3I4" - }, - "attributes": { - "enabled": true, - "created": 1653590760, - "updated": 1653590760, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7, - "exportable": true - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/testreleasekey1498995984?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Thu, 26 May 2022 18:46:06 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=83;da_age=6108;rd_age=6108;brd_age=16280;ra_notif_age=826;dec_lev=0;", - "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "122fabdd-7a7f-498e-9c19-e95159d82f29" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyProperties/TestUpdateKeyProperties_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/KV.json similarity index 51% rename from sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyProperties/TestUpdateKeyProperties_NON-HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/KV.json index cf79d1668de1..d7a87569fa86 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyProperties/TestUpdateKeyProperties_NON-HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/KV.json @@ -1,7 +1,7 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3533325025/create?api-version=7.3", + "RequestUri": "https://fakevault/keys/testrotatekey2561576831/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", @@ -15,7 +15,7 @@ "Cache-Control": "no-cache", "Content-Length": "97", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:53 GMT", + "Date": "Mon, 27 Jun 2022 19:01:25 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", @@ -23,8 +23,8 @@ "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "f6f616d7-b514-4692-96bb-98c7f668ee02" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a85ea191-1378-4038-93a6-46b62cc9c56c" }, "ResponseBody": { "error": { @@ -34,135 +34,130 @@ } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3533325025/create?api-version=7.3", + "RequestUri": "https://fakevault/keys/testrotatekey2561576831/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "77", + "Content-Length": "16", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { - "attributes": { - "enabled": true, - "exp": 2527286400, - "nbf": 2524608000 - }, - "kty": "RSA" + "kty": "EC-HSM" }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "721", + "Content-Length": "412", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:54 GMT", + "Date": "Mon, 27 Jun 2022 19:01:27 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=562;da_age=5962;rd_age=5962;brd_age=5994;ra_notif_age=868;dec_lev=2;", + "x-ms-keyvault-rbac-cache": "ra_age=122;da_age=6567;rd_age=6567;brd_age=23054;ra_notif_age=412;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "1ec839db-6e36-472f-8ab1-f72df1a4543d" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "fef02d02-c2ed-4c3e-a7f6-5cdf15f2452a" }, "ResponseBody": { "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3533325025/00712de6ee8d4d0ba7ee32ce49f27f6e", - "kty": "RSA", + "kid": "https://fakevault/keys/testrotatekey2561576831/cfebfebb716840f29df36f78227f5a54", + "kty": "EC-HSM", "key_ops": [ - "encrypt", - "decrypt", "sign", - "verify", - "wrapKey", - "unwrapKey" + "verify" ], - "n": "wTMmt-ucoVcROoR4HY10Uij6nuGt_2_uYd6zN23opq9fNwSUfVVLy77-ROUscpMip4iMA13KPPxsg8lyKVNQ4aB6R3i3nBfQNlFG8JD9BQSZQmWfI27RzCoLoX-s5ZiyaUe3udcGnX4-YAZHlsLQTYxaBsbrX4DT77YBh9fzy6fiFC5geUp2KmYr9BxGeay6RYjgDEY2LCelH-6eRd_R13Jo41siTo8V4Yrotk4DTIGthk7Pu3MTPvAjXW1RfsgBnZKxcJ-QbgBtYtp9dfVTAS267TbSkKZCWM4ZLoKeA9ydvDi8GUtPNTbWpS-5DV-etgLyJVIoxzBqGO65pJCaOQ", - "e": "AQAB" + "crv": "P-256", + "x": "x3jGqtnxDrnfN2bc8Y60829Bjlp19uA1jgU3p3wmsG8", + "y": "DCueyWqrETOKTilBZwMWvYtBLNIXPrVqZDsMfdeDMYw" }, "attributes": { "enabled": true, - "nbf": 2524608000, - "exp": 2527286400, - "created": 1654558314, - "updated": 1654558314, + "created": 1656356485, + "updated": 1656356485, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3533325025/?api-version=7.3", - "RequestMethod": "PATCH", + "RequestUri": "https://fakevault/keys/testrotatekey2561576831/rotationpolicy?api-version=7.3", + "RequestMethod": "PUT", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "113", + "Content-Length": "122", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { "attributes": { - "enabled": false, - "exp": 2527290000, - "nbf": 2524608060 + "expiryTime": "P90D" }, - "key_ops": [ - "unwrapKey" - ], - "tags": { - "Tag1": "Val1" - } + "lifetimeActions": [ + { + "action": { + "type": "rotate" + }, + "trigger": { + "timeAfterCreate": "P30D" + } + } + ] }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "699", + "Content-Length": "316", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:54 GMT", + "Date": "Mon, 27 Jun 2022 19:01:27 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=563;da_age=5963;rd_age=5963;brd_age=5994;ra_notif_age=868;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=124;da_age=6569;rd_age=6569;brd_age=23056;ra_notif_age=414;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "f00b30bb-1358-4da8-8940-383c03b90014" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "a18420f3-b331-4af0-bdc5-f2e7f796aa4b" }, "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3533325025/00712de6ee8d4d0ba7ee32ce49f27f6e", - "kty": "RSA", - "key_ops": [ - "unwrapKey" - ], - "n": "wTMmt-ucoVcROoR4HY10Uij6nuGt_2_uYd6zN23opq9fNwSUfVVLy77-ROUscpMip4iMA13KPPxsg8lyKVNQ4aB6R3i3nBfQNlFG8JD9BQSZQmWfI27RzCoLoX-s5ZiyaUe3udcGnX4-YAZHlsLQTYxaBsbrX4DT77YBh9fzy6fiFC5geUp2KmYr9BxGeay6RYjgDEY2LCelH-6eRd_R13Jo41siTo8V4Yrotk4DTIGthk7Pu3MTPvAjXW1RfsgBnZKxcJ-QbgBtYtp9dfVTAS267TbSkKZCWM4ZLoKeA9ydvDi8GUtPNTbWpS-5DV-etgLyJVIoxzBqGO65pJCaOQ", - "e": "AQAB" - }, + "id": "https://fakevault/keys/testrotatekey2561576831/rotationpolicy", + "lifetimeActions": [ + { + "trigger": { + "timeAfterCreate": "P30D" + }, + "action": { + "type": "Rotate" + } + }, + { + "trigger": { + "timeBeforeExpiry": "P30D" + }, + "action": { + "type": "Notify" + } + } + ], "attributes": { - "enabled": false, - "nbf": 2524608060, - "exp": 2527290000, - "created": 1654558314, - "updated": 1654558314, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": { - "Tag1": "Val1" + "expiryTime": "P90D", + "created": 1656356487, + "updated": 1656356487 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3533325025?api-version=7.3", - "RequestMethod": "DELETE", + "RequestUri": "https://fakevault/keys/testrotatekey2561576831/rotationpolicy?api-version=7.3", + "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", @@ -173,137 +168,134 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "831", + "Content-Length": "316", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:54 GMT", + "Date": "Mon, 27 Jun 2022 19:01:27 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=563;da_age=5963;rd_age=5963;brd_age=5995;ra_notif_age=868;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=125;da_age=6569;rd_age=6569;brd_age=23056;ra_notif_age=414;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "802fcecf-2dc1-4b33-aad8-4908237007d3" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "dcf5fae3-8286-4f2d-a0fa-75d01ceef588" }, "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3533325025", - "deletedDate": 1654558315, - "scheduledPurgeDate": 1655163115, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3533325025/00712de6ee8d4d0ba7ee32ce49f27f6e", - "kty": "RSA", - "key_ops": [ - "unwrapKey" - ], - "n": "wTMmt-ucoVcROoR4HY10Uij6nuGt_2_uYd6zN23opq9fNwSUfVVLy77-ROUscpMip4iMA13KPPxsg8lyKVNQ4aB6R3i3nBfQNlFG8JD9BQSZQmWfI27RzCoLoX-s5ZiyaUe3udcGnX4-YAZHlsLQTYxaBsbrX4DT77YBh9fzy6fiFC5geUp2KmYr9BxGeay6RYjgDEY2LCelH-6eRd_R13Jo41siTo8V4Yrotk4DTIGthk7Pu3MTPvAjXW1RfsgBnZKxcJ-QbgBtYtp9dfVTAS267TbSkKZCWM4ZLoKeA9ydvDi8GUtPNTbWpS-5DV-etgLyJVIoxzBqGO65pJCaOQ", - "e": "AQAB" - }, + "id": "https://fakevault/keys/testrotatekey2561576831/rotationpolicy", + "lifetimeActions": [ + { + "trigger": { + "timeAfterCreate": "P30D" + }, + "action": { + "type": "Rotate" + } + }, + { + "trigger": { + "timeBeforeExpiry": "P30D" + }, + "action": { + "type": "Notify" + } + } + ], "attributes": { - "enabled": false, - "nbf": 2524608060, - "exp": 2527290000, - "created": 1654558314, - "updated": 1654558314, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": { - "Tag1": "Val1" + "expiryTime": "P90D", + "created": 1656356487, + "updated": 1656356487 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3533325025?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakevault/keys/testrotatekey2561576831/rotate?api-version=7.3", + "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", + "Content-Length": "0", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 404, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "81", + "Content-Length": "429", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:54 GMT", + "Date": "Mon, 27 Jun 2022 19:01:29 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=563;da_age=5963;rd_age=5963;brd_age=5995;ra_notif_age=868;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=125;da_age=6569;rd_age=6569;brd_age=23057;ra_notif_age=415;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "c3698828-86cd-4c87-aed5-0adc047ac5fd" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "c35b0393-5852-487e-a2f4-2678802d8eb9" }, "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key3533325025" + "key": { + "kid": "https://fakevault/keys/testrotatekey2561576831/de413be76b9b482b90eb471a660b8030", + "kty": "EC-HSM", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256", + "x": "XOTka-L_qcpqDKSzq0D20uKfsZyLID5HfJ8xUMgGJXM", + "y": "cb3_MpzP8ykaq53MKRG41w7yH7_9lnkoHo6W7pWT1_g" + }, + "attributes": { + "enabled": true, + "exp": 1664132487, + "created": 1656356487, + "updated": 1656356487, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3533325025?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakevault/keys/keynonexistent/rotate?api-version=7.3", + "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", + "Content-Length": "0", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 404, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "831", + "Content-Length": "302", "Content-Type": "application/json; charset=utf-8", - "Date": "Mon, 06 Jun 2022 23:31:56 GMT", + "Date": "Mon, 27 Jun 2022 19:01:29 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=564;da_age=5964;rd_age=5964;brd_age=5996;ra_notif_age=870;dec_lev=0;", + "x-ms-keyvault-rbac-cache": "ra_age=127;da_age=6571;rd_age=6571;brd_age=23058;ra_notif_age=417;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "e8ff2bd4-0482-4b9e-a46e-b26c502867dd" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "641c9f3b-f299-409e-bd21-8b3d1445740b" }, "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3533325025", - "deletedDate": 1654558315, - "scheduledPurgeDate": 1655163115, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3533325025/00712de6ee8d4d0ba7ee32ce49f27f6e", - "kty": "RSA", - "key_ops": [ - "unwrapKey" - ], - "n": "wTMmt-ucoVcROoR4HY10Uij6nuGt_2_uYd6zN23opq9fNwSUfVVLy77-ROUscpMip4iMA13KPPxsg8lyKVNQ4aB6R3i3nBfQNlFG8JD9BQSZQmWfI27RzCoLoX-s5ZiyaUe3udcGnX4-YAZHlsLQTYxaBsbrX4DT77YBh9fzy6fiFC5geUp2KmYr9BxGeay6RYjgDEY2LCelH-6eRd_R13Jo41siTo8V4Yrotk4DTIGthk7Pu3MTPvAjXW1RfsgBnZKxcJ-QbgBtYtp9dfVTAS267TbSkKZCWM4ZLoKeA9ydvDi8GUtPNTbWpS-5DV-etgLyJVIoxzBqGO65pJCaOQ", - "e": "AQAB" - }, - "attributes": { - "enabled": false, - "nbf": 2524608060, - "exp": 2527290000, - "created": 1654558314, - "updated": 1654558314, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - }, - "tags": { - "Tag1": "Val1" + "error": { + "code": "KeyNotFound", + "message": "A key with (name/id) keynonexistent was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" } } }, { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3533325025?api-version=7.3", + "RequestUri": "https://fakevault/keys/testrotatekey2561576831?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -312,22 +304,47 @@ "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 204, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Date": "Mon, 06 Jun 2022 23:31:56 GMT", + "Content-Length": "571", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:30 GMT", "Expires": "-1", "Pragma": "no-cache", "Strict-Transport-Security": "max-age=31536000;includeSubDomains", "X-Content-Type-Options": "nosniff", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", - "x-ms-keyvault-rbac-cache": "ra_age=564;da_age=5965;rd_age=5964;brd_age=5996;ra_notif_age=870;dec_lev=1;", + "x-ms-keyvault-rbac-cache": "ra_age=127;da_age=6571;rd_age=6571;brd_age=23059;ra_notif_age=417;dec_lev=1;", "x-ms-keyvault-region": "uksouth", - "x-ms-keyvault-service-version": "1.9.422.1", - "x-ms-request-id": "0da6f675-cdd6-430b-aaae-8ef304ea5c95" + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f8230a74-2470-4c83-a759-c2bac95bdb10" }, - "ResponseBody": null + "ResponseBody": { + "recoveryId": "https://fakevault/deletedkeys/testrotatekey2561576831", + "deletedDate": 1656356490, + "scheduledPurgeDate": 1656961290, + "key": { + "kid": "https://fakevault/keys/testrotatekey2561576831/de413be76b9b482b90eb471a660b8030", + "kty": "EC-HSM", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256", + "x": "XOTka-L_qcpqDKSzq0D20uKfsZyLID5HfJ8xUMgGJXM", + "y": "cb3_MpzP8ykaq53MKRG41w7yH7_9lnkoHo6W7pWT1_g" + }, + "attributes": { + "enabled": true, + "exp": 1664132487, + "created": 1656356487, + "updated": 1656356487, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } } ], "Variables": {} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyProperties/TestUpdateKeyProperties_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/MHSM.json similarity index 52% rename from sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyProperties/TestUpdateKeyProperties_HSM.json rename to sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/MHSM.json index 8edd6094d3b2..d58cc122a9c5 100644 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyProperties/TestUpdateKeyProperties_HSM.json +++ b/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/MHSM.json @@ -1,7 +1,7 @@ { "Entries": [ { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testrotatekey4115012563/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", @@ -20,34 +20,29 @@ "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "db337232-e5f0-11ec-806f-6045bd86d5ca", + "x-ms-request-id": "8dcd6ffa-f64b-11ec-b395-6045bd86d5ca", "x-ms-server-latency": "1" }, "ResponseBody": null }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/create?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/testrotatekey4115012563/create?api-version=7.3", "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "77", + "Content-Length": "16", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { - "attributes": { - "enabled": true, - "exp": 2527286400, - "nbf": 2524608000 - }, - "kty": "RSA" + "kty": "EC-HSM" }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "749", + "Content-Length": "436", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -55,64 +50,61 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "db5f062c-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "271" + "x-ms-request-id": "8dd6271c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "292" }, "ResponseBody": { "attributes": { - "created": 1654558317, + "created": 1656356490, "enabled": true, - "exp": 2527286400, "exportable": false, - "nbf": 2524608000, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558317 + "updated": 1656356490 }, "key": { - "e": "AQAB", + "crv": "P-256", "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" + "verify", + "sign" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/e8e6f77afd824e752aff5b4d531dc4a6", - "kty": "RSA-HSM", - "n": "mwGRodaZQy03Trc8aqh2ozPK3TWm_ef5Y2y48Qyoe168kfwDd5jGWqRPO0KSad5xoOiGcvISvWc0KPFptayU3DfaAZLE19lbj_4BX6Mo8ScAfDmth8TMcR_tf2i5yz2m0IjPIGOSaDFljdz8tL6jbUh5pJDO0d60uCF3WVqCzQQEp_JGCbaRKl3cvIQnttmGLPsG1h6RBkAbHtN9Woo3xmNupqg5eUWORNMUWiM4cO73DGZJK8NRnLncWuP4PQNGsXqCWCJZ-s0gb5exUt7w9WSvEnELA_pTDySXup7zvAUi80u90z-bVh93agADGAvrrm6erH_9qokbwgYVdLh21Q" + "kid": "https://fakemhsm/keys/testrotatekey4115012563/e1fb86aec0064940bd138f152792dd1d", + "kty": "EC-HSM", + "x": "oTxIiZqq35Q4wkEn98ce4fKVyiq3Uy_Xqm1tj7jx_xY", + "y": "TbbJ6MGYPLmN3GyZEZ37cUDrGe8gFzen_3g65GNPZPU" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/?api-version=7.3", - "RequestMethod": "PATCH", + "RequestUri": "https://fakemhsm/keys/testrotatekey4115012563/rotationpolicy?api-version=7.3", + "RequestMethod": "PUT", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", - "Content-Length": "113", + "Content-Length": "122", "Content-Type": "application/json", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": { "attributes": { - "enabled": false, - "exp": 2527290000, - "nbf": 2524608060 + "expiryTime": "P90D" }, - "key_ops": [ - "unwrapKey" - ], - "tags": { - "Tag1": "Val1" - } + "lifetimeActions": [ + { + "action": { + "type": "rotate" + }, + "trigger": { + "timeAfterCreate": "P30D" + } + } + ] }, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "727", + "Content-Length": "215", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -120,37 +112,31 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "db90d5e4-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "152" + "x-ms-request-id": "8e14fe1a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "183" }, "ResponseBody": { "attributes": { - "created": 1654558317, - "enabled": false, - "exp": 2527290000, - "exportable": false, - "nbf": 2524608060, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558318 + "created": 1656356490, + "expiryTime": "P90D", + "updated": 1656356490 }, - "key": { - "e": "AQAB", - "key_ops": [ - "unwrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/e8e6f77afd824e752aff5b4d531dc4a6", - "kty": "RSA-HSM", - "n": "mwGRodaZQy03Trc8aqh2ozPK3TWm_ef5Y2y48Qyoe168kfwDd5jGWqRPO0KSad5xoOiGcvISvWc0KPFptayU3DfaAZLE19lbj_4BX6Mo8ScAfDmth8TMcR_tf2i5yz2m0IjPIGOSaDFljdz8tL6jbUh5pJDO0d60uCF3WVqCzQQEp_JGCbaRKl3cvIQnttmGLPsG1h6RBkAbHtN9Woo3xmNupqg5eUWORNMUWiM4cO73DGZJK8NRnLncWuP4PQNGsXqCWCJZ-s0gb5exUt7w9WSvEnELA_pTDySXup7zvAUi80u90z-bVh93agADGAvrrm6erH_9qokbwgYVdLh21Q" - }, - "tags": { - "Tag1": "Val1" - } + "id": "keys/testrotatekey4115012563/rotationpolicy", + "lifetimeActions": [ + { + "action": { + "type": "rotate" + }, + "trigger": { + "timeAfterCreate": "P30D" + } + } + ] } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187?api-version=7.3", - "RequestMethod": "DELETE", + "RequestUri": "https://fakemhsm/keys/testrotatekey4115012563/rotationpolicy?api-version=7.3", + "RequestMethod": "GET", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", @@ -161,100 +147,117 @@ "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "864", + "Content-Length": "215", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", + "x-ms-build-version": "1.0.20220608-2-b6970bb4-1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "dbb077f0-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "95" + "x-ms-request-id": "8e4591e2-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" }, "ResponseBody": { "attributes": { - "created": 1654558317, - "enabled": false, - "exp": 2527290000, - "exportable": false, - "nbf": 2524608060, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558318 - }, - "deletedDate": 1654558318, - "key": { - "e": "AQAB", - "key_ops": [ - "unwrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/e8e6f77afd824e752aff5b4d531dc4a6", - "kty": "RSA-HSM", - "n": "mwGRodaZQy03Trc8aqh2ozPK3TWm_ef5Y2y48Qyoe168kfwDd5jGWqRPO0KSad5xoOiGcvISvWc0KPFptayU3DfaAZLE19lbj_4BX6Mo8ScAfDmth8TMcR_tf2i5yz2m0IjPIGOSaDFljdz8tL6jbUh5pJDO0d60uCF3WVqCzQQEp_JGCbaRKl3cvIQnttmGLPsG1h6RBkAbHtN9Woo3xmNupqg5eUWORNMUWiM4cO73DGZJK8NRnLncWuP4PQNGsXqCWCJZ-s0gb5exUt7w9WSvEnELA_pTDySXup7zvAUi80u90z-bVh93agADGAvrrm6erH_9qokbwgYVdLh21Q" + "created": 1656356490, + "expiryTime": "P90D", + "updated": 1656356490 }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key3028589187", - "scheduledPurgeDate": 1655163118, - "tags": { - "Tag1": "Val1" - } + "id": "keys/testrotatekey4115012563/rotationpolicy", + "lifetimeActions": [ + { + "action": { + "type": "rotate" + }, + "trigger": { + "timeAfterCreate": "P30D" + } + } + ] } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key3028589187?api-version=7.3", - "RequestMethod": "GET", + "RequestUri": "https://fakemhsm/keys/testrotatekey4115012563/rotate?api-version=7.3", + "RequestMethod": "POST", "RequestHeaders": { "Accept": "application/json", "Accept-Encoding": "gzip", "Authorization": "Sanitized", + "Content-Length": "0", "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "864", + "Content-Length": "453", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220513-1-d979721d-develop", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "dbc632b6-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "23" + "x-ms-request-id": "8e4ea110-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "317" }, "ResponseBody": { "attributes": { - "created": 1654558317, - "enabled": false, - "exp": 2527290000, + "created": 1656356491, + "enabled": true, + "exp": 1664132491, "exportable": false, - "nbf": 2524608060, "recoverableDays": 7, "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1654558318 + "updated": 1656356491 }, - "deletedDate": 1654558318, "key": { - "e": "AQAB", + "crv": "P-256", "key_ops": [ - "unwrapKey" + "verify", + "sign" ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key3028589187/e8e6f77afd824e752aff5b4d531dc4a6", - "kty": "RSA-HSM", - "n": "mwGRodaZQy03Trc8aqh2ozPK3TWm_ef5Y2y48Qyoe168kfwDd5jGWqRPO0KSad5xoOiGcvISvWc0KPFptayU3DfaAZLE19lbj_4BX6Mo8ScAfDmth8TMcR_tf2i5yz2m0IjPIGOSaDFljdz8tL6jbUh5pJDO0d60uCF3WVqCzQQEp_JGCbaRKl3cvIQnttmGLPsG1h6RBkAbHtN9Woo3xmNupqg5eUWORNMUWiM4cO73DGZJK8NRnLncWuP4PQNGsXqCWCJZ-s0gb5exUt7w9WSvEnELA_pTDySXup7zvAUi80u90z-bVh93agADGAvrrm6erH_9qokbwgYVdLh21Q" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key3028589187", - "scheduledPurgeDate": 1655163118, - "tags": { - "Tag1": "Val1" + "kid": "https://fakemhsm/keys/testrotatekey4115012563/201499bbf06a43729fe0e0f243cde2a4", + "kty": "EC-HSM", + "x": "J1-wCMWcJnjRVGuQA5QtbjJH1Gc2Bbw0s2A6kb8L9TE", + "y": "JujMRqmlk2zHZu0uX8E0eik9Jk46IGbRKZCN5qn2jhc" } } }, { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key3028589187?api-version=7.3", + "RequestUri": "https://fakemhsm/keys/keynonexistent/rotate?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 404, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "185", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "8e916892-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "16" + }, + "ResponseBody": { + "error": { + "code": "KeyNotFound", + "message": "Key not found: Key not found: https://fakemhsm/keys/keynonexistent (Activity ID: 8e916892-f64b-11ec-b395-6045bd86d5ca)" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/testrotatekey4115012563?api-version=7.3", "RequestMethod": "DELETE", "RequestHeaders": { "Accept": "application/json", @@ -263,10 +266,10 @@ "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" }, "RequestBody": null, - "StatusCode": 204, + "StatusCode": 200, "ResponseHeaders": { "Cache-Control": "no-cache", - "Content-Length": "0", + "Content-Length": "600", "Content-Security-Policy": "default-src \u0027self\u0027", "Content-Type": "application/json; charset=utf-8", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", @@ -274,10 +277,34 @@ "X-Frame-Options": "SAMEORIGIN", "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "dbd1815c-e5f0-11ec-806f-6045bd86d5ca", - "x-ms-server-latency": "96" + "x-ms-request-id": "8e9d79b6-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "174" }, - "ResponseBody": null + "ResponseBody": { + "attributes": { + "created": 1656356491, + "enabled": true, + "exp": 1664132491, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356491 + }, + "deletedDate": 1656356491, + "key": { + "crv": "P-256", + "key_ops": [ + "verify", + "sign" + ], + "kid": "https://fakemhsm/keys/testrotatekey4115012563/201499bbf06a43729fe0e0f243cde2a4", + "kty": "EC-HSM", + "x": "J1-wCMWcJnjRVGuQA5QtbjJH1Gc2Bbw0s2A6kb8L9TE", + "y": "JujMRqmlk2zHZu0uX8E0eik9Jk46IGbRKZCN5qn2jhc" + }, + "recoveryId": "https://fakemhsm/deletedkeys/testrotatekey4115012563", + "scheduledPurgeDate": 1656961291 + } } ], "Variables": {} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/TestRotateKey_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/TestRotateKey_HSM.json deleted file mode 100644 index 94c18d453d2f..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/TestRotateKey_HSM.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1afd5b06-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "0" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "698", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1b326116-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "282" - }, - "ResponseBody": { - "attributes": { - "created": 1651859896, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859896 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/6ed069ff3b13068baed98c42d6d470b2", - "kty": "RSA-HSM", - "n": "n1MclW57y0o-AZTDN1cGcsbg3HP9aHi7NBqZs6lZnxmgkkAC28P6E2HvraSn0QSf5i75pjxFlu8FRbnosODwG1cwCw4W2gEBAK6dkt-D5q6R3l2AvesIvRpNAPH2on_eXRkXQHCfqEaeX7yoedY1HGlxEeVoiL3c1oA8AxV5Zv1DomJzUsETZV1KnrlhMMX2Go88YH-53bCIajxBQzof1P9y-uQOu2CHrD9e8hXDU7UQaXds-FRKX_PbDa2lE0fuJu3QVRiYKVp12Ek5h3IRL-2It165724YzSRkZrudBPLcu3qU1NC_zx3IshpuNyJjBrS7YCInjOoFaO_uftPeJw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/rotationpolicy?api-version=7.3", - "RequestMethod": "PUT", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "57", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "expiryTime": "P30D" - }, - "lifetimeActions": [] - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "118", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1b651d40-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "168" - }, - "ResponseBody": { - "attributes": { - "created": 1651859897, - "expiryTime": "P30D", - "updated": 1651859897 - }, - "id": "keys/key386817259/rotationpolicy" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/rotate?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "715", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1b86f866-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "274" - }, - "ResponseBody": { - "attributes": { - "created": 1651859897, - "enabled": true, - "exp": 1654451897, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859897 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/a1f79c5f61ad03e4834bdf1dd4449ec3", - "kty": "RSA-HSM", - "n": "wQX8V7quf8MI-cVexkfXA5YuZKgMSzHd67rAtTXZR0dSNhewdcaAMb3tNlMGcC-gwlu93UbI-SpNY0E5HYi-oCqcehAXDd3keCoV1f0s4_6tZOn7db98RxZMqPIRJEtuv8Jt1fnwL84EYGp8d0SGxAoTAwrEaKJmA7n1vWwd8vyDjJN8tOQRMsikZz5-x2v9RrnPkjuOTguoVDjCgPoJSPHDuTCFdUs73yVP5BtqqhxkVrGkh31ee8NAOf88e68DSjkaC2XkPSYl4uC_PRgwyWkZDsulIynkWSV3M6oBbjp9CTPm5EJwEOZ7ojTNc01ViIGaAxSI76ht4obKbryHuQ" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/keynonexistent/rotate?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "169", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1bb8d426-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "18" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Key not found: Key not found: https://fakekvurl.managedhsm.azure.net/keys/keynonexistent (Activity ID: 1bb8d426-cd66-11ec-830e-6045bd86d60f)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key386817259?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "835", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1bc34cb2-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "164" - }, - "ResponseBody": { - "attributes": { - "created": 1651859897, - "enabled": true, - "exp": 1654451897, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859897 - }, - "deletedDate": 1651859897, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/a1f79c5f61ad03e4834bdf1dd4449ec3", - "kty": "RSA-HSM", - "n": "wQX8V7quf8MI-cVexkfXA5YuZKgMSzHd67rAtTXZR0dSNhewdcaAMb3tNlMGcC-gwlu93UbI-SpNY0E5HYi-oCqcehAXDd3keCoV1f0s4_6tZOn7db98RxZMqPIRJEtuv8Jt1fnwL84EYGp8d0SGxAoTAwrEaKJmA7n1vWwd8vyDjJN8tOQRMsikZz5-x2v9RrnPkjuOTguoVDjCgPoJSPHDuTCFdUs73yVP5BtqqhxkVrGkh31ee8NAOf88e68DSjkaC2XkPSYl4uC_PRgwyWkZDsulIynkWSV3M6oBbjp9CTPm5EJwEOZ7ojTNc01ViIGaAxSI76ht4obKbryHuQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key386817259", - "scheduledPurgeDate": 1652464697 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key386817259?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "835", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1be46f64-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "30" - }, - "ResponseBody": { - "attributes": { - "created": 1651859897, - "enabled": true, - "exp": 1654451897, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859897 - }, - "deletedDate": 1651859897, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/a1f79c5f61ad03e4834bdf1dd4449ec3", - "kty": "RSA-HSM", - "n": "wQX8V7quf8MI-cVexkfXA5YuZKgMSzHd67rAtTXZR0dSNhewdcaAMb3tNlMGcC-gwlu93UbI-SpNY0E5HYi-oCqcehAXDd3keCoV1f0s4_6tZOn7db98RxZMqPIRJEtuv8Jt1fnwL84EYGp8d0SGxAoTAwrEaKJmA7n1vWwd8vyDjJN8tOQRMsikZz5-x2v9RrnPkjuOTguoVDjCgPoJSPHDuTCFdUs73yVP5BtqqhxkVrGkh31ee8NAOf88e68DSjkaC2XkPSYl4uC_PRgwyWkZDsulIynkWSV3M6oBbjp9CTPm5EJwEOZ7ojTNc01ViIGaAxSI76ht4obKbryHuQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key386817259", - "scheduledPurgeDate": 1652464697 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key386817259?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "835", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1bf1553a-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "35" - }, - "ResponseBody": { - "attributes": { - "created": 1651859897, - "enabled": true, - "exp": 1654451897, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859897 - }, - "deletedDate": 1651859897, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "decrypt", - "encrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key386817259/a1f79c5f61ad03e4834bdf1dd4449ec3", - "kty": "RSA-HSM", - "n": "wQX8V7quf8MI-cVexkfXA5YuZKgMSzHd67rAtTXZR0dSNhewdcaAMb3tNlMGcC-gwlu93UbI-SpNY0E5HYi-oCqcehAXDd3keCoV1f0s4_6tZOn7db98RxZMqPIRJEtuv8Jt1fnwL84EYGp8d0SGxAoTAwrEaKJmA7n1vWwd8vyDjJN8tOQRMsikZz5-x2v9RrnPkjuOTguoVDjCgPoJSPHDuTCFdUs73yVP5BtqqhxkVrGkh31ee8NAOf88e68DSjkaC2XkPSYl4uC_PRgwyWkZDsulIynkWSV3M6oBbjp9CTPm5EJwEOZ7ojTNc01ViIGaAxSI76ht4obKbryHuQ" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key386817259", - "scheduledPurgeDate": 1652464697 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key386817259?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1bff8dd0-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "109" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/TestRotateKey_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/TestRotateKey_NON-HSM.json deleted file mode 100644 index ef84cbdc201f..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestRotateKey/TestRotateKey_NON-HSM.json +++ /dev/null @@ -1,355 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3297178601/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:32 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a8f8c499-faa7-4a35-9b4b-d56a3d12b029" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3297178601/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:33 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=113;da_age=1425;rd_age=4619;brd_age=14453;ra_notif_age=599;da_notif_age=1950;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a1eda345-3756-4dc1-be5b-d5d970639ff2" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3297178601/628adab1462a4831807fff40e4d44aa1", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "stp1MHUaMWP72Eoo-UOJDISeu0VucfqCbmI8qhDkggY8gWSwlh_zZ0z1dli5LBsA6L-TirwOyzTArBuHji7AoWJ28g61bGwl-GCLJo8Lj9faSjXEw3tdLAkDrmcEtCkPgn67I_tHmJsJgaqJnie2TmaRz6dI7vhvB8GRI5y_shFsFj3pieMmmQQ8UguHdhyhxEFPBjWgC08TfpkHR5bSPFj-attLISNGw-4bAH1W4NLEECfU6OLqZZlPzrHD6jXbkKWpxJWeOde0dMo7vOs-JCVd80Q9XLhJSK1CCtOQl40eWxkBO9kaUg-ATunOoJbTguGedlDBslZDop7H-JXmhQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819073, - "updated": 1652819073, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3297178601/rotate?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:33 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=113;da_age=1425;rd_age=4619;brd_age=14453;ra_notif_age=599;da_notif_age=1950;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0671569c-35b6-4085-8445-559814832604" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3297178601/37abe873e64f44a3b5d7a38d25e7d4cc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "6Z5Ludux-vLSiiXjfK9pJJOqF4GkYCM9-ct-IT_GBhX7ew4b4xKqgeG4mxl7P366y42ZBVb1xuA_BPB6PgDIOvVW2lzv6JGIZ9Cj5IUVIhL3VMOIjvbExxckij-NBHg6ysbR5QQThOp2_sBjYu_Msgmf3RS-itYp1w9mCIA2IfCKVT1V3MnOcy_DvuPDOMO3nm5PIQ5w0u9X4h3Oyshcd5YSRyYBnWpPm4rBHRwwYWCbxSqbaNAu5HZhPCPA2YJT9N3W6waatGjeBqtP0ckGJBEI-ydUnE9i_H9pZMZZrK7oUBlR5cDXieNH3xlNhWPZnMQn6ftAjkDlqcJgQtZKjQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819073, - "updated": 1652819073, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/keynonexistent/rotate?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "302", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:33 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=113;da_age=1425;rd_age=4619;brd_age=14454;ra_notif_age=600;da_notif_age=1950;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "9dd440c8-5ed6-4909-9388-4e913921b24a" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "A key with (name/id) keynonexistent was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key3297178601?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:33 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=113;da_age=1425;rd_age=4619;brd_age=14454;ra_notif_age=600;da_notif_age=1950;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "bf580748-4dec-4638-b651-27d202bfbe2d" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3297178601", - "deletedDate": 1652819074, - "scheduledPurgeDate": 1653423874, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3297178601/37abe873e64f44a3b5d7a38d25e7d4cc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "6Z5Ludux-vLSiiXjfK9pJJOqF4GkYCM9-ct-IT_GBhX7ew4b4xKqgeG4mxl7P366y42ZBVb1xuA_BPB6PgDIOvVW2lzv6JGIZ9Cj5IUVIhL3VMOIjvbExxckij-NBHg6ysbR5QQThOp2_sBjYu_Msgmf3RS-itYp1w9mCIA2IfCKVT1V3MnOcy_DvuPDOMO3nm5PIQ5w0u9X4h3Oyshcd5YSRyYBnWpPm4rBHRwwYWCbxSqbaNAu5HZhPCPA2YJT9N3W6waatGjeBqtP0ckGJBEI-ydUnE9i_H9pZMZZrK7oUBlR5cDXieNH3xlNhWPZnMQn6ftAjkDlqcJgQtZKjQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819073, - "updated": 1652819073, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3297178601?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:33 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=114;da_age=1425;rd_age=4619;brd_age=14454;ra_notif_age=600;da_notif_age=1950;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "466068c3-d1c3-4e1d-bef3-f08ccd0f461a" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key3297178601" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3297178601?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:35 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=115;da_age=1426;rd_age=4621;brd_age=14455;ra_notif_age=601;da_notif_age=1952;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "a39fc444-b6ad-43c2-a1c9-0ab514e1a685" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key3297178601", - "deletedDate": 1652819074, - "scheduledPurgeDate": 1653423874, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key3297178601/37abe873e64f44a3b5d7a38d25e7d4cc", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "6Z5Ludux-vLSiiXjfK9pJJOqF4GkYCM9-ct-IT_GBhX7ew4b4xKqgeG4mxl7P366y42ZBVb1xuA_BPB6PgDIOvVW2lzv6JGIZ9Cj5IUVIhL3VMOIjvbExxckij-NBHg6ysbR5QQThOp2_sBjYu_Msgmf3RS-itYp1w9mCIA2IfCKVT1V3MnOcy_DvuPDOMO3nm5PIQ5w0u9X4h3Oyshcd5YSRyYBnWpPm4rBHRwwYWCbxSqbaNAu5HZhPCPA2YJT9N3W6waatGjeBqtP0ckGJBEI-ydUnE9i_H9pZMZZrK7oUBlR5cDXieNH3xlNhWPZnMQn6ftAjkDlqcJgQtZKjQ", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819073, - "updated": 1652819073, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key3297178601?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:24:35 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=115;da_age=1426;rd_age=4621;brd_age=14455;ra_notif_age=601;da_notif_age=1952;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "d10be2b0-3622-4441-8d95-dc16974856a4" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestSignVerify/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestSignVerify/KV.json new file mode 100644 index 000000000000..21a39c663653 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestSignVerify/KV.json @@ -0,0 +1,169 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/key3534672839/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:31 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "b4c3348d-c851-41a1-944c-1629e8c23585" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/key3534672839/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "55", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "crv": "P-256K", + "key_ops": [ + "sign", + "verify" + ], + "kty": "EC" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "399", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=129;da_age=6573;rd_age=6573;brd_age=23061;ra_notif_age=419;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "edc9f5dc-8b3e-4f66-a119-5bd7e1f5adc2" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/key3534672839/128b46c7a7464450b10ce91032d99a9f", + "kty": "EC", + "key_ops": [ + "sign", + "verify" + ], + "crv": "P-256K", + "x": "TWfuwhR1EKcMyovoEolYcfU3WL-iI2Z87mhwDa7pGdc", + "y": "LGcGHoyBO7lyH9saMSVCmRFQC8lAGbucARnkpb8bQCA" + }, + "attributes": { + "enabled": true, + "created": 1656356492, + "updated": 1656356492, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/key3534672839//sign?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "70", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "ES256K", + "value": "ltYuKr0-Qt5fUDMPuO_ExVmYNSeAd7IemqCzPB3wehw" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "192", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=129;da_age=6574;rd_age=6574;brd_age=23061;ra_notif_age=419;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "707f36b5-bf4a-406e-95f0-5540675f8a5a" + }, + "ResponseBody": { + "kid": "https://fakevault/keys/key3534672839/128b46c7a7464450b10ce91032d99a9f", + "value": "ceTY80l0-8_TnjOS8SGSglAt7EgwGbJnLlucL_MbzOUYJmFzq_Mb3CruzmTufmQQ-itKpbOIDugLKVwrwrvOPw" + } + }, + { + "RequestUri": "https://fakevault/keys/key3534672839//verify?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "168", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "ES256K", + "digest": "ltYuKr0-Qt5fUDMPuO_ExVmYNSeAd7IemqCzPB3wehw", + "value": "ceTY80l0-8_TnjOS8SGSglAt7EgwGbJnLlucL_MbzOUYJmFzq_Mb3CruzmTufmQQ-itKpbOIDugLKVwrwrvOPw" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "14", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:32 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=130;da_age=6574;rd_age=6574;brd_age=23061;ra_notif_age=419;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "78acc3a1-1f7c-4154-9f09-5a97b6265cc6" + }, + "ResponseBody": { + "value": true + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestSignVerify/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestSignVerify/MHSM.json new file mode 100644 index 000000000000..d1cc5f5642d2 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestSignVerify/MHSM.json @@ -0,0 +1,156 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/key474808603/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "8f40c88c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/key474808603/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "55", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "crv": "P-256K", + "key_ops": [ + "sign", + "verify" + ], + "kty": "EC" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "426", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "8f48feb2-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "317" + }, + "ResponseBody": { + "attributes": { + "created": 1656356492, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356492 + }, + "key": { + "crv": "P-256K", + "key_ops": [ + "verify", + "sign" + ], + "kid": "https://fakemhsm/keys/key474808603/89c74a23500d4b12162e5cbb4e84aa85", + "kty": "EC-HSM", + "x": "nhztCI5c11jWxSP4OCurIh-G0C9BTWqFnyggGMF5lJs", + "y": "3Q49HTd5c8fm9nkrtsrzgV5M1f1iGITOGCXJviwAU5Y" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/key474808603//sign?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "70", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "ES256K", + "value": "ltYuKr0-Qt5fUDMPuO_ExVmYNSeAd7IemqCzPB3wehw" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "211", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "8f82991a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "105" + }, + "ResponseBody": { + "alg": "ES256K", + "kid": "https://fakemhsm/keys/key474808603/89c74a23500d4b12162e5cbb4e84aa85", + "value": "ZyGgv7Y55L4HH5P1XNiihVP0xBHRqxBJIyejNoNp03XF5b_Vbrh6hupgkwGlk7KDGySwgRew-bDssK7GW3Z7JA" + } + }, + { + "RequestUri": "https://fakemhsm/keys/key474808603//verify?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "168", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "ES256K", + "digest": "ltYuKr0-Qt5fUDMPuO_ExVmYNSeAd7IemqCzPB3wehw", + "value": "ZyGgv7Y55L4HH5P1XNiihVP0xBHRqxBJIyejNoNp03XF5b_Vbrh6hupgkwGlk7KDGySwgRew-bDssK7GW3Z7JA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "127", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "8f9b200c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "15" + }, + "ResponseBody": { + "alg": "ES256K", + "kid": "https://fakemhsm/keys/key474808603/89c74a23500d4b12162e5cbb4e84aa85", + "value": true + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesImmutable/TestUpdateKeyPropertiesImmutable_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesImmutable/TestUpdateKeyPropertiesImmutable_HSM.json deleted file mode 100644 index 896ab10a1b04..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyPropertiesImmutable/TestUpdateKeyPropertiesImmutable_HSM.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "5839f4b0-daf0-11ec-ad9a-6045bda2a4e6", - "x-ms-server-latency": "2" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "283", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "exportable": true - }, - "key_ops": [ - "encrypt", - "decrypt" - ], - "kty": "RSA-HSM", - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0", - "immutable": true - } - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "955", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "586b26f2-daf0-11ec-ad9a-6045bda2a4e6", - "x-ms-server-latency": "1897" - }, - "ResponseBody": { - "attributes": { - "created": 1653348635, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653348635 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "encrypt", - "decrypt" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091/8d6b45e46a904bda9c0c474d71581298", - "kty": "RSA-HSM", - "n": "uPqkAUyYR79QW9Tr-ULM0yE3SEP39YWqlft1NOfhIFRAc1M2d4G7pQG2_6-3mhY99LDe8RCshsjjYe28hA696ydx4NgCYKSU3gyjiB9ZcLgqxOjOqfGMjWNFFYEuwc3vdTaQRZagEp0opQEtSaWK-dDWKjG3KOmVz5jjIvb_I6oIGzg1frtLza0txVEndDjeJpB0slZVfiBSX1YLJIzKGyg2BZfpvUf8yfXKgcefWj6eY-GHySseiNjTpe58kzglrG8M9hVCH0tC56u2uoRu_Jq-8fRQxOgzJlLGfU3oP-GIdtwofCj3O7UavDNtk_kngXJ2HpdpdJg-gfOvfu6-Kw" - }, - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": true - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091/?api-version=7.3", - "RequestMethod": "PATCH", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "251", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "enabled": false, - "exportable": true - }, - "release_policy": { - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2Zha2VhdHRlc3RhdGlvbiJ9XSwidmVyc2lvbiI6IjEuMC4wIn0", - "immutable": true - } - }, - "StatusCode": 400, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "141", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "59958c8e-daf0-11ec-ad9a-6045bda2a4e6", - "x-ms-server-latency": "115" - }, - "ResponseBody": { - "error": { - "code": "BadParameter", - "message": "Immutable Release policy cannot be modified (Activity ID: 59958c8e-daf0-11ec-ad9a-6045bda2a4e6)" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1095", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "59af0c4a-daf0-11ec-ad9a-6045bda2a4e6", - "x-ms-server-latency": "81" - }, - "ResponseBody": { - "attributes": { - "created": 1653348635, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653348635 - }, - "deletedDate": 1653348637, - "key": { - "e": "AQAB", - "key_ops": [ - "encrypt", - "decrypt" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091/8d6b45e46a904bda9c0c474d71581298", - "kty": "RSA-HSM", - "n": "uPqkAUyYR79QW9Tr-ULM0yE3SEP39YWqlft1NOfhIFRAc1M2d4G7pQG2_6-3mhY99LDe8RCshsjjYe28hA696ydx4NgCYKSU3gyjiB9ZcLgqxOjOqfGMjWNFFYEuwc3vdTaQRZagEp0opQEtSaWK-dDWKjG3KOmVz5jjIvb_I6oIGzg1frtLza0txVEndDjeJpB0slZVfiBSX1YLJIzKGyg2BZfpvUf8yfXKgcefWj6eY-GHySseiNjTpe58kzglrG8M9hVCH0tC56u2uoRu_Jq-8fRQxOgzJlLGfU3oP-GIdtwofCj3O7UavDNtk_kngXJ2HpdpdJg-gfOvfu6-Kw" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/immuta3614246091", - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": true - }, - "scheduledPurgeDate": 1653953437 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/immuta3614246091?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "1095", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220503-3-e1430fa9-1.0.20220430-1-f02155ab-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "59c3815c-daf0-11ec-ad9a-6045bda2a4e6", - "x-ms-server-latency": "29" - }, - "ResponseBody": { - "attributes": { - "created": 1653348635, - "enabled": true, - "exportable": true, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1653348635 - }, - "deletedDate": 1653348637, - "key": { - "e": "AQAB", - "key_ops": [ - "decrypt", - "encrypt" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/immuta3614246091/8d6b45e46a904bda9c0c474d71581298", - "kty": "RSA-HSM", - "n": "uPqkAUyYR79QW9Tr-ULM0yE3SEP39YWqlft1NOfhIFRAc1M2d4G7pQG2_6-3mhY99LDe8RCshsjjYe28hA696ydx4NgCYKSU3gyjiB9ZcLgqxOjOqfGMjWNFFYEuwc3vdTaQRZagEp0opQEtSaWK-dDWKjG3KOmVz5jjIvb_I6oIGzg1frtLza0txVEndDjeJpB0slZVfiBSX1YLJIzKGyg2BZfpvUf8yfXKgcefWj6eY-GHySseiNjTpe58kzglrG8M9hVCH0tC56u2uoRu_Jq-8fRQxOgzJlLGfU3oP-GIdtwofCj3O7UavDNtk_kngXJ2HpdpdJg-gfOvfu6-Kw" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/immuta3614246091", - "release_policy": { - "contentType": "application/json; charset=utf-8", - "data": "eyJhbnlPZiI6W3siYW55T2YiOlt7ImNsYWltIjoic2RrLXRlc3QiLCJlcXVhbHMiOiJ0cnVlIn1dLCJhdXRob3JpdHkiOiJodHRwczovL2NobG93ZWF6a2V5c3NpdGUuYXp1cmV3ZWJzaXRlcy5uZXQvIn1dLCJ2ZXJzaW9uIjoiMS4wLjAifQ", - "immutable": true - }, - "scheduledPurgeDate": 1653953437 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/immuta3614246091?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "59cf7656-daf0-11ec-ad9a-6045bda2a4e6", - "x-ms-server-latency": "162" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyRotationPolicy/TestUpdateKeyRotationPolicy_HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyRotationPolicy/TestUpdateKeyRotationPolicy_HSM.json deleted file mode 100644 index 1354ddf45387..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyRotationPolicy/TestUpdateKeyRotationPolicy_HSM.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-request-id": "1ce0d7cc-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "1" - }, - "ResponseBody": null - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "698", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1d24d4f4-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "270" - }, - "ResponseBody": { - "attributes": { - "created": 1651859900, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859900 - }, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "decrypt", - "encrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/beb7d64ebbc744c41f2cb198278e2b34", - "kty": "RSA-HSM", - "n": "l6jnQbem7BkWqrVtrxNsQBmypq3M8jpjf9c2yeGUykftps-Jsp6dU7VW2xAdru6pqQx89a9HjFYqelmk6yhJF2ZlqScRznkzKN2_GmAmXkc3ZS4Hpnp1Y1svzZGORhNFrKJ3WS_rpA5t0Uxx4tf_etF45e0nZ204egpcKShLqJPJFCQtIN0cHN6MunApflMFxKWxRvSXhtOZZCFe7li-aB23SrbyHJ5mqChHowVF9_b4BKoeL1MUtFWpZijN0kUdEZq8yUMD86Gf4FW0v7sMPa7z6RI2BAV_veXF65Qx2ZwMXkoYkan3xwZ-eybUGMoBgAKLDMRhSDfm9fOwDhXprw" - } - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/rotationpolicy?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "64", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1d5646ba-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "181" - }, - "ResponseBody": { - "attributes": { - "created": 0, - "expiryTime": "", - "updated": 0 - }, - "id": "" - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/rotationpolicy?api-version=7.3", - "RequestMethod": "PUT", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "123", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": { - "attributes": { - "expiryTime": "P90D" - }, - "lifetimeActions": [ - { - "action": { - "type": "rotate" - }, - "trigger": { - "timeBeforeExpiry": "P30D" - } - } - ] - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "205", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1d79ffc4-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "88" - }, - "ResponseBody": { - "attributes": { - "created": 1651859900, - "expiryTime": "P90D", - "updated": 1651859900 - }, - "id": "keys/key664229775/rotationpolicy", - "lifetimeActions": [ - { - "action": { - "type": "rotate" - }, - "trigger": { - "timeBeforeExpiry": "P30D" - } - } - ] - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/keys/key664229775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "818", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1d8f54f0-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "75" - }, - "ResponseBody": { - "attributes": { - "created": 1651859900, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859900 - }, - "deletedDate": 1651859900, - "key": { - "e": "AQAB", - "key_ops": [ - "wrapKey", - "encrypt", - "decrypt", - "unwrapKey", - "sign", - "verify" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/beb7d64ebbc744c41f2cb198278e2b34", - "kty": "RSA-HSM", - "n": "l6jnQbem7BkWqrVtrxNsQBmypq3M8jpjf9c2yeGUykftps-Jsp6dU7VW2xAdru6pqQx89a9HjFYqelmk6yhJF2ZlqScRznkzKN2_GmAmXkc3ZS4Hpnp1Y1svzZGORhNFrKJ3WS_rpA5t0Uxx4tf_etF45e0nZ204egpcKShLqJPJFCQtIN0cHN6MunApflMFxKWxRvSXhtOZZCFe7li-aB23SrbyHJ5mqChHowVF9_b4BKoeL1MUtFWpZijN0kUdEZq8yUMD86Gf4FW0v7sMPa7z6RI2BAV_veXF65Qx2ZwMXkoYkan3xwZ-eybUGMoBgAKLDMRhSDfm9fOwDhXprw" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key664229775", - "scheduledPurgeDate": 1652464700 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key664229775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "818", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1da1f984-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "40" - }, - "ResponseBody": { - "attributes": { - "created": 1651859900, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859900 - }, - "deletedDate": 1651859900, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/beb7d64ebbc744c41f2cb198278e2b34", - "kty": "RSA-HSM", - "n": "l6jnQbem7BkWqrVtrxNsQBmypq3M8jpjf9c2yeGUykftps-Jsp6dU7VW2xAdru6pqQx89a9HjFYqelmk6yhJF2ZlqScRznkzKN2_GmAmXkc3ZS4Hpnp1Y1svzZGORhNFrKJ3WS_rpA5t0Uxx4tf_etF45e0nZ204egpcKShLqJPJFCQtIN0cHN6MunApflMFxKWxRvSXhtOZZCFe7li-aB23SrbyHJ5mqChHowVF9_b4BKoeL1MUtFWpZijN0kUdEZq8yUMD86Gf4FW0v7sMPa7z6RI2BAV_veXF65Qx2ZwMXkoYkan3xwZ-eybUGMoBgAKLDMRhSDfm9fOwDhXprw" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key664229775", - "scheduledPurgeDate": 1652464700 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key664229775?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "818", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-build-version": "1.0.20220422-1-08f4685d-1.0.20220404-2-da0eff37-pre-openssl", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1db044da-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "32" - }, - "ResponseBody": { - "attributes": { - "created": 1651859900, - "enabled": true, - "exportable": false, - "recoverableDays": 7, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "updated": 1651859900 - }, - "deletedDate": 1651859900, - "key": { - "e": "AQAB", - "key_ops": [ - "verify", - "sign", - "unwrapKey", - "encrypt", - "decrypt", - "wrapKey" - ], - "kid": "https://fakekvurl.managedhsm.azure.net/keys/key664229775/beb7d64ebbc744c41f2cb198278e2b34", - "kty": "RSA-HSM", - "n": "l6jnQbem7BkWqrVtrxNsQBmypq3M8jpjf9c2yeGUykftps-Jsp6dU7VW2xAdru6pqQx89a9HjFYqelmk6yhJF2ZlqScRznkzKN2_GmAmXkc3ZS4Hpnp1Y1svzZGORhNFrKJ3WS_rpA5t0Uxx4tf_etF45e0nZ204egpcKShLqJPJFCQtIN0cHN6MunApflMFxKWxRvSXhtOZZCFe7li-aB23SrbyHJ5mqChHowVF9_b4BKoeL1MUtFWpZijN0kUdEZq8yUMD86Gf4FW0v7sMPa7z6RI2BAV_veXF65Qx2ZwMXkoYkan3xwZ-eybUGMoBgAKLDMRhSDfm9fOwDhXprw" - }, - "recoveryId": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key664229775", - "scheduledPurgeDate": 1652464700 - } - }, - { - "RequestUri": "https://fakekvurl.managedhsm.azure.net/deletedkeys/key664229775?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.1 azsdk-go-azcore/v0.23.0 (go1.18; linux)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "0", - "Content-Security-Policy": "default-src \u0027self\u0027", - "Content-Type": "application/json; charset=utf-8", - "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "X-Content-Type-Options": "nosniff", - "X-Frame-Options": "SAMEORIGIN", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", - "x-ms-keyvault-region": "westus3", - "x-ms-request-id": "1dbcf478-cd66-11ec-830e-6045bd86d60f", - "x-ms-server-latency": "115" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyRotationPolicy/TestUpdateKeyRotationPolicy_NON-HSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyRotationPolicy/TestUpdateKeyRotationPolicy_NON-HSM.json deleted file mode 100644 index f2be89a46249..000000000000 --- a/sdk/keyvault/azkeys/testdata/recordings/TestUpdateKeyRotationPolicy/TestUpdateKeyRotationPolicy_NON-HSM.json +++ /dev/null @@ -1,413 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1190835325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Content-Length": "0", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 401, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "97", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:40 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "98209afa-d540-4dc2-9a7d-654546076af6" - }, - "ResponseBody": { - "error": { - "code": "Unauthorized", - "message": "AKV10000: Request is missing a Bearer or PoP token." - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1190835325/create?api-version=7.3", - "RequestMethod": "POST", - "RequestHeaders": { - ":method": "POST", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "13", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "kty": "RSA" - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "687", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:40 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=121;da_age=1433;rd_age=4627;brd_age=14461;ra_notif_age=607;da_notif_age=1958;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "1db4a40d-2517-4653-848c-b55e2bac6436" - }, - "ResponseBody": { - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1190835325/e12d6375d15a47109e1ea97873758b6a", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "x6G38GryuBDcIjbjOrBkI8YmIpkonhD8QDjJH6k-xmw6XTqGlEcyoYkrr-fMaynG8yCtVv8ix65xUvMKMfj3X1OpSR7ZbsmErAlcsuYFDqEi6Hk3429Iis-vURB0VQ-bneTxy_w8nujq0OG-o6RsY-UwXL-svMjPQZGwr77VR-uB4VwdqVU6K3XyExtynzXnT76kGEE-6F-3ydIwp_OjJC-p5_OI_x3FWwXDs0dqEXhjh2-535pm90uedFRMDhW0r-KVIlhVBhnsF9Q8EYdHeSdkPGmQx52kZ09Jsq4Qz0pf2iHyuuLNija7ysTwI1CQJjfoj7HsybnM7ODsyJqB3Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819081, - "updated": 1652819081, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1190835325/rotationpolicy?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "106", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=121;da_age=1433;rd_age=4627;brd_age=14462;ra_notif_age=607;da_notif_age=1958;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "c3638e98-81aa-4686-bb15-ea86c68a7f57" - }, - "ResponseBody": { - "lifetimeActions": [ - { - "trigger": { - "timeBeforeExpiry": "P30D" - }, - "action": { - "type": "Notify" - } - } - ], - "attributes": null - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1190835325/rotationpolicy?api-version=7.3", - "RequestMethod": "PUT", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "Content-Length": "123", - "Content-Type": "application/json", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": { - "attributes": { - "expiryTime": "P90D" - }, - "lifetimeActions": [ - { - "action": { - "type": "rotate" - }, - "trigger": { - "timeBeforeExpiry": "P30D" - } - } - ] - }, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "312", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=121;da_age=1433;rd_age=4627;brd_age=14462;ra_notif_age=608;da_notif_age=1958;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "add38376-6bc8-4e49-a7de-a783688c32fd" - }, - "ResponseBody": { - "id": "https://jhendrixazkeys.vault.azure.net/keys/key1190835325/rotationpolicy", - "lifetimeActions": [ - { - "trigger": { - "timeBeforeExpiry": "P30D" - }, - "action": { - "type": "Rotate" - } - }, - { - "trigger": { - "timeBeforeExpiry": "P30D" - }, - "action": { - "type": "Notify" - } - } - ], - "attributes": { - "expiryTime": "P90D", - "created": 1652819082, - "updated": 1652819082 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/keys/key1190835325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=121;da_age=1433;rd_age=4627;brd_age=14462;ra_notif_age=608;da_notif_age=1958;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "b6fec1b3-c86f-4963-a2d9-670613949939" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key1190835325", - "deletedDate": 1652819082, - "scheduledPurgeDate": 1653423882, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1190835325/e12d6375d15a47109e1ea97873758b6a", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "x6G38GryuBDcIjbjOrBkI8YmIpkonhD8QDjJH6k-xmw6XTqGlEcyoYkrr-fMaynG8yCtVv8ix65xUvMKMfj3X1OpSR7ZbsmErAlcsuYFDqEi6Hk3429Iis-vURB0VQ-bneTxy_w8nujq0OG-o6RsY-UwXL-svMjPQZGwr77VR-uB4VwdqVU6K3XyExtynzXnT76kGEE-6F-3ydIwp_OjJC-p5_OI_x3FWwXDs0dqEXhjh2-535pm90uedFRMDhW0r-KVIlhVBhnsF9Q8EYdHeSdkPGmQx52kZ09Jsq4Qz0pf2iHyuuLNija7ysTwI1CQJjfoj7HsybnM7ODsyJqB3Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819081, - "updated": 1652819081, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1190835325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:41 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=122;da_age=1433;rd_age=4627;brd_age=14462;ra_notif_age=608;da_notif_age=1958;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3be763f6-3ccc-4f9f-8a94-b70c57f93bb5" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key1190835325" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1190835325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 404, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "81", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:43 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=123;da_age=1434;rd_age=4629;brd_age=14463;ra_notif_age=609;da_notif_age=1960;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "3faeb594-11c7-413c-a889-49d756a3e872" - }, - "ResponseBody": { - "error": { - "code": "KeyNotFound", - "message": "Deleted Key not found: key1190835325" - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1190835325?api-version=7.3", - "RequestMethod": "GET", - "RequestHeaders": { - ":method": "GET", - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 200, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Content-Length": "819", - "Content-Type": "application/json; charset=utf-8", - "Date": "Tue, 17 May 2022 20:24:44 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=124;da_age=1435;rd_age=4630;brd_age=14464;ra_notif_age=610;da_notif_age=1961;dec_lev=0;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "6fa67451-42e2-4966-8aed-f405c9d20822" - }, - "ResponseBody": { - "recoveryId": "https://fakekvurl.vault.azure.net/deletedkeys/key1190835325", - "deletedDate": 1652819082, - "scheduledPurgeDate": 1653423882, - "key": { - "kid": "https://fakekvurl.vault.azure.net/keys/key1190835325/e12d6375d15a47109e1ea97873758b6a", - "kty": "RSA", - "key_ops": [ - "encrypt", - "decrypt", - "sign", - "verify", - "wrapKey", - "unwrapKey" - ], - "n": "x6G38GryuBDcIjbjOrBkI8YmIpkonhD8QDjJH6k-xmw6XTqGlEcyoYkrr-fMaynG8yCtVv8ix65xUvMKMfj3X1OpSR7ZbsmErAlcsuYFDqEi6Hk3429Iis-vURB0VQ-bneTxy_w8nujq0OG-o6RsY-UwXL-svMjPQZGwr77VR-uB4VwdqVU6K3XyExtynzXnT76kGEE-6F-3ydIwp_OjJC-p5_OI_x3FWwXDs0dqEXhjh2-535pm90uedFRMDhW0r-KVIlhVBhnsF9Q8EYdHeSdkPGmQx52kZ09Jsq4Qz0pf2iHyuuLNija7ysTwI1CQJjfoj7HsybnM7ODsyJqB3Q", - "e": "AQAB" - }, - "attributes": { - "enabled": true, - "created": 1652819081, - "updated": 1652819081, - "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", - "recoverableDays": 7 - } - } - }, - { - "RequestUri": "https://fakekvurl.vault.azure.net/deletedkeys/key1190835325?api-version=7.3", - "RequestMethod": "DELETE", - "RequestHeaders": { - "Accept": "application/json", - "Accept-Encoding": "gzip", - "Authorization": "Sanitized", - "User-Agent": "azsdk-go-azkeys/v0.5.2 (go1.18; Windows_NT)" - }, - "RequestBody": null, - "StatusCode": 204, - "ResponseHeaders": { - "Cache-Control": "no-cache", - "Date": "Tue, 17 May 2022 20:24:44 GMT", - "Expires": "-1", - "Pragma": "no-cache", - "Strict-Transport-Security": "max-age=31536000;includeSubDomains", - "X-Content-Type-Options": "nosniff", - "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=73.83.78.150;act_addr_fam=InterNetwork;", - "x-ms-keyvault-rbac-assignment-id": "8d9d4c8b-574a-53ec-8f03-0c74ee682bc5", - "x-ms-keyvault-rbac-cache": "ra_age=124;da_age=1436;rd_age=4630;brd_age=14464;ra_notif_age=610;da_notif_age=1961;dec_lev=1;", - "x-ms-keyvault-region": "westus3", - "x-ms-keyvault-service-version": "1.9.395.1", - "x-ms-request-id": "0a119c9f-9792-42a9-81ec-a9732460561d" - }, - "ResponseBody": null - } - ], - "Variables": {} -} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestWrapUnwrap/KV.json b/sdk/keyvault/azkeys/testdata/recordings/TestWrapUnwrap/KV.json new file mode 100644 index 000000000000..8d31958c5bea --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestWrapUnwrap/KV.json @@ -0,0 +1,167 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakevault/keys/key2582698/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "97", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:33 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://vault.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f1285480-1121-49e2-9c8b-b32d18a0ec93" + }, + "ResponseBody": { + "error": { + "code": "Unauthorized", + "message": "AKV10000: Request is missing a Bearer or PoP token." + } + } + }, + { + "RequestUri": "https://fakevault/keys/key2582698/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "47", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "key_ops": [ + "wrapKey", + "unwrapKey" + ], + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "648", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:33 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=131;da_age=6575;rd_age=6575;brd_age=23062;ra_notif_age=421;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "f02eacde-ad19-486c-812c-8b6761ba63da" + }, + "ResponseBody": { + "key": { + "kid": "https://fakevault/keys/key2582698/746d63a443eb4332aa8dca4a6e47bf61", + "kty": "RSA", + "key_ops": [ + "wrapKey", + "unwrapKey" + ], + "n": "wyCnngUByjris_nIG2Quey4GfseKUbsZMorOTzvF8WVLXUc5sN0SnurT45yxj_MdgDN7vKAy60YFRT8h-bOpg686cUZSJJwIu5ZuJo4ZGJfUUldnfjRkhGjyifg1lYQ6th8Qy4D6rXplIpmpmGqibGwXKybl17v0nKWLS3G31ZV51D9UuRx_F8w8HX6rHw648bOV4zXaIn6xszn6GM7TVqEnu3FqDHhu_gIwIGxwobB94WB3aqrQZqrArV_xAHYmm37DeKNNyPqJFrsK87vzwixIugtjcoCdRecmTJMxQT9epnpyJCgWEWLW9tI4STtmB7sb-lu1myXyO3Z9QUd5oQ", + "e": "AQAB" + }, + "attributes": { + "enabled": true, + "created": 1656356493, + "updated": 1656356493, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "recoverableDays": 7 + } + } + }, + { + "RequestUri": "https://fakevault/keys/key2582698//wrapkey?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "296", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP", + "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "445", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:33 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=131;da_age=6575;rd_age=6575;brd_age=23063;ra_notif_age=421;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "3c06a715-1126-4183-b560-f4b1c90ac574" + }, + "ResponseBody": { + "kid": "https://fakevault/keys/key2582698/746d63a443eb4332aa8dca4a6e47bf61", + "value": "B6mlGUoy89W5YhXbSLs95o_z9OMAXAF3iLCJdVTcwOR6ch6hrD1wo0bElbGqTNhk9B0dFQHpaZFGGYcdchRF_3ZUFGGJwXvGzgWsh8mPR0eWt672qJu6ceo9Skn2tJM4ptsabe0NkrWpPhrwm0xwyS6NRUVjxHsozICgDSnQI9rECmROH3przaUIkdtgDO9xieauRG3IeDIOyQbeAEIgGFdP7O_FmsAdIngYnuSLvyE_mXLQMqjMLKvF4ItzkNwDw2NXIdGdaoiCgf8T634F1XRW9pe6PzJzsIKZKzRbVIbBDevExmbC2F_UUTLmhxziJtdJqzQdQBjxPNCLBe-QDw" + } + }, + { + "RequestUri": "https://fakevault/keys/key2582698//unwrapkey?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "371", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP", + "value": "B6mlGUoy89W5YhXbSLs95o_z9OMAXAF3iLCJdVTcwOR6ch6hrD1wo0bElbGqTNhk9B0dFQHpaZFGGYcdchRF_3ZUFGGJwXvGzgWsh8mPR0eWt672qJu6ceo9Skn2tJM4ptsabe0NkrWpPhrwm0xwyS6NRUVjxHsozICgDSnQI9rECmROH3przaUIkdtgDO9xieauRG3IeDIOyQbeAEIgGFdP7O_FmsAdIngYnuSLvyE_mXLQMqjMLKvF4ItzkNwDw2NXIdGdaoiCgf8T634F1XRW9pe6PzJzsIKZKzRbVIbBDevExmbC2F_UUTLmhxziJtdJqzQdQBjxPNCLBe-QDw" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "370", + "Content-Type": "application/json; charset=utf-8", + "Date": "Mon, 27 Jun 2022 19:01:34 GMT", + "Expires": "-1", + "Pragma": "no-cache", + "Strict-Transport-Security": "max-age=31536000;includeSubDomains", + "X-Content-Type-Options": "nosniff", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=InterNetwork;", + "x-ms-keyvault-rbac-assignment-id": "584380d7-2275-597d-851a-67f10d5739f1", + "x-ms-keyvault-rbac-cache": "ra_age=131;da_age=6576;rd_age=6576;brd_age=23063;ra_notif_age=421;dec_lev=1;", + "x-ms-keyvault-region": "uksouth", + "x-ms-keyvault-service-version": "1.9.444.2", + "x-ms-request-id": "d8572dad-7242-4072-b592-2ce3a4a67986" + }, + "ResponseBody": { + "kid": "https://fakevault/keys/key2582698/746d63a443eb4332aa8dca4a6e47bf61", + "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ" + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/testdata/recordings/TestWrapUnwrap/MHSM.json b/sdk/keyvault/azkeys/testdata/recordings/TestWrapUnwrap/MHSM.json new file mode 100644 index 000000000000..3ba453e33779 --- /dev/null +++ b/sdk/keyvault/azkeys/testdata/recordings/TestWrapUnwrap/MHSM.json @@ -0,0 +1,153 @@ +{ + "Entries": [ + { + "RequestUri": "https://fakemhsm/keys/key817673446/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Content-Length": "0", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": null, + "StatusCode": 401, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "0", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "WWW-Authenticate": "Bearer authorization=\u0022https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47\u0022, resource=\u0022https://managedhsm.azure.net\u0022", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-request-id": "9039dee0-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "1" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://fakemhsm/keys/key817673446/create?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "47", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "key_ops": [ + "wrapKey", + "unwrapKey" + ], + "kty": "RSA" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "678", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "9042e97c-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "284" + }, + "ResponseBody": { + "attributes": { + "created": 1656356494, + "enabled": true, + "exportable": false, + "recoverableDays": 7, + "recoveryLevel": "CustomizedRecoverable\u002BPurgeable", + "updated": 1656356494 + }, + "key": { + "e": "AQAB", + "key_ops": [ + "wrapKey", + "unwrapKey" + ], + "kid": "https://fakemhsm/keys/key817673446/a5d1327a6c1301ad8ff53f1f60ce61c1", + "kty": "RSA-HSM", + "n": "skh9kv1w-NnKV7UDD5d9Dr9MvUnZ6JCunBjF89J9EPhudmFT6IZeVblIku-OiOOdyPX59G7fHDje6iB1pPqY2AOuQJ-aKqTgwvewgqac0wvYh1FjE2fm1tyogObYfPVpWZpqk4q1HJl-FQeeg42mJ81OAt97yiYk_xG3VLY2-t-OTz7kFUJ5RLNvg04t9V650zrE4s1fctn118g-_hY-9nmRBJ8tPNk2HrEntFVlOR3kZghrwfuzX7CcIGHBE1quH7Md5ZdJ99BKDihnKh4IbjXs17RadHUjgCeti7H3HtKm4oaWesaGi-eTW7sqMq0TixnCWNfEje0TxD4poUotAQ" + } + } + }, + { + "RequestUri": "https://fakemhsm/keys/key817673446//wrapkey?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "296", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP", + "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "469", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "9085e47a-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "94" + }, + "ResponseBody": { + "alg": "RSA-OAEP", + "kid": "https://fakemhsm/keys/key817673446/a5d1327a6c1301ad8ff53f1f60ce61c1", + "value": "cnnG8LjnDMNayYjhC2uKrpYw3jWQ7A6K5FGd5Cz_8MEIxzpaQZTBuEhHp1Yk5pafHWog3FS90t75Hxhcm9YymoRGlI_sN8cxL6Z3bUf6vpJFKB7oQVQ4_sA_wKSt4JyYfRMrNQ5g5gN6YHQqb1iyrv7X4Gy5Hr2yBNj85BE-IIK5RseXa64NS3QaqmCreMmqbYdUW9X2jSXA-F9kgo-w_14UlZwVKmXyOZfGkJZ_nUGYzGp0n89C4k0grW6zvr8WQ-zYBzT5LOQ0XaumrfvIC72L2Wiz2h6FxsxUYzlEGks6q_ob4NtvSCkkLVB7YTPsiLWlVkxajpm0xRrwPOcV-w" + } + }, + { + "RequestUri": "https://fakemhsm/keys/key817673446//unwrapkey?api-version=7.3", + "RequestMethod": "POST", + "RequestHeaders": { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "Authorization": "Sanitized", + "Content-Length": "371", + "Content-Type": "application/json", + "User-Agent": "azsdk-go-azkeys/v0.6.0 (go1.18; linux)" + }, + "RequestBody": { + "alg": "RSA-OAEP", + "value": "cnnG8LjnDMNayYjhC2uKrpYw3jWQ7A6K5FGd5Cz_8MEIxzpaQZTBuEhHp1Yk5pafHWog3FS90t75Hxhcm9YymoRGlI_sN8cxL6Z3bUf6vpJFKB7oQVQ4_sA_wKSt4JyYfRMrNQ5g5gN6YHQqb1iyrv7X4Gy5Hr2yBNj85BE-IIK5RseXa64NS3QaqmCreMmqbYdUW9X2jSXA-F9kgo-w_14UlZwVKmXyOZfGkJZ_nUGYzGp0n89C4k0grW6zvr8WQ-zYBzT5LOQ0XaumrfvIC72L2Wiz2h6FxsxUYzlEGks6q_ob4NtvSCkkLVB7YTPsiLWlVkxajpm0xRrwPOcV-w" + }, + "StatusCode": 200, + "ResponseHeaders": { + "Cache-Control": "no-cache", + "Content-Length": "394", + "Content-Security-Policy": "default-src \u0027self\u0027", + "Content-Type": "application/json; charset=utf-8", + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "SAMEORIGIN", + "x-ms-keyvault-network-info": "conn_type=Ipv4;addr=24.17.201.78;act_addr_fam=Ipv4;", + "x-ms-keyvault-region": "westus3", + "x-ms-request-id": "909c9a4e-f64b-11ec-b395-6045bd86d5ca", + "x-ms-server-latency": "3" + }, + "ResponseBody": { + "alg": "RSA-OAEP", + "kid": "https://fakemhsm/keys/key817673446/a5d1327a6c1301ad8ff53f1f60ce61c1", + "value": "NTA2M2U2YWFhODQ1ZjE1MDIwMDU0Nzk0NGZkMTk5Njc5Yzk4ZWQ2Zjk5ZGEwYTBiMmRhZmVhZjFmNDY4NDQ5NmZkNTMyYzFjMjI5OTY4Y2I5ZGVlNDQ5NTdmY2VmN2NjZWY1OWNlZGEwYjM2MmU1NmJjZDc4ZmQzZmFlZTU3ODFjNjIzYzBiYjIyYjM1YmVhYmRlMDY2NGZkMzBlMGU4MjRhYmEzZGQxYjBhZmZmYzRhM2Q5NTVlZGUyMGNmNmE4NTRkNTJjZmQ" + } + } + ], + "Variables": {} +} diff --git a/sdk/keyvault/azkeys/internal/generated/time_unix.go b/sdk/keyvault/azkeys/time_unix.go similarity index 97% rename from sdk/keyvault/azkeys/internal/generated/time_unix.go rename to sdk/keyvault/azkeys/time_unix.go index 1ee9da576348..fcdee315b2c6 100644 --- a/sdk/keyvault/azkeys/internal/generated/time_unix.go +++ b/sdk/keyvault/azkeys/time_unix.go @@ -5,8 +5,9 @@ // Licensed under the MIT License. See License.txt in the project root for license information. // Code generated by Microsoft (R) AutoRest Code Generator. // Changes may cause incorrect behavior and will be lost if the code is regenerated. +// DO NOT EDIT. -package generated +package azkeys import ( "encoding/json" diff --git a/sdk/keyvault/azkeys/utils_test.go b/sdk/keyvault/azkeys/utils_test.go index 898ff8d7df91..ae1910a7567b 100644 --- a/sdk/keyvault/azkeys/utils_test.go +++ b/sdk/keyvault/azkeys/utils_test.go @@ -4,7 +4,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -package azkeys +package azkeys_test import ( "context" @@ -15,75 +15,91 @@ import ( "hash/fnv" "os" "strings" + "sync" "testing" "time" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" + "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" + "github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal" "github.com/stretchr/testify/require" ) const ( fakeAttestationUrl = "https://fakeattestation" - fakeVaultURL = "https://fakekvurl.vault.azure.net" - fakeMHSMURL = "https://fakekvurl.managedhsm.azure.net" + fakeMHSMURL = "https://fakemhsm" + fakeVaultURL = "https://fakevault" ) var ( - enableHSM bool - testAttestationURL string - testMHSMURL string - testVaultURL string - pathToPackage = "sdk/keyvault/azkeys/testdata" + keysToPurge = struct { + mut sync.Mutex + names map[string][]string // maps vault URL to key names + }{sync.Mutex{}, map[string][]string{}} + + credential azcore.TokenCredential + enableHSM bool + attestationURL string + mhsmURL string + vaultURL string ) func TestMain(m *testing.M) { - testAttestationURL = strings.TrimSuffix(recording.GetEnvVariable("AZURE_KEYVAULT_ATTESTATION_URL", fakeAttestationUrl), "/") - testVaultURL = strings.TrimSuffix(recording.GetEnvVariable("AZURE_KEYVAULT_URL", fakeVaultURL), "/") - testMHSMURL = strings.TrimSuffix(recording.GetEnvVariable("AZURE_MANAGEDHSM_URL", fakeMHSMURL), "/") - enableHSM = testMHSMURL != fakeMHSMURL - - if testVaultURL == fakeVaultURL && recording.GetRecordMode() != recording.PlaybackMode { - panic("no value for AZURE_KEYVAULT_URL") + attestationURL = strings.TrimSuffix(recording.GetEnvVariable("AZURE_KEYVAULT_ATTESTATION_URL", fakeAttestationUrl), "/") + mhsmURL = strings.TrimSuffix(recording.GetEnvVariable("AZURE_MANAGEDHSM_URL", fakeMHSMURL), "/") + vaultURL = strings.TrimSuffix(recording.GetEnvVariable("AZURE_KEYVAULT_URL", fakeVaultURL), "/") + if vaultURL == "" { + if recording.GetRecordMode() != recording.PlaybackMode { + panic("no value for AZURE_KEYVAULT_URL") + } + vaultURL = fakeVaultURL } + enableHSM = mhsmURL != fakeMHSMURL err := recording.ResetProxy(nil) if err != nil { panic(err) } - switch recording.GetRecordMode() { - case recording.PlaybackMode: - err := recording.SetDefaultMatcher(nil, &recording.SetDefaultMatcherOptions{ - ExcludedHeaders: []string{":path", ":authority", ":method", ":scheme"}, - }) + if recording.GetRecordMode() == recording.PlaybackMode { + credential = &FakeCredential{} + } else { + tenantId := lookupEnvVar("AZKEYS_TENANT_ID") + clientId := lookupEnvVar("AZKEYS_CLIENT_ID") + secret := lookupEnvVar("AZKEYS_CLIENT_SECRET") + credential, err = azidentity.NewClientSecretCredential(tenantId, clientId, secret, nil) if err != nil { panic(err) } - case recording.RecordingMode: + } + if recording.GetRecordMode() == recording.RecordingMode { defer func() { err := recording.ResetProxy(nil) if err != nil { panic(err) } }() - err := recording.AddURISanitizer(fakeVaultURL, testVaultURL, nil) - if err != nil { - panic(err) - } - err = recording.AddURISanitizer(fakeAttestationUrl, testAttestationURL, nil) - if err != nil { - panic(err) - } - err = recording.AddRemoveHeaderSanitizer([]string{"Set-Cookie"}, nil) - if err != nil { - panic(err) + for _, URI := range []struct{ real, fake string }{ + {attestationURL, fakeAttestationUrl}, + {mhsmURL, fakeMHSMURL}, + {vaultURL, fakeVaultURL}, + } { + err := recording.AddURISanitizer(URI.fake, URI.real, nil) + if err != nil { + panic(err) + } + err = recording.AddBodyRegexSanitizer(URI.fake, URI.real, nil) + if err != nil { + panic(err) + } } - - keyIDPaths := []string{"$.error.message", "$.key.kid", "$.recoveryId"} - for _, path := range keyIDPaths { - err = recording.AddBodyKeySanitizer(path, fakeVaultURL, testVaultURL, nil) + for _, path := range []string{"$.error.message", "$.key.kid", "$.recoveryId"} { + err = recording.AddBodyKeySanitizer(path, fakeVaultURL, vaultURL, nil) + if err != nil { + panic(err) + } + err = recording.AddBodyKeySanitizer(path, fakeMHSMURL, mhsmURL, nil) if err != nil { panic(err) } @@ -98,45 +114,69 @@ func TestMain(m *testing.M) { } // we need to replace release policy data because it has the attestation service URL encoded // into it and therefore won't match in playback, when we don't have the URL used while recording - realPolicyData := base64.StdEncoding.EncodeToString(getMarshalledReleasePolicy(testAttestationURL)) + realPolicyData := base64.StdEncoding.EncodeToString(getMarshalledReleasePolicy(attestationURL)) fakePolicyData := base64.RawStdEncoding.EncodeToString(getMarshalledReleasePolicy(fakeAttestationUrl)) err = recording.AddBodyKeySanitizer("$.release_policy.data", fakePolicyData, realPolicyData, nil) if err != nil { panic(err) } - if enableHSM { - err = recording.AddURISanitizer(fakeMHSMURL, testMHSMURL, nil) - if err != nil { - panic(err) - } - for _, path := range keyIDPaths { - err = recording.AddBodyKeySanitizer(path, fakeMHSMURL, testMHSMURL, nil) - if err != nil { - panic(err) + err = recording.AddRemoveHeaderSanitizer([]string{"Set-Cookie"}, nil) + if err != nil { + panic(err) + } + } + code := m.Run() + if recording.GetRecordMode() != recording.PlaybackMode { + // Purge test keys using a client whose requests aren't recorded. This + // will be fast because the tests which created these keys requested their + // deletion. Now, at the end of the run, Key Vault will have finished deleting + // most of them... + for URL, names := range keysToPurge.names { + client := azkeys.NewClient(URL, credential, nil) + for _, name := range names { + // ...but we need a retry loop for the others. Note this wouldn't benefit + // from client-side parallelization because Key Vault's delete operations + // are running in parallel. When the client waits on one deletion, it + // effectively waits on all of them. + for i := 0; i < 12; i++ { + _, err := client.PurgeDeletedKey(context.Background(), name, nil) + if err == nil { + break + } + if i < 11 { + recording.Sleep(10 * time.Second) + } } } } } - - os.Exit(m.Run()) + os.Exit(code) } -func startTest(t *testing.T, testType string) { - if recording.GetRecordMode() != recording.PlaybackMode && testType == HSMTEST && !enableHSM { +func startTest(t *testing.T, MHSMtest bool) *azkeys.Client { + if recording.GetRecordMode() != recording.PlaybackMode && MHSMtest && !enableHSM { t.Skip("set AZURE_MANAGEDHSM_URL to run this test") } - err := recording.Start(t, pathToPackage, nil) + err := recording.Start(t, "sdk/keyvault/azkeys/testdata", nil) require.NoError(t, err) t.Cleanup(func() { err := recording.Stop(t, nil) require.NoError(t, err) }) + transport, err := recording.NewRecordingHTTPClient(t, nil) + require.NoError(t, err) + URL := vaultURL + if MHSMtest { + URL = mhsmURL + } + return azkeys.NewClient(URL, credential, &azcore.ClientOptions{Transport: transport}) } -func createRandomName(t *testing.T, prefix string) (string, error) { +func createRandomName(t *testing.T, prefix string) string { h := fnv.New32a() _, err := h.Write([]byte(t.Name())) - return prefix + fmt.Sprint(h.Sum32()), err + require.NoError(t, err) + return prefix + fmt.Sprint(h.Sum32()) } func lookupEnvVar(s string) string { @@ -147,53 +187,18 @@ func lookupEnvVar(s string) string { return ret } -func createClient(t *testing.T, testType string) (*Client, error) { - vaultUrl := testVaultURL - if testType == HSMTEST { - vaultUrl = testMHSMURL - } - transport, err := recording.NewRecordingHTTPClient(t, nil) - require.NoError(t, err) - - options := &ClientOptions{ - ClientOptions: azcore.ClientOptions{ - Transport: transport, - }, - } - - var cred azcore.TokenCredential - if recording.GetRecordMode() != "playback" { - tenantId := lookupEnvVar("AZKEYS_TENANT_ID") - clientId := lookupEnvVar("AZKEYS_CLIENT_ID") - clientSecret := lookupEnvVar("AZKEYS_CLIENT_SECRET") - cred, err = azidentity.NewClientSecretCredential(tenantId, clientId, clientSecret, nil) - require.NoError(t, err) - } else { - cred = NewFakeCredential("fake", "fake") - } - - return NewClient(vaultUrl, cred, options) -} - -func delay() *runtime.PollUntilDoneOptions { - return &runtime.PollUntilDoneOptions{Frequency: time.Second} -} - -func cleanUpKey(t *testing.T, client *Client, key string) { +func cleanUpKey(t *testing.T, client *azkeys.Client, ID *azkeys.ID) { if recording.GetRecordMode() == recording.PlaybackMode { return } - - resp, err := client.BeginDeleteKey(context.Background(), key, nil) - if err != nil { - return + URL, name, _ := internal.ParseID((*string)(ID)) + if _, err := client.DeleteKey(context.Background(), *name, nil); err == nil { + keysToPurge.mut.Lock() + defer keysToPurge.mut.Unlock() + keysToPurge.names[*URL] = append(keysToPurge.names[*URL], *name) + } else { + t.Logf(`cleanUpKey failed for "%s": %v`, *name, err) } - - _, err = resp.PollUntilDone(context.Background(), delay()) - require.NoError(t, err) - - _, err = client.PurgeDeletedKey(context.Background(), key, nil) - require.NoError(t, err) } type FakeCredential struct{} @@ -203,10 +208,7 @@ func NewFakeCredential(accountName, accountKey string) *FakeCredential { } func (f *FakeCredential) GetToken(ctx context.Context, options policy.TokenRequestOptions) (azcore.AccessToken, error) { - return azcore.AccessToken{ - Token: "faketoken", - ExpiresOn: time.Now().UTC().Add(time.Hour), - }, nil + return azcore.AccessToken{Token: "faketoken", ExpiresOn: time.Now().UTC().Add(time.Hour)}, nil } func toBytes(s string, t *testing.T) []byte { @@ -218,46 +220,6 @@ func toBytes(s string, t *testing.T) []byte { return ret } -func validateKey(t *testing.T, key *Key) { - require.NotNil(t, key) - require.NotNil(t, key.Properties) - validateProperties(t, key.Properties) - require.NotNil(t, key.JSONWebKey) - require.NotNil(t, key.ID) - require.NotNil(t, key.Name) -} - -func validateProperties(t *testing.T, props *Properties) { - require.NotNil(t, props) - if props.CreatedOn == nil { - t.Fatalf("expected CreatedOn to be not nil") - } - if props.Enabled == nil { - t.Fatalf("expected Enabled to be not nil") - } - if props.ID == nil { - t.Fatalf("expected ID to be not nil") - } - if props.Name == nil { - t.Fatalf("expected Name to be not nil") - } - if props.RecoverableDays == nil { - t.Fatalf("expected RecoverableDays to be not nil") - } - if props.RecoveryLevel == nil { - t.Fatalf("expected RecoveryLevel to be not nil") - } - if props.UpdatedOn == nil { - t.Fatalf("expected UpdatedOn to be not nil") - } - if props.VaultURL == nil { - t.Fatalf("expected VaultURL to be not nil") - } - if props.Version == nil { - t.Fatalf("expected Version to be not nil") - } -} - func getMarshalledReleasePolicy(attestationURL string) []byte { data, _ := json.Marshal(map[string]interface{}{ "anyOf": []map[string]interface{}{ diff --git a/sdk/keyvault/azkeys/internal/generated/custom_client.go b/sdk/keyvault/azkeys/version.go similarity index 54% rename from sdk/keyvault/azkeys/internal/generated/custom_client.go rename to sdk/keyvault/azkeys/version.go index 9cb465b5a975..c85cd6e6e007 100644 --- a/sdk/keyvault/azkeys/internal/generated/custom_client.go +++ b/sdk/keyvault/azkeys/version.go @@ -4,10 +4,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -package generated +package azkeys -import "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" - -func (client *KeyVaultClient) Pipeline() runtime.Pipeline { - return client.pl -} +const ( + moduleName = "azkeys" + version = "v0.6.0" +)