Skip to content

Commit d8f69dd

Browse files
committed
feat(kms): add example
1 parent 306285b commit d8f69dd

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed

examples/kms/go.mod

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module github.com/stackitcloud/stackit-sdk-go/examples/kms
2+
3+
go 1.24.2
4+
5+
require (
6+
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
7+
github.com/google/uuid v1.6.0 // indirect
8+
github.com/stackitcloud/stackit-sdk-go/core v0.17.1 // indirect
9+
github.com/stackitcloud/stackit-sdk-go/services/kms v0.0.0-20250428090914-306285b22343 // indirect
10+
)

examples/kms/go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
2+
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
3+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
4+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
5+
github.com/stackitcloud/stackit-sdk-go/core v0.17.1 h1:TTrVoB1lERd/qfWzpe6HpwCJSjtaGnUI7UE7ITb5IT0=
6+
github.com/stackitcloud/stackit-sdk-go/core v0.17.1/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0=
7+
github.com/stackitcloud/stackit-sdk-go/services/kms v0.0.0-20250423063416-f75de618b724 h1:ni5aBQWbUqasgwOEd9tMrmHcSOum6htKJlNteDL/a/Y=
8+
github.com/stackitcloud/stackit-sdk-go/services/kms v0.0.0-20250423063416-f75de618b724/go.mod h1:PkEENcXnz+G3MIX7CsRXAD2ITqwzdNVacBq42qNRlwA=
9+
github.com/stackitcloud/stackit-sdk-go/services/kms v0.0.0-20250428090914-306285b22343 h1:AA0EkaVGUvlVSTFWimKVlFXAoSwb+5p6BoP4LLt9V0U=
10+
github.com/stackitcloud/stackit-sdk-go/services/kms v0.0.0-20250428090914-306285b22343/go.mod h1:eDyjUgidB+JYtE78aYLd1d/v/ijzm+FrWAzaaZxenso=

examples/kms/kms.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"log"
7+
"os"
8+
"time"
9+
10+
"github.com/stackitcloud/stackit-sdk-go/core/utils"
11+
"github.com/stackitcloud/stackit-sdk-go/services/kms"
12+
)
13+
14+
func main() {
15+
// Specify the project ID
16+
projectId := "66b03760-125b-4c63-9624-741e8a418c02"
17+
region := "eu01"
18+
19+
// Create a new API client, that uses default authentication and configuration
20+
kmsClient, err := kms.NewAPIClient()
21+
if err != nil {
22+
fmt.Fprintf(os.Stderr, "Creating API client: %v\n", err)
23+
os.Exit(1)
24+
}
25+
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
26+
defer cancel()
27+
28+
keyRing, err := kmsClient.CreateKeyRing(ctx, projectId, region).CreateKeyRingPayload(kms.CreateKeyRingPayload{
29+
Description: utils.Ptr("a test keyring"),
30+
DisplayName: utils.Ptr("test-keyring"),
31+
}).Execute()
32+
if err != nil {
33+
log.Fatalf("cannot create keyring: %v", err)
34+
}
35+
36+
key, err := kmsClient.CreateKey(ctx, projectId, region, *keyRing.Id).CreateKeyPayload(kms.CreateKeyPayload{
37+
Algorithm: kms.ALGORITHM_AES_256_GCM.Ptr(),
38+
Backend: kms.BACKEND_SOFTWARE.Ptr(),
39+
Description: utils.Ptr("A test key"),
40+
DisplayName: utils.Ptr("test-key"),
41+
Purpose: kms.PURPOSE_SYMMETRIC_ENCRYPT_DECRYPT.Ptr(),
42+
}).Execute()
43+
if err != nil {
44+
log.Fatalf("cannot create key: %v", err)
45+
}
46+
log.Printf("created key %v", key.Id)
47+
48+
keyRings, err := kmsClient.ListKeyRingsExecute(ctx, projectId, region)
49+
if err != nil {
50+
log.Fatalf("cannot list keyrings: %v", err)
51+
}
52+
if keyrings := keyRings.KeyRings; keyrings != nil {
53+
if len(*keyrings) == 0 {
54+
log.Printf("no keyrings defined")
55+
} else {
56+
for _, keyring := range *keyrings {
57+
log.Printf("id=%s displayname=%s status=%s", *keyring.Id, *keyring.DisplayName, *keyring.State)
58+
keylist, err := kmsClient.ListKeysExecute(ctx, projectId, region, *key.KeyRingId)
59+
if err != nil {
60+
log.Fatalf("cannot list keys: %v", err)
61+
}
62+
if keys := keylist.Keys; keys != nil {
63+
if len(*keys) == 0 {
64+
log.Printf("no keys")
65+
} else {
66+
for _, key := range *keys {
67+
log.Printf("key id=%s key name=%s key status=%s", *key.Id, *key.DisplayName, *key.State)
68+
}
69+
}
70+
}
71+
}
72+
}
73+
}
74+
75+
}

0 commit comments

Comments
 (0)