Skip to content

Commit a6d6959

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

File tree

4 files changed

+103
-1
lines changed

4 files changed

+103
-1
lines changed

examples/kms/go.mod

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

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/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
5+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
6+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
7+
github.com/stackitcloud/stackit-sdk-go/core v0.17.1 h1:TTrVoB1lERd/qfWzpe6HpwCJSjtaGnUI7UE7ITb5IT0=
8+
github.com/stackitcloud/stackit-sdk-go/core v0.17.1/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0=
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: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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 := "PROJECT_ID"
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.Printf("cannot create keyring: %v", err)
34+
return
35+
}
36+
37+
key, err := kmsClient.CreateKey(ctx, projectId, region, *keyRing.Id).CreateKeyPayload(kms.CreateKeyPayload{
38+
Algorithm: kms.ALGORITHM_AES_256_GCM.Ptr(),
39+
Backend: kms.BACKEND_SOFTWARE.Ptr(),
40+
Description: utils.Ptr("A test key"),
41+
DisplayName: utils.Ptr("test-key"),
42+
Purpose: kms.PURPOSE_SYMMETRIC_ENCRYPT_DECRYPT.Ptr(),
43+
}).Execute()
44+
if err != nil {
45+
log.Printf("cannot create key: %v", err)
46+
return
47+
}
48+
log.Printf("created key %v", key.Id)
49+
50+
keyRings, err := kmsClient.ListKeyRingsExecute(ctx, projectId, region)
51+
if err != nil {
52+
log.Printf("cannot list keyrings: %v", err)
53+
return
54+
}
55+
if keyrings := keyRings.KeyRings; keyrings != nil {
56+
if len(*keyrings) == 0 {
57+
log.Printf("no keyrings defined")
58+
} else {
59+
for _, keyring := range *keyrings {
60+
log.Printf("id=%s displayname=%s status=%s", *keyring.Id, *keyring.DisplayName, *keyring.State)
61+
keylist, err := kmsClient.ListKeysExecute(ctx, projectId, region, *key.KeyRingId)
62+
if err != nil {
63+
log.Printf("cannot list keys: %v", err)
64+
return
65+
}
66+
if keys := keylist.Keys; keys != nil {
67+
if len(*keys) == 0 {
68+
log.Printf("no keys")
69+
} else {
70+
for _, key := range *keys {
71+
log.Printf("key id=%s key name=%s key status=%s", *key.Id, *key.DisplayName, *key.State)
72+
}
73+
}
74+
}
75+
}
76+
}
77+
}
78+
}

go.work

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
go 1.21
1+
go 1.24.2
22

33
use (
44
./core
@@ -10,6 +10,7 @@ use (
1010
./examples/errorhandling
1111
./examples/iaas
1212
./examples/iaasalpha
13+
./examples/kms
1314
./examples/loadbalancer
1415
./examples/logme
1516
./examples/mariadb

0 commit comments

Comments
 (0)