1// Copyright 2020 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// https://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go_gapic. DO NOT EDIT. 16 17package kms 18 19import ( 20 "context" 21 "fmt" 22 "math" 23 "net/url" 24 "time" 25 26 "github.com/golang/protobuf/proto" 27 gax "github.com/googleapis/gax-go/v2" 28 "google.golang.org/api/iterator" 29 "google.golang.org/api/option" 30 "google.golang.org/api/option/internaloption" 31 gtransport "google.golang.org/api/transport/grpc" 32 kmspb "google.golang.org/genproto/googleapis/cloud/kms/v1" 33 "google.golang.org/grpc" 34 "google.golang.org/grpc/codes" 35 "google.golang.org/grpc/metadata" 36) 37 38var newKeyManagementClientHook clientHook 39 40// KeyManagementCallOptions contains the retry settings for each method of KeyManagementClient. 41type KeyManagementCallOptions struct { 42 ListKeyRings []gax.CallOption 43 ListCryptoKeys []gax.CallOption 44 ListCryptoKeyVersions []gax.CallOption 45 ListImportJobs []gax.CallOption 46 GetKeyRing []gax.CallOption 47 GetCryptoKey []gax.CallOption 48 GetCryptoKeyVersion []gax.CallOption 49 GetPublicKey []gax.CallOption 50 GetImportJob []gax.CallOption 51 CreateKeyRing []gax.CallOption 52 CreateCryptoKey []gax.CallOption 53 CreateCryptoKeyVersion []gax.CallOption 54 ImportCryptoKeyVersion []gax.CallOption 55 CreateImportJob []gax.CallOption 56 UpdateCryptoKey []gax.CallOption 57 UpdateCryptoKeyVersion []gax.CallOption 58 Encrypt []gax.CallOption 59 Decrypt []gax.CallOption 60 AsymmetricSign []gax.CallOption 61 AsymmetricDecrypt []gax.CallOption 62 UpdateCryptoKeyPrimaryVersion []gax.CallOption 63 DestroyCryptoKeyVersion []gax.CallOption 64 RestoreCryptoKeyVersion []gax.CallOption 65} 66 67func defaultKeyManagementClientOptions() []option.ClientOption { 68 return []option.ClientOption{ 69 internaloption.WithDefaultEndpoint("cloudkms.googleapis.com:443"), 70 internaloption.WithDefaultMTLSEndpoint("cloudkms.mtls.googleapis.com:443"), 71 option.WithGRPCDialOption(grpc.WithDisableServiceConfig()), 72 option.WithScopes(DefaultAuthScopes()...), 73 option.WithGRPCDialOption(grpc.WithDefaultCallOptions( 74 grpc.MaxCallRecvMsgSize(math.MaxInt32))), 75 } 76} 77 78func defaultKeyManagementCallOptions() *KeyManagementCallOptions { 79 return &KeyManagementCallOptions{ 80 ListKeyRings: []gax.CallOption{ 81 gax.WithRetry(func() gax.Retryer { 82 return gax.OnCodes([]codes.Code{ 83 codes.Internal, 84 codes.Unavailable, 85 codes.DeadlineExceeded, 86 }, gax.Backoff{ 87 Initial: 100 * time.Millisecond, 88 Max: 60000 * time.Millisecond, 89 Multiplier: 1.30, 90 }) 91 }), 92 }, 93 ListCryptoKeys: []gax.CallOption{ 94 gax.WithRetry(func() gax.Retryer { 95 return gax.OnCodes([]codes.Code{ 96 codes.Internal, 97 codes.Unavailable, 98 codes.DeadlineExceeded, 99 }, gax.Backoff{ 100 Initial: 100 * time.Millisecond, 101 Max: 60000 * time.Millisecond, 102 Multiplier: 1.30, 103 }) 104 }), 105 }, 106 ListCryptoKeyVersions: []gax.CallOption{ 107 gax.WithRetry(func() gax.Retryer { 108 return gax.OnCodes([]codes.Code{ 109 codes.Internal, 110 codes.Unavailable, 111 codes.DeadlineExceeded, 112 }, gax.Backoff{ 113 Initial: 100 * time.Millisecond, 114 Max: 60000 * time.Millisecond, 115 Multiplier: 1.30, 116 }) 117 }), 118 }, 119 ListImportJobs: []gax.CallOption{ 120 gax.WithRetry(func() gax.Retryer { 121 return gax.OnCodes([]codes.Code{ 122 codes.Internal, 123 codes.Unavailable, 124 codes.DeadlineExceeded, 125 }, gax.Backoff{ 126 Initial: 100 * time.Millisecond, 127 Max: 60000 * time.Millisecond, 128 Multiplier: 1.30, 129 }) 130 }), 131 }, 132 GetKeyRing: []gax.CallOption{ 133 gax.WithRetry(func() gax.Retryer { 134 return gax.OnCodes([]codes.Code{ 135 codes.Internal, 136 codes.Unavailable, 137 codes.DeadlineExceeded, 138 }, gax.Backoff{ 139 Initial: 100 * time.Millisecond, 140 Max: 60000 * time.Millisecond, 141 Multiplier: 1.30, 142 }) 143 }), 144 }, 145 GetCryptoKey: []gax.CallOption{ 146 gax.WithRetry(func() gax.Retryer { 147 return gax.OnCodes([]codes.Code{ 148 codes.Internal, 149 codes.Unavailable, 150 codes.DeadlineExceeded, 151 }, gax.Backoff{ 152 Initial: 100 * time.Millisecond, 153 Max: 60000 * time.Millisecond, 154 Multiplier: 1.30, 155 }) 156 }), 157 }, 158 GetCryptoKeyVersion: []gax.CallOption{ 159 gax.WithRetry(func() gax.Retryer { 160 return gax.OnCodes([]codes.Code{ 161 codes.Internal, 162 codes.Unavailable, 163 codes.DeadlineExceeded, 164 }, gax.Backoff{ 165 Initial: 100 * time.Millisecond, 166 Max: 60000 * time.Millisecond, 167 Multiplier: 1.30, 168 }) 169 }), 170 }, 171 GetPublicKey: []gax.CallOption{ 172 gax.WithRetry(func() gax.Retryer { 173 return gax.OnCodes([]codes.Code{ 174 codes.Internal, 175 codes.Unavailable, 176 codes.DeadlineExceeded, 177 }, gax.Backoff{ 178 Initial: 100 * time.Millisecond, 179 Max: 60000 * time.Millisecond, 180 Multiplier: 1.30, 181 }) 182 }), 183 }, 184 GetImportJob: []gax.CallOption{ 185 gax.WithRetry(func() gax.Retryer { 186 return gax.OnCodes([]codes.Code{ 187 codes.Internal, 188 codes.Unavailable, 189 codes.DeadlineExceeded, 190 }, gax.Backoff{ 191 Initial: 100 * time.Millisecond, 192 Max: 60000 * time.Millisecond, 193 Multiplier: 1.30, 194 }) 195 }), 196 }, 197 CreateKeyRing: []gax.CallOption{ 198 gax.WithRetry(func() gax.Retryer { 199 return gax.OnCodes([]codes.Code{ 200 codes.Internal, 201 codes.Unavailable, 202 codes.DeadlineExceeded, 203 }, gax.Backoff{ 204 Initial: 100 * time.Millisecond, 205 Max: 60000 * time.Millisecond, 206 Multiplier: 1.30, 207 }) 208 }), 209 }, 210 CreateCryptoKey: []gax.CallOption{ 211 gax.WithRetry(func() gax.Retryer { 212 return gax.OnCodes([]codes.Code{ 213 codes.Internal, 214 codes.Unavailable, 215 codes.DeadlineExceeded, 216 }, gax.Backoff{ 217 Initial: 100 * time.Millisecond, 218 Max: 60000 * time.Millisecond, 219 Multiplier: 1.30, 220 }) 221 }), 222 }, 223 CreateCryptoKeyVersion: []gax.CallOption{}, 224 ImportCryptoKeyVersion: []gax.CallOption{}, 225 CreateImportJob: []gax.CallOption{ 226 gax.WithRetry(func() gax.Retryer { 227 return gax.OnCodes([]codes.Code{ 228 codes.Internal, 229 codes.Unavailable, 230 codes.DeadlineExceeded, 231 }, gax.Backoff{ 232 Initial: 100 * time.Millisecond, 233 Max: 60000 * time.Millisecond, 234 Multiplier: 1.30, 235 }) 236 }), 237 }, 238 UpdateCryptoKey: []gax.CallOption{ 239 gax.WithRetry(func() gax.Retryer { 240 return gax.OnCodes([]codes.Code{ 241 codes.Internal, 242 codes.Unavailable, 243 codes.DeadlineExceeded, 244 }, gax.Backoff{ 245 Initial: 100 * time.Millisecond, 246 Max: 60000 * time.Millisecond, 247 Multiplier: 1.30, 248 }) 249 }), 250 }, 251 UpdateCryptoKeyVersion: []gax.CallOption{ 252 gax.WithRetry(func() gax.Retryer { 253 return gax.OnCodes([]codes.Code{ 254 codes.Internal, 255 codes.Unavailable, 256 codes.DeadlineExceeded, 257 }, gax.Backoff{ 258 Initial: 100 * time.Millisecond, 259 Max: 60000 * time.Millisecond, 260 Multiplier: 1.30, 261 }) 262 }), 263 }, 264 Encrypt: []gax.CallOption{ 265 gax.WithRetry(func() gax.Retryer { 266 return gax.OnCodes([]codes.Code{ 267 codes.Internal, 268 codes.Unavailable, 269 codes.DeadlineExceeded, 270 }, gax.Backoff{ 271 Initial: 100 * time.Millisecond, 272 Max: 60000 * time.Millisecond, 273 Multiplier: 1.30, 274 }) 275 }), 276 }, 277 Decrypt: []gax.CallOption{ 278 gax.WithRetry(func() gax.Retryer { 279 return gax.OnCodes([]codes.Code{ 280 codes.Internal, 281 codes.Unavailable, 282 codes.DeadlineExceeded, 283 }, gax.Backoff{ 284 Initial: 100 * time.Millisecond, 285 Max: 60000 * time.Millisecond, 286 Multiplier: 1.30, 287 }) 288 }), 289 }, 290 AsymmetricSign: []gax.CallOption{ 291 gax.WithRetry(func() gax.Retryer { 292 return gax.OnCodes([]codes.Code{ 293 codes.Internal, 294 codes.Unavailable, 295 codes.DeadlineExceeded, 296 }, gax.Backoff{ 297 Initial: 100 * time.Millisecond, 298 Max: 60000 * time.Millisecond, 299 Multiplier: 1.30, 300 }) 301 }), 302 }, 303 AsymmetricDecrypt: []gax.CallOption{ 304 gax.WithRetry(func() gax.Retryer { 305 return gax.OnCodes([]codes.Code{ 306 codes.Internal, 307 codes.Unavailable, 308 codes.DeadlineExceeded, 309 }, gax.Backoff{ 310 Initial: 100 * time.Millisecond, 311 Max: 60000 * time.Millisecond, 312 Multiplier: 1.30, 313 }) 314 }), 315 }, 316 UpdateCryptoKeyPrimaryVersion: []gax.CallOption{ 317 gax.WithRetry(func() gax.Retryer { 318 return gax.OnCodes([]codes.Code{ 319 codes.Internal, 320 codes.Unavailable, 321 codes.DeadlineExceeded, 322 }, gax.Backoff{ 323 Initial: 100 * time.Millisecond, 324 Max: 60000 * time.Millisecond, 325 Multiplier: 1.30, 326 }) 327 }), 328 }, 329 DestroyCryptoKeyVersion: []gax.CallOption{ 330 gax.WithRetry(func() gax.Retryer { 331 return gax.OnCodes([]codes.Code{ 332 codes.Internal, 333 codes.Unavailable, 334 codes.DeadlineExceeded, 335 }, gax.Backoff{ 336 Initial: 100 * time.Millisecond, 337 Max: 60000 * time.Millisecond, 338 Multiplier: 1.30, 339 }) 340 }), 341 }, 342 RestoreCryptoKeyVersion: []gax.CallOption{ 343 gax.WithRetry(func() gax.Retryer { 344 return gax.OnCodes([]codes.Code{ 345 codes.Internal, 346 codes.Unavailable, 347 codes.DeadlineExceeded, 348 }, gax.Backoff{ 349 Initial: 100 * time.Millisecond, 350 Max: 60000 * time.Millisecond, 351 Multiplier: 1.30, 352 }) 353 }), 354 }, 355 } 356} 357 358// KeyManagementClient is a client for interacting with Cloud Key Management Service (KMS) API. 359// 360// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. 361type KeyManagementClient struct { 362 // Connection pool of gRPC connections to the service. 363 connPool gtransport.ConnPool 364 365 // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE 366 disableDeadlines bool 367 368 // The gRPC API client. 369 keyManagementClient kmspb.KeyManagementServiceClient 370 371 // The call options for this service. 372 CallOptions *KeyManagementCallOptions 373 374 // The x-goog-* metadata to be sent with each request. 375 xGoogMetadata metadata.MD 376} 377 378// NewKeyManagementClient creates a new key management service client. 379// 380// Google Cloud Key Management Service 381// 382// Manages cryptographic keys and operations using those keys. Implements a REST 383// model with the following objects: 384// 385// KeyRing 386// 387// CryptoKey 388// 389// CryptoKeyVersion 390// 391// ImportJob 392// 393// If you are using manual gRPC libraries, see 394// Using gRPC with Cloud KMS (at https://cloud.google.com/kms/docs/grpc). 395func NewKeyManagementClient(ctx context.Context, opts ...option.ClientOption) (*KeyManagementClient, error) { 396 clientOpts := defaultKeyManagementClientOptions() 397 398 if newKeyManagementClientHook != nil { 399 hookOpts, err := newKeyManagementClientHook(ctx, clientHookParams{}) 400 if err != nil { 401 return nil, err 402 } 403 clientOpts = append(clientOpts, hookOpts...) 404 } 405 406 disableDeadlines, err := checkDisableDeadlines() 407 if err != nil { 408 return nil, err 409 } 410 411 connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) 412 if err != nil { 413 return nil, err 414 } 415 c := &KeyManagementClient{ 416 connPool: connPool, 417 disableDeadlines: disableDeadlines, 418 CallOptions: defaultKeyManagementCallOptions(), 419 420 keyManagementClient: kmspb.NewKeyManagementServiceClient(connPool), 421 } 422 c.setGoogleClientInfo() 423 424 return c, nil 425} 426 427// Connection returns a connection to the API service. 428// 429// Deprecated. 430func (c *KeyManagementClient) Connection() *grpc.ClientConn { 431 return c.connPool.Conn() 432} 433 434// Close closes the connection to the API service. The user should invoke this when 435// the client is no longer required. 436func (c *KeyManagementClient) Close() error { 437 return c.connPool.Close() 438} 439 440// setGoogleClientInfo sets the name and version of the application in 441// the `x-goog-api-client` header passed on each request. Intended for 442// use by Google-written clients. 443func (c *KeyManagementClient) setGoogleClientInfo(keyval ...string) { 444 kv := append([]string{"gl-go", versionGo()}, keyval...) 445 kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version) 446 c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) 447} 448 449// ListKeyRings lists KeyRings. 450func (c *KeyManagementClient) ListKeyRings(ctx context.Context, req *kmspb.ListKeyRingsRequest, opts ...gax.CallOption) *KeyRingIterator { 451 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 452 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 453 opts = append(c.CallOptions.ListKeyRings[0:len(c.CallOptions.ListKeyRings):len(c.CallOptions.ListKeyRings)], opts...) 454 it := &KeyRingIterator{} 455 req = proto.Clone(req).(*kmspb.ListKeyRingsRequest) 456 it.InternalFetch = func(pageSize int, pageToken string) ([]*kmspb.KeyRing, string, error) { 457 var resp *kmspb.ListKeyRingsResponse 458 req.PageToken = pageToken 459 if pageSize > math.MaxInt32 { 460 req.PageSize = math.MaxInt32 461 } else { 462 req.PageSize = int32(pageSize) 463 } 464 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 465 var err error 466 resp, err = c.keyManagementClient.ListKeyRings(ctx, req, settings.GRPC...) 467 return err 468 }, opts...) 469 if err != nil { 470 return nil, "", err 471 } 472 473 it.Response = resp 474 return resp.GetKeyRings(), resp.GetNextPageToken(), nil 475 } 476 fetch := func(pageSize int, pageToken string) (string, error) { 477 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 478 if err != nil { 479 return "", err 480 } 481 it.items = append(it.items, items...) 482 return nextPageToken, nil 483 } 484 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 485 it.pageInfo.MaxSize = int(req.GetPageSize()) 486 it.pageInfo.Token = req.GetPageToken() 487 return it 488} 489 490// ListCryptoKeys lists CryptoKeys. 491func (c *KeyManagementClient) ListCryptoKeys(ctx context.Context, req *kmspb.ListCryptoKeysRequest, opts ...gax.CallOption) *CryptoKeyIterator { 492 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 493 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 494 opts = append(c.CallOptions.ListCryptoKeys[0:len(c.CallOptions.ListCryptoKeys):len(c.CallOptions.ListCryptoKeys)], opts...) 495 it := &CryptoKeyIterator{} 496 req = proto.Clone(req).(*kmspb.ListCryptoKeysRequest) 497 it.InternalFetch = func(pageSize int, pageToken string) ([]*kmspb.CryptoKey, string, error) { 498 var resp *kmspb.ListCryptoKeysResponse 499 req.PageToken = pageToken 500 if pageSize > math.MaxInt32 { 501 req.PageSize = math.MaxInt32 502 } else { 503 req.PageSize = int32(pageSize) 504 } 505 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 506 var err error 507 resp, err = c.keyManagementClient.ListCryptoKeys(ctx, req, settings.GRPC...) 508 return err 509 }, opts...) 510 if err != nil { 511 return nil, "", err 512 } 513 514 it.Response = resp 515 return resp.GetCryptoKeys(), resp.GetNextPageToken(), nil 516 } 517 fetch := func(pageSize int, pageToken string) (string, error) { 518 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 519 if err != nil { 520 return "", err 521 } 522 it.items = append(it.items, items...) 523 return nextPageToken, nil 524 } 525 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 526 it.pageInfo.MaxSize = int(req.GetPageSize()) 527 it.pageInfo.Token = req.GetPageToken() 528 return it 529} 530 531// ListCryptoKeyVersions lists CryptoKeyVersions. 532func (c *KeyManagementClient) ListCryptoKeyVersions(ctx context.Context, req *kmspb.ListCryptoKeyVersionsRequest, opts ...gax.CallOption) *CryptoKeyVersionIterator { 533 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 534 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 535 opts = append(c.CallOptions.ListCryptoKeyVersions[0:len(c.CallOptions.ListCryptoKeyVersions):len(c.CallOptions.ListCryptoKeyVersions)], opts...) 536 it := &CryptoKeyVersionIterator{} 537 req = proto.Clone(req).(*kmspb.ListCryptoKeyVersionsRequest) 538 it.InternalFetch = func(pageSize int, pageToken string) ([]*kmspb.CryptoKeyVersion, string, error) { 539 var resp *kmspb.ListCryptoKeyVersionsResponse 540 req.PageToken = pageToken 541 if pageSize > math.MaxInt32 { 542 req.PageSize = math.MaxInt32 543 } else { 544 req.PageSize = int32(pageSize) 545 } 546 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 547 var err error 548 resp, err = c.keyManagementClient.ListCryptoKeyVersions(ctx, req, settings.GRPC...) 549 return err 550 }, opts...) 551 if err != nil { 552 return nil, "", err 553 } 554 555 it.Response = resp 556 return resp.GetCryptoKeyVersions(), resp.GetNextPageToken(), nil 557 } 558 fetch := func(pageSize int, pageToken string) (string, error) { 559 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 560 if err != nil { 561 return "", err 562 } 563 it.items = append(it.items, items...) 564 return nextPageToken, nil 565 } 566 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 567 it.pageInfo.MaxSize = int(req.GetPageSize()) 568 it.pageInfo.Token = req.GetPageToken() 569 return it 570} 571 572// ListImportJobs lists ImportJobs. 573func (c *KeyManagementClient) ListImportJobs(ctx context.Context, req *kmspb.ListImportJobsRequest, opts ...gax.CallOption) *ImportJobIterator { 574 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 575 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 576 opts = append(c.CallOptions.ListImportJobs[0:len(c.CallOptions.ListImportJobs):len(c.CallOptions.ListImportJobs)], opts...) 577 it := &ImportJobIterator{} 578 req = proto.Clone(req).(*kmspb.ListImportJobsRequest) 579 it.InternalFetch = func(pageSize int, pageToken string) ([]*kmspb.ImportJob, string, error) { 580 var resp *kmspb.ListImportJobsResponse 581 req.PageToken = pageToken 582 if pageSize > math.MaxInt32 { 583 req.PageSize = math.MaxInt32 584 } else { 585 req.PageSize = int32(pageSize) 586 } 587 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 588 var err error 589 resp, err = c.keyManagementClient.ListImportJobs(ctx, req, settings.GRPC...) 590 return err 591 }, opts...) 592 if err != nil { 593 return nil, "", err 594 } 595 596 it.Response = resp 597 return resp.GetImportJobs(), resp.GetNextPageToken(), nil 598 } 599 fetch := func(pageSize int, pageToken string) (string, error) { 600 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 601 if err != nil { 602 return "", err 603 } 604 it.items = append(it.items, items...) 605 return nextPageToken, nil 606 } 607 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 608 it.pageInfo.MaxSize = int(req.GetPageSize()) 609 it.pageInfo.Token = req.GetPageToken() 610 return it 611} 612 613// GetKeyRing returns metadata for a given KeyRing. 614func (c *KeyManagementClient) GetKeyRing(ctx context.Context, req *kmspb.GetKeyRingRequest, opts ...gax.CallOption) (*kmspb.KeyRing, error) { 615 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 616 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 617 defer cancel() 618 ctx = cctx 619 } 620 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 621 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 622 opts = append(c.CallOptions.GetKeyRing[0:len(c.CallOptions.GetKeyRing):len(c.CallOptions.GetKeyRing)], opts...) 623 var resp *kmspb.KeyRing 624 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 625 var err error 626 resp, err = c.keyManagementClient.GetKeyRing(ctx, req, settings.GRPC...) 627 return err 628 }, opts...) 629 if err != nil { 630 return nil, err 631 } 632 return resp, nil 633} 634 635// GetCryptoKey returns metadata for a given CryptoKey, as well as its 636// primary CryptoKeyVersion. 637func (c *KeyManagementClient) GetCryptoKey(ctx context.Context, req *kmspb.GetCryptoKeyRequest, opts ...gax.CallOption) (*kmspb.CryptoKey, error) { 638 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 639 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 640 defer cancel() 641 ctx = cctx 642 } 643 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 644 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 645 opts = append(c.CallOptions.GetCryptoKey[0:len(c.CallOptions.GetCryptoKey):len(c.CallOptions.GetCryptoKey)], opts...) 646 var resp *kmspb.CryptoKey 647 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 648 var err error 649 resp, err = c.keyManagementClient.GetCryptoKey(ctx, req, settings.GRPC...) 650 return err 651 }, opts...) 652 if err != nil { 653 return nil, err 654 } 655 return resp, nil 656} 657 658// GetCryptoKeyVersion returns metadata for a given CryptoKeyVersion. 659func (c *KeyManagementClient) GetCryptoKeyVersion(ctx context.Context, req *kmspb.GetCryptoKeyVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKeyVersion, error) { 660 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 661 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 662 defer cancel() 663 ctx = cctx 664 } 665 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 666 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 667 opts = append(c.CallOptions.GetCryptoKeyVersion[0:len(c.CallOptions.GetCryptoKeyVersion):len(c.CallOptions.GetCryptoKeyVersion)], opts...) 668 var resp *kmspb.CryptoKeyVersion 669 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 670 var err error 671 resp, err = c.keyManagementClient.GetCryptoKeyVersion(ctx, req, settings.GRPC...) 672 return err 673 }, opts...) 674 if err != nil { 675 return nil, err 676 } 677 return resp, nil 678} 679 680// GetPublicKey returns the public key for the given CryptoKeyVersion. The 681// CryptoKey.purpose must be 682// ASYMMETRIC_SIGN or 683// ASYMMETRIC_DECRYPT. 684func (c *KeyManagementClient) GetPublicKey(ctx context.Context, req *kmspb.GetPublicKeyRequest, opts ...gax.CallOption) (*kmspb.PublicKey, error) { 685 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 686 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 687 defer cancel() 688 ctx = cctx 689 } 690 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 691 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 692 opts = append(c.CallOptions.GetPublicKey[0:len(c.CallOptions.GetPublicKey):len(c.CallOptions.GetPublicKey)], opts...) 693 var resp *kmspb.PublicKey 694 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 695 var err error 696 resp, err = c.keyManagementClient.GetPublicKey(ctx, req, settings.GRPC...) 697 return err 698 }, opts...) 699 if err != nil { 700 return nil, err 701 } 702 return resp, nil 703} 704 705// GetImportJob returns metadata for a given ImportJob. 706func (c *KeyManagementClient) GetImportJob(ctx context.Context, req *kmspb.GetImportJobRequest, opts ...gax.CallOption) (*kmspb.ImportJob, error) { 707 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 708 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 709 defer cancel() 710 ctx = cctx 711 } 712 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 713 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 714 opts = append(c.CallOptions.GetImportJob[0:len(c.CallOptions.GetImportJob):len(c.CallOptions.GetImportJob)], opts...) 715 var resp *kmspb.ImportJob 716 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 717 var err error 718 resp, err = c.keyManagementClient.GetImportJob(ctx, req, settings.GRPC...) 719 return err 720 }, opts...) 721 if err != nil { 722 return nil, err 723 } 724 return resp, nil 725} 726 727// CreateKeyRing create a new KeyRing in a given Project and Location. 728func (c *KeyManagementClient) CreateKeyRing(ctx context.Context, req *kmspb.CreateKeyRingRequest, opts ...gax.CallOption) (*kmspb.KeyRing, error) { 729 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 730 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 731 defer cancel() 732 ctx = cctx 733 } 734 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 735 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 736 opts = append(c.CallOptions.CreateKeyRing[0:len(c.CallOptions.CreateKeyRing):len(c.CallOptions.CreateKeyRing)], opts...) 737 var resp *kmspb.KeyRing 738 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 739 var err error 740 resp, err = c.keyManagementClient.CreateKeyRing(ctx, req, settings.GRPC...) 741 return err 742 }, opts...) 743 if err != nil { 744 return nil, err 745 } 746 return resp, nil 747} 748 749// CreateCryptoKey create a new CryptoKey within a KeyRing. 750// 751// CryptoKey.purpose and 752// CryptoKey.version_template.algorithm 753// are required. 754func (c *KeyManagementClient) CreateCryptoKey(ctx context.Context, req *kmspb.CreateCryptoKeyRequest, opts ...gax.CallOption) (*kmspb.CryptoKey, error) { 755 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 756 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 757 defer cancel() 758 ctx = cctx 759 } 760 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 761 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 762 opts = append(c.CallOptions.CreateCryptoKey[0:len(c.CallOptions.CreateCryptoKey):len(c.CallOptions.CreateCryptoKey)], opts...) 763 var resp *kmspb.CryptoKey 764 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 765 var err error 766 resp, err = c.keyManagementClient.CreateCryptoKey(ctx, req, settings.GRPC...) 767 return err 768 }, opts...) 769 if err != nil { 770 return nil, err 771 } 772 return resp, nil 773} 774 775// CreateCryptoKeyVersion create a new CryptoKeyVersion in a CryptoKey. 776// 777// The server will assign the next sequential id. If unset, 778// state will be set to 779// ENABLED. 780func (c *KeyManagementClient) CreateCryptoKeyVersion(ctx context.Context, req *kmspb.CreateCryptoKeyVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKeyVersion, error) { 781 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 782 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 783 defer cancel() 784 ctx = cctx 785 } 786 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 787 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 788 opts = append(c.CallOptions.CreateCryptoKeyVersion[0:len(c.CallOptions.CreateCryptoKeyVersion):len(c.CallOptions.CreateCryptoKeyVersion)], opts...) 789 var resp *kmspb.CryptoKeyVersion 790 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 791 var err error 792 resp, err = c.keyManagementClient.CreateCryptoKeyVersion(ctx, req, settings.GRPC...) 793 return err 794 }, opts...) 795 if err != nil { 796 return nil, err 797 } 798 return resp, nil 799} 800 801// ImportCryptoKeyVersion imports a new CryptoKeyVersion into an existing CryptoKey using the 802// wrapped key material provided in the request. 803// 804// The version ID will be assigned the next sequential id within the 805// CryptoKey. 806func (c *KeyManagementClient) ImportCryptoKeyVersion(ctx context.Context, req *kmspb.ImportCryptoKeyVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKeyVersion, error) { 807 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 808 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 809 defer cancel() 810 ctx = cctx 811 } 812 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 813 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 814 opts = append(c.CallOptions.ImportCryptoKeyVersion[0:len(c.CallOptions.ImportCryptoKeyVersion):len(c.CallOptions.ImportCryptoKeyVersion)], opts...) 815 var resp *kmspb.CryptoKeyVersion 816 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 817 var err error 818 resp, err = c.keyManagementClient.ImportCryptoKeyVersion(ctx, req, settings.GRPC...) 819 return err 820 }, opts...) 821 if err != nil { 822 return nil, err 823 } 824 return resp, nil 825} 826 827// CreateImportJob create a new ImportJob within a KeyRing. 828// 829// ImportJob.import_method is required. 830func (c *KeyManagementClient) CreateImportJob(ctx context.Context, req *kmspb.CreateImportJobRequest, opts ...gax.CallOption) (*kmspb.ImportJob, error) { 831 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 832 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 833 defer cancel() 834 ctx = cctx 835 } 836 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 837 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 838 opts = append(c.CallOptions.CreateImportJob[0:len(c.CallOptions.CreateImportJob):len(c.CallOptions.CreateImportJob)], opts...) 839 var resp *kmspb.ImportJob 840 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 841 var err error 842 resp, err = c.keyManagementClient.CreateImportJob(ctx, req, settings.GRPC...) 843 return err 844 }, opts...) 845 if err != nil { 846 return nil, err 847 } 848 return resp, nil 849} 850 851// UpdateCryptoKey update a CryptoKey. 852func (c *KeyManagementClient) UpdateCryptoKey(ctx context.Context, req *kmspb.UpdateCryptoKeyRequest, opts ...gax.CallOption) (*kmspb.CryptoKey, error) { 853 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 854 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 855 defer cancel() 856 ctx = cctx 857 } 858 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "crypto_key.name", url.QueryEscape(req.GetCryptoKey().GetName()))) 859 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 860 opts = append(c.CallOptions.UpdateCryptoKey[0:len(c.CallOptions.UpdateCryptoKey):len(c.CallOptions.UpdateCryptoKey)], opts...) 861 var resp *kmspb.CryptoKey 862 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 863 var err error 864 resp, err = c.keyManagementClient.UpdateCryptoKey(ctx, req, settings.GRPC...) 865 return err 866 }, opts...) 867 if err != nil { 868 return nil, err 869 } 870 return resp, nil 871} 872 873// UpdateCryptoKeyVersion update a CryptoKeyVersion's metadata. 874// 875// state may be changed between 876// ENABLED and 877// DISABLED using this 878// method. See DestroyCryptoKeyVersion and RestoreCryptoKeyVersion to 879// move between other states. 880func (c *KeyManagementClient) UpdateCryptoKeyVersion(ctx context.Context, req *kmspb.UpdateCryptoKeyVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKeyVersion, error) { 881 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 882 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 883 defer cancel() 884 ctx = cctx 885 } 886 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "crypto_key_version.name", url.QueryEscape(req.GetCryptoKeyVersion().GetName()))) 887 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 888 opts = append(c.CallOptions.UpdateCryptoKeyVersion[0:len(c.CallOptions.UpdateCryptoKeyVersion):len(c.CallOptions.UpdateCryptoKeyVersion)], opts...) 889 var resp *kmspb.CryptoKeyVersion 890 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 891 var err error 892 resp, err = c.keyManagementClient.UpdateCryptoKeyVersion(ctx, req, settings.GRPC...) 893 return err 894 }, opts...) 895 if err != nil { 896 return nil, err 897 } 898 return resp, nil 899} 900 901// Encrypt encrypts data, so that it can only be recovered by a call to Decrypt. 902// The CryptoKey.purpose must be 903// ENCRYPT_DECRYPT. 904func (c *KeyManagementClient) Encrypt(ctx context.Context, req *kmspb.EncryptRequest, opts ...gax.CallOption) (*kmspb.EncryptResponse, error) { 905 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 906 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 907 defer cancel() 908 ctx = cctx 909 } 910 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 911 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 912 opts = append(c.CallOptions.Encrypt[0:len(c.CallOptions.Encrypt):len(c.CallOptions.Encrypt)], opts...) 913 var resp *kmspb.EncryptResponse 914 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 915 var err error 916 resp, err = c.keyManagementClient.Encrypt(ctx, req, settings.GRPC...) 917 return err 918 }, opts...) 919 if err != nil { 920 return nil, err 921 } 922 return resp, nil 923} 924 925// Decrypt decrypts data that was protected by Encrypt. The CryptoKey.purpose 926// must be ENCRYPT_DECRYPT. 927func (c *KeyManagementClient) Decrypt(ctx context.Context, req *kmspb.DecryptRequest, opts ...gax.CallOption) (*kmspb.DecryptResponse, error) { 928 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 929 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 930 defer cancel() 931 ctx = cctx 932 } 933 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 934 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 935 opts = append(c.CallOptions.Decrypt[0:len(c.CallOptions.Decrypt):len(c.CallOptions.Decrypt)], opts...) 936 var resp *kmspb.DecryptResponse 937 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 938 var err error 939 resp, err = c.keyManagementClient.Decrypt(ctx, req, settings.GRPC...) 940 return err 941 }, opts...) 942 if err != nil { 943 return nil, err 944 } 945 return resp, nil 946} 947 948// AsymmetricSign signs data using a CryptoKeyVersion with CryptoKey.purpose 949// ASYMMETRIC_SIGN, producing a signature that can be verified with the public 950// key retrieved from GetPublicKey. 951func (c *KeyManagementClient) AsymmetricSign(ctx context.Context, req *kmspb.AsymmetricSignRequest, opts ...gax.CallOption) (*kmspb.AsymmetricSignResponse, error) { 952 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 953 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 954 defer cancel() 955 ctx = cctx 956 } 957 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 958 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 959 opts = append(c.CallOptions.AsymmetricSign[0:len(c.CallOptions.AsymmetricSign):len(c.CallOptions.AsymmetricSign)], opts...) 960 var resp *kmspb.AsymmetricSignResponse 961 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 962 var err error 963 resp, err = c.keyManagementClient.AsymmetricSign(ctx, req, settings.GRPC...) 964 return err 965 }, opts...) 966 if err != nil { 967 return nil, err 968 } 969 return resp, nil 970} 971 972// AsymmetricDecrypt decrypts data that was encrypted with a public key retrieved from 973// GetPublicKey corresponding to a CryptoKeyVersion with 974// CryptoKey.purpose ASYMMETRIC_DECRYPT. 975func (c *KeyManagementClient) AsymmetricDecrypt(ctx context.Context, req *kmspb.AsymmetricDecryptRequest, opts ...gax.CallOption) (*kmspb.AsymmetricDecryptResponse, error) { 976 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 977 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 978 defer cancel() 979 ctx = cctx 980 } 981 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 982 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 983 opts = append(c.CallOptions.AsymmetricDecrypt[0:len(c.CallOptions.AsymmetricDecrypt):len(c.CallOptions.AsymmetricDecrypt)], opts...) 984 var resp *kmspb.AsymmetricDecryptResponse 985 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 986 var err error 987 resp, err = c.keyManagementClient.AsymmetricDecrypt(ctx, req, settings.GRPC...) 988 return err 989 }, opts...) 990 if err != nil { 991 return nil, err 992 } 993 return resp, nil 994} 995 996// UpdateCryptoKeyPrimaryVersion update the version of a CryptoKey that will be used in Encrypt. 997// 998// Returns an error if called on an asymmetric key. 999func (c *KeyManagementClient) UpdateCryptoKeyPrimaryVersion(ctx context.Context, req *kmspb.UpdateCryptoKeyPrimaryVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKey, error) { 1000 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 1001 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 1002 defer cancel() 1003 ctx = cctx 1004 } 1005 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 1006 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 1007 opts = append(c.CallOptions.UpdateCryptoKeyPrimaryVersion[0:len(c.CallOptions.UpdateCryptoKeyPrimaryVersion):len(c.CallOptions.UpdateCryptoKeyPrimaryVersion)], opts...) 1008 var resp *kmspb.CryptoKey 1009 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 1010 var err error 1011 resp, err = c.keyManagementClient.UpdateCryptoKeyPrimaryVersion(ctx, req, settings.GRPC...) 1012 return err 1013 }, opts...) 1014 if err != nil { 1015 return nil, err 1016 } 1017 return resp, nil 1018} 1019 1020// DestroyCryptoKeyVersion schedule a CryptoKeyVersion for destruction. 1021// 1022// Upon calling this method, CryptoKeyVersion.state will be set to 1023// DESTROY_SCHEDULED 1024// and destroy_time will be set to a time 24 1025// hours in the future, at which point the state 1026// will be changed to 1027// DESTROYED, and the key 1028// material will be irrevocably destroyed. 1029// 1030// Before the destroy_time is reached, 1031// RestoreCryptoKeyVersion may be called to reverse the process. 1032func (c *KeyManagementClient) DestroyCryptoKeyVersion(ctx context.Context, req *kmspb.DestroyCryptoKeyVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKeyVersion, error) { 1033 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 1034 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 1035 defer cancel() 1036 ctx = cctx 1037 } 1038 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 1039 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 1040 opts = append(c.CallOptions.DestroyCryptoKeyVersion[0:len(c.CallOptions.DestroyCryptoKeyVersion):len(c.CallOptions.DestroyCryptoKeyVersion)], opts...) 1041 var resp *kmspb.CryptoKeyVersion 1042 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 1043 var err error 1044 resp, err = c.keyManagementClient.DestroyCryptoKeyVersion(ctx, req, settings.GRPC...) 1045 return err 1046 }, opts...) 1047 if err != nil { 1048 return nil, err 1049 } 1050 return resp, nil 1051} 1052 1053// RestoreCryptoKeyVersion restore a CryptoKeyVersion in the 1054// DESTROY_SCHEDULED 1055// state. 1056// 1057// Upon restoration of the CryptoKeyVersion, state 1058// will be set to DISABLED, 1059// and destroy_time will be cleared. 1060func (c *KeyManagementClient) RestoreCryptoKeyVersion(ctx context.Context, req *kmspb.RestoreCryptoKeyVersionRequest, opts ...gax.CallOption) (*kmspb.CryptoKeyVersion, error) { 1061 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 1062 cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) 1063 defer cancel() 1064 ctx = cctx 1065 } 1066 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 1067 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 1068 opts = append(c.CallOptions.RestoreCryptoKeyVersion[0:len(c.CallOptions.RestoreCryptoKeyVersion):len(c.CallOptions.RestoreCryptoKeyVersion)], opts...) 1069 var resp *kmspb.CryptoKeyVersion 1070 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 1071 var err error 1072 resp, err = c.keyManagementClient.RestoreCryptoKeyVersion(ctx, req, settings.GRPC...) 1073 return err 1074 }, opts...) 1075 if err != nil { 1076 return nil, err 1077 } 1078 return resp, nil 1079} 1080 1081// CryptoKeyIterator manages a stream of *kmspb.CryptoKey. 1082type CryptoKeyIterator struct { 1083 items []*kmspb.CryptoKey 1084 pageInfo *iterator.PageInfo 1085 nextFunc func() error 1086 1087 // Response is the raw response for the current page. 1088 // It must be cast to the RPC response type. 1089 // Calling Next() or InternalFetch() updates this value. 1090 Response interface{} 1091 1092 // InternalFetch is for use by the Google Cloud Libraries only. 1093 // It is not part of the stable interface of this package. 1094 // 1095 // InternalFetch returns results from a single call to the underlying RPC. 1096 // The number of results is no greater than pageSize. 1097 // If there are no more results, nextPageToken is empty and err is nil. 1098 InternalFetch func(pageSize int, pageToken string) (results []*kmspb.CryptoKey, nextPageToken string, err error) 1099} 1100 1101// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1102func (it *CryptoKeyIterator) PageInfo() *iterator.PageInfo { 1103 return it.pageInfo 1104} 1105 1106// Next returns the next result. Its second return value is iterator.Done if there are no more 1107// results. Once Next returns Done, all subsequent calls will return Done. 1108func (it *CryptoKeyIterator) Next() (*kmspb.CryptoKey, error) { 1109 var item *kmspb.CryptoKey 1110 if err := it.nextFunc(); err != nil { 1111 return item, err 1112 } 1113 item = it.items[0] 1114 it.items = it.items[1:] 1115 return item, nil 1116} 1117 1118func (it *CryptoKeyIterator) bufLen() int { 1119 return len(it.items) 1120} 1121 1122func (it *CryptoKeyIterator) takeBuf() interface{} { 1123 b := it.items 1124 it.items = nil 1125 return b 1126} 1127 1128// CryptoKeyVersionIterator manages a stream of *kmspb.CryptoKeyVersion. 1129type CryptoKeyVersionIterator struct { 1130 items []*kmspb.CryptoKeyVersion 1131 pageInfo *iterator.PageInfo 1132 nextFunc func() error 1133 1134 // Response is the raw response for the current page. 1135 // It must be cast to the RPC response type. 1136 // Calling Next() or InternalFetch() updates this value. 1137 Response interface{} 1138 1139 // InternalFetch is for use by the Google Cloud Libraries only. 1140 // It is not part of the stable interface of this package. 1141 // 1142 // InternalFetch returns results from a single call to the underlying RPC. 1143 // The number of results is no greater than pageSize. 1144 // If there are no more results, nextPageToken is empty and err is nil. 1145 InternalFetch func(pageSize int, pageToken string) (results []*kmspb.CryptoKeyVersion, nextPageToken string, err error) 1146} 1147 1148// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1149func (it *CryptoKeyVersionIterator) PageInfo() *iterator.PageInfo { 1150 return it.pageInfo 1151} 1152 1153// Next returns the next result. Its second return value is iterator.Done if there are no more 1154// results. Once Next returns Done, all subsequent calls will return Done. 1155func (it *CryptoKeyVersionIterator) Next() (*kmspb.CryptoKeyVersion, error) { 1156 var item *kmspb.CryptoKeyVersion 1157 if err := it.nextFunc(); err != nil { 1158 return item, err 1159 } 1160 item = it.items[0] 1161 it.items = it.items[1:] 1162 return item, nil 1163} 1164 1165func (it *CryptoKeyVersionIterator) bufLen() int { 1166 return len(it.items) 1167} 1168 1169func (it *CryptoKeyVersionIterator) takeBuf() interface{} { 1170 b := it.items 1171 it.items = nil 1172 return b 1173} 1174 1175// ImportJobIterator manages a stream of *kmspb.ImportJob. 1176type ImportJobIterator struct { 1177 items []*kmspb.ImportJob 1178 pageInfo *iterator.PageInfo 1179 nextFunc func() error 1180 1181 // Response is the raw response for the current page. 1182 // It must be cast to the RPC response type. 1183 // Calling Next() or InternalFetch() updates this value. 1184 Response interface{} 1185 1186 // InternalFetch is for use by the Google Cloud Libraries only. 1187 // It is not part of the stable interface of this package. 1188 // 1189 // InternalFetch returns results from a single call to the underlying RPC. 1190 // The number of results is no greater than pageSize. 1191 // If there are no more results, nextPageToken is empty and err is nil. 1192 InternalFetch func(pageSize int, pageToken string) (results []*kmspb.ImportJob, nextPageToken string, err error) 1193} 1194 1195// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1196func (it *ImportJobIterator) PageInfo() *iterator.PageInfo { 1197 return it.pageInfo 1198} 1199 1200// Next returns the next result. Its second return value is iterator.Done if there are no more 1201// results. Once Next returns Done, all subsequent calls will return Done. 1202func (it *ImportJobIterator) Next() (*kmspb.ImportJob, error) { 1203 var item *kmspb.ImportJob 1204 if err := it.nextFunc(); err != nil { 1205 return item, err 1206 } 1207 item = it.items[0] 1208 it.items = it.items[1:] 1209 return item, nil 1210} 1211 1212func (it *ImportJobIterator) bufLen() int { 1213 return len(it.items) 1214} 1215 1216func (it *ImportJobIterator) takeBuf() interface{} { 1217 b := it.items 1218 it.items = nil 1219 return b 1220} 1221 1222// KeyRingIterator manages a stream of *kmspb.KeyRing. 1223type KeyRingIterator struct { 1224 items []*kmspb.KeyRing 1225 pageInfo *iterator.PageInfo 1226 nextFunc func() error 1227 1228 // Response is the raw response for the current page. 1229 // It must be cast to the RPC response type. 1230 // Calling Next() or InternalFetch() updates this value. 1231 Response interface{} 1232 1233 // InternalFetch is for use by the Google Cloud Libraries only. 1234 // It is not part of the stable interface of this package. 1235 // 1236 // InternalFetch returns results from a single call to the underlying RPC. 1237 // The number of results is no greater than pageSize. 1238 // If there are no more results, nextPageToken is empty and err is nil. 1239 InternalFetch func(pageSize int, pageToken string) (results []*kmspb.KeyRing, nextPageToken string, err error) 1240} 1241 1242// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1243func (it *KeyRingIterator) PageInfo() *iterator.PageInfo { 1244 return it.pageInfo 1245} 1246 1247// Next returns the next result. Its second return value is iterator.Done if there are no more 1248// results. Once Next returns Done, all subsequent calls will return Done. 1249func (it *KeyRingIterator) Next() (*kmspb.KeyRing, error) { 1250 var item *kmspb.KeyRing 1251 if err := it.nextFunc(); err != nil { 1252 return item, err 1253 } 1254 item = it.items[0] 1255 it.items = it.items[1:] 1256 return item, nil 1257} 1258 1259func (it *KeyRingIterator) bufLen() int { 1260 return len(it.items) 1261} 1262 1263func (it *KeyRingIterator) takeBuf() interface{} { 1264 b := it.items 1265 it.items = nil 1266 return b 1267} 1268