Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 12-create-a-config-generator-to-be-able-to-easily-create-topologies
  • 17-implement-qkdn-manager-dummy
  • 22-add-a-way-of-using-tracing
  • 3-create-db-connection-instead-of-using-memory-only
  • 32-enable-tls-for-all-local-settings-integration-tests-debug-etc
  • 37-improve-hostname-ip-handling
  • 44-block-incoming-keys-if-exceeding-max-key-fill-level
  • TUD-tests-real-hardware
  • add-docker-stats-script
  • add-inventory-manager
  • akms-ckms-api
  • akms-ckms-api-implementation
  • debug-ci
  • doc-update-figures-schematic
  • errors-in-chain
  • etsi-20-bordernode
  • etsi-20-bordernode-updated
  • extend-intercom-with-aes-auth-tag
  • kai_masterthesis
  • key-forwarding-and-delivery
  • ksa-key-delivery
  • martin-quipsec
  • master
  • renovate/code.fbi.h-da.de-danet-gnmi-target-digest
  • renovate/github.com-grpc-ecosystem-grpc-gateway-v2-2.x
  • renovate/github.com-openconfig-gnmi-0.x
  • renovate/golang.org-x-sys-0.x
  • renovate/golangci-golangci-lint-1.x
  • renovate/google.golang.org-genproto-googleapis-api-digest
  • renovate/google.golang.org-grpc-1.x
  • renovate/google.golang.org-protobuf-1.x
  • renovate/mongo-8.x
  • renovate/rabbitmq-4.x
  • request-health-checks-for-peers
  • scratch-container
  • telekom-ci
  • try-to-get-ltex-working-amd64
  • tud-testing
  • vustom-akms-ckms-branch
  • tud-testing-1
40 results

Target

Select target project
  • danet/quant
1 result
Select Git revision
  • 12-create-a-config-generator-to-be-able-to-easily-create-topologies
  • 17-implement-qkdn-manager-dummy
  • 22-add-a-way-of-using-tracing
  • 3-create-db-connection-instead-of-using-memory-only
  • 32-enable-tls-for-all-local-settings-integration-tests-debug-etc
  • 37-improve-hostname-ip-handling
  • 44-block-incoming-keys-if-exceeding-max-key-fill-level
  • TUD-tests-real-hardware
  • add-docker-stats-script
  • add-inventory-manager
  • akms-ckms-api
  • akms-ckms-api-implementation
  • debug-ci
  • doc-update-figures-schematic
  • errors-in-chain
  • etsi-20-bordernode
  • etsi-20-bordernode-updated
  • extend-intercom-with-aes-auth-tag
  • kai_masterthesis
  • key-forwarding-and-delivery
  • ksa-key-delivery
  • martin-quipsec
  • master
  • renovate/code.fbi.h-da.de-danet-gnmi-target-digest
  • renovate/github.com-grpc-ecosystem-grpc-gateway-v2-2.x
  • renovate/github.com-openconfig-gnmi-0.x
  • renovate/golang.org-x-sys-0.x
  • renovate/golangci-golangci-lint-1.x
  • renovate/google.golang.org-genproto-googleapis-api-digest
  • renovate/google.golang.org-grpc-1.x
  • renovate/google.golang.org-protobuf-1.x
  • renovate/mongo-8.x
  • renovate/rabbitmq-4.x
  • request-health-checks-for-peers
  • scratch-container
  • telekom-ci
  • try-to-get-ltex-working-amd64
  • tud-testing
  • vustom-akms-ckms-branch
  • tud-testing-1
40 results
Show changes
Commits on Source (2)
Showing
with 660 additions and 323 deletions
...@@ -13,7 +13,6 @@ variables: ...@@ -13,7 +13,6 @@ variables:
GOLANG_MINOR_VERSION: "${GOLANG_VERSION}.0" GOLANG_MINOR_VERSION: "${GOLANG_VERSION}.0"
DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_CERTDIR: "/certs"
# Build stage # Build stage
.build: &build .build: &build
...@@ -137,7 +136,6 @@ build-etsi14module-latest: ...@@ -137,7 +136,6 @@ build-etsi14module-latest:
- docker buildx build --push -t "$IMAGE_NAME:$TAG" -f etsi14module/Dockerfile --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" --build-arg GITLAB_LOGIN=${GITLAB_LOGIN} --build-arg GITLAB_TOKEN=${GITLAB_TOKEN} --build-arg GOLANG_VERSION=${GOLANG_VERSION} . - docker buildx build --push -t "$IMAGE_NAME:$TAG" -f etsi14module/Dockerfile --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" --build-arg GITLAB_LOGIN=${GITLAB_LOGIN} --build-arg GITLAB_TOKEN=${GITLAB_TOKEN} --build-arg GOLANG_VERSION=${GOLANG_VERSION} .
<<: *build-latest <<: *build-latest
# Analyze stage # Analyze stage
lint: lint:
stage: analyze stage: analyze
...@@ -175,8 +173,24 @@ unit-tests: ...@@ -175,8 +173,24 @@ unit-tests:
path: coverage.xml path: coverage.xml
needs: [] needs: []
integration-test-aes:
tags:
- shell
needs: []
variables:
DEPENDENCY_PROXY: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker login -u $CI_DEPENDENCY_PROXY_USER -p $CI_DEPENDENCY_PROXY_PASSWORD $CI_DEPENDENCY_PROXY_SERVER
- ./scripts/install_go_as_user.sh $GOLANG_MINOR_VERSION
- export PATH="$HOME/go/go/bin:$PATH"
- export GOROOT="$HOME/go/go"
- export GOPATH=$HOME/go_projects
- go version
script:
- make integration-test-aes
integration-test: integration-test-otp:
tags: tags:
- shell - shell
needs: [] needs: []
...@@ -191,4 +205,4 @@ integration-test: ...@@ -191,4 +205,4 @@ integration-test:
- export GOPATH=$HOME/go_projects - export GOPATH=$HOME/go_projects
- go version - go version
script: script:
- make integration-test - make integration-test-otp
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
"showLog": true, "showLog": true,
"trace": "log", "trace": "log",
"logOutput": "rpc", "logOutput": "rpc",
"preLaunchTask": "compose-debug-up", "preLaunchTask": "compose-debug-up"
}, },
{ {
"name": "kms02-debug", "name": "kms02-debug",
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
"showLog": true, "showLog": true,
"trace": "log", "trace": "log",
"logOutput": "rpc", "logOutput": "rpc",
"preLaunchTask": "compose-debug-up", "preLaunchTask": "compose-debug-up"
}, },
{ {
"name": "kms03-debug", "name": "kms03-debug",
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
"showLog": true, "showLog": true,
"trace": "log", "trace": "log",
"logOutput": "rpc", "logOutput": "rpc",
"preLaunchTask": "compose-debug-up", "preLaunchTask": "compose-debug-up"
}, },
{ {
"name": "kms04-debug", "name": "kms04-debug",
...@@ -54,10 +54,10 @@ ...@@ -54,10 +54,10 @@
"showLog": true, "showLog": true,
"trace": "log", "trace": "log",
"logOutput": "rpc", "logOutput": "rpc",
"preLaunchTask": "compose-debug-up", "preLaunchTask": "compose-debug-up"
}, },
{ {
"name": "integration-test-kms01-debug", "name": "integration-test-aes-kms01-debug",
"type": "go", "type": "go",
"request": "attach", "request": "attach",
"mode": "remote", "mode": "remote",
...@@ -67,10 +67,10 @@ ...@@ -67,10 +67,10 @@
"showLog": true, "showLog": true,
"trace": "log", "trace": "log",
"logOutput": "rpc", "logOutput": "rpc",
"preLaunchTask": "integration-test-debug-kms-up", "preLaunchTask": "integration-test-aes-debug-kms-up"
}, },
{ {
"name": "integration-test-kms02-debug", "name": "integration-test-aes-kms02-debug",
"type": "go", "type": "go",
"request": "attach", "request": "attach",
"mode": "remote", "mode": "remote",
...@@ -80,7 +80,33 @@ ...@@ -80,7 +80,33 @@
"showLog": true, "showLog": true,
"trace": "log", "trace": "log",
"logOutput": "rpc", "logOutput": "rpc",
"preLaunchTask": "integration-test-debug-kms-up", "preLaunchTask": "integration-test-aes-debug-kms-up"
},
{
"name": "integration-test-otp-kms01-debug",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "",
"port": 4401,
"host": "127.0.0.1",
"showLog": true,
"trace": "log",
"logOutput": "rpc",
"preLaunchTask": "integration-test-otp-debug-kms-up"
},
{
"name": "integration-test-otp-kms02-debug",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "",
"port": 4402,
"host": "127.0.0.1",
"showLog": true,
"trace": "log",
"logOutput": "rpc",
"preLaunchTask": "integration-test-otp-debug-kms-up"
}, },
{ {
"name": "Launch currently open test", "name": "Launch currently open test",
...@@ -88,7 +114,7 @@ ...@@ -88,7 +114,7 @@
"request": "launch", "request": "launch",
"mode": "auto", "mode": "auto",
"program": "${file}" "program": "${file}"
}, }
], ],
"compounds": [ "compounds": [
{ {
......
...@@ -2,14 +2,19 @@ ...@@ -2,14 +2,19 @@
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
{ {
"label": "integration-test-debug-kms-up", "label": "integration-test-aes-debug-kms-up",
"command": "make integration-test-debug-compose-up", "command": "make integration-test-aes-debug-compose-up",
"type": "shell", "type": "shell"
},
{
"label": "integration-test-otp-debug-kms-up",
"command": "make integration-test-otp-debug-compose-up",
"type": "shell"
}, },
{ {
"label": "compose-debug-up", "label": "compose-debug-up",
"command": "make compose-debug-up", "command": "make compose-debug-up",
"type": "shell", "type": "shell"
} }
] ]
} }
...@@ -101,7 +101,9 @@ compose-debug-up: generate-gokms-certs build-images install-gosdnc ...@@ -101,7 +101,9 @@ compose-debug-up: generate-gokms-certs build-images install-gosdnc
compose-debug-down: compose-debug-down:
docker compose -f docker-compose.yml -f docker-compose.override.debug.yml down docker compose -f docker-compose.yml -f docker-compose.override.debug.yml down
integration-test: install-gosdnc generate-integration-test-certs build-images integration-test: integration-test-aes integration-test-otp
integration-test-aes: install-gosdnc generate-integration-test-certs build-images
docker compose -f integration-tests/docker-compose.yml down docker compose -f integration-tests/docker-compose.yml down
docker compose -f integration-tests/docker-compose.yml up -d docker compose -f integration-tests/docker-compose.yml up -d
echo "Will sleep for the quantumlayers to get ready" echo "Will sleep for the quantumlayers to get ready"
...@@ -109,13 +111,28 @@ integration-test: install-gosdnc generate-integration-test-certs build-images ...@@ -109,13 +111,28 @@ integration-test: install-gosdnc generate-integration-test-certs build-images
go test -p 1 -count=1 -v ./integration-tests/code/* go test -p 1 -count=1 -v ./integration-tests/code/*
docker compose -f integration-tests/docker-compose.yml down docker compose -f integration-tests/docker-compose.yml down
integration-test-debug-compose-up: generate-integration-test-certs build-images install-gosdnc integration-test-aes-debug-compose-up: generate-integration-test-certs build-images install-gosdnc
docker compose -f integration-tests/docker-compose.yml -f integration-tests/docker-compose.override.debug.yml down docker compose -f integration-tests/docker-compose.yml -f integration-tests/docker-compose.override.debug.yml down
docker compose -f integration-tests/docker-compose.yml -f integration-tests/docker-compose.override.debug.yml up -d docker compose -f integration-tests/docker-compose.yml -f integration-tests/docker-compose.override.debug.yml up -d
integration-test-debug-compose-down: integration-test-aes-debug-compose-down:
docker compose -f integration-tests/docker-compose.yml -f integration-tests/docker-compose.override.debug.yml down docker compose -f integration-tests/docker-compose.yml -f integration-tests/docker-compose.override.debug.yml down
integration-test-otp: install-gosdnc generate-integration-test-certs build-images
docker compose -f integration-tests/docker-compose-otp.yml down
docker compose -f integration-tests/docker-compose-otp.yml up -d
echo "Will sleep for the quantumlayers to get ready"
sleep 45
go test -p 1 -count=1 -v ./integration-tests/code/*
docker compose -f integration-tests/docker-compose-otp.yml down
integration-test-otp-debug-compose-up: generate-integration-test-certs build-images install-gosdnc
docker compose -f integration-tests/docker-compose-otp.yml -f integration-tests/docker-compose.override.debug.yml down
docker compose -f integration-tests/docker-compose-otp.yml -f integration-tests/docker-compose.override.debug.yml up -d
integration-test-otp-debug-compose-down:
docker compose -f integration-tests/docker-compose-otp.yml -f integration-tests/docker-compose.override.debug.yml down
generate-certs: generate-root-ca generate-gokms-certs generate-integration-test-certs generate-certs: generate-root-ca generate-gokms-certs generate-integration-test-certs
generate-root-ca: pre generate-root-ca: pre
......
...@@ -29,4 +29,4 @@ $GOSDNC_PATH mne create --address 172.100.20.12:7030 --name kms03 --password adm ...@@ -29,4 +29,4 @@ $GOSDNC_PATH mne create --address 172.100.20.12:7030 --name kms03 --password adm
$GOSDNC_PATH mne create --address 172.100.20.13:7030 --name kms04 --password admin --plugin-id $KMS_PLUGIN --username admin --uuid 968fd594-b0e7-41f0-ba4b-de259047a933 $GOSDNC_PATH mne create --address 172.100.20.13:7030 --name kms04 --password admin --plugin-id $KMS_PLUGIN --username admin --uuid 968fd594-b0e7-41f0-ba4b-de259047a933
## Add additional user for an app ## Add additional user for an app
$GOSDNC_PATH userCreate --u app --p TestApp --r app $GOSDNC_PATH user create --u app --p TestApp --r app
...@@ -20,6 +20,52 @@ const ( ...@@ -20,6 +20,52 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
type CryptoAlgorithm int32
const (
CryptoAlgorithm_AES_256_GCM CryptoAlgorithm = 0
CryptoAlgorithm_OTP CryptoAlgorithm = 1
)
// Enum value maps for CryptoAlgorithm.
var (
CryptoAlgorithm_name = map[int32]string{
0: "AES_256_GCM",
1: "OTP",
}
CryptoAlgorithm_value = map[string]int32{
"AES_256_GCM": 0,
"OTP": 1,
}
)
func (x CryptoAlgorithm) Enum() *CryptoAlgorithm {
p := new(CryptoAlgorithm)
*p = x
return p
}
func (x CryptoAlgorithm) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CryptoAlgorithm) Descriptor() protoreflect.EnumDescriptor {
return file_kmsintercom_kmsintercom_proto_enumTypes[0].Descriptor()
}
func (CryptoAlgorithm) Type() protoreflect.EnumType {
return &file_kmsintercom_kmsintercom_proto_enumTypes[0]
}
func (x CryptoAlgorithm) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use CryptoAlgorithm.Descriptor instead.
func (CryptoAlgorithm) EnumDescriptor() ([]byte, []int) {
return file_kmsintercom_kmsintercom_proto_rawDescGZIP(), []int{0}
}
// Capabilities // Capabilities
// The request message containing the requesting kms' name. // The request message containing the requesting kms' name.
type InterComCapabilitiesRequest struct { type InterComCapabilitiesRequest struct {
...@@ -493,10 +539,11 @@ type KeyForwardingRequest struct { ...@@ -493,10 +539,11 @@ type KeyForwardingRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
PathId string `protobuf:"bytes,2,opt,name=pathId,proto3" json:"pathId,omitempty"` PathId string `protobuf:"bytes,2,opt,name=pathId,proto3" json:"pathId,omitempty"`
ProcessId string `protobuf:"bytes,3,opt,name=processId,proto3" json:"processId,omitempty"` ProcessId string `protobuf:"bytes,3,opt,name=processId,proto3" json:"processId,omitempty"`
Key *Key `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` CryptoAlgorithm CryptoAlgorithm `protobuf:"varint,4,opt,name=cryptoAlgorithm,proto3,enum=kmsintercom.CryptoAlgorithm" json:"cryptoAlgorithm,omitempty"`
Key *Key `protobuf:"bytes,5,opt,name=key,proto3" json:"key,omitempty"`
} }
func (x *KeyForwardingRequest) Reset() { func (x *KeyForwardingRequest) Reset() {
...@@ -552,6 +599,13 @@ func (x *KeyForwardingRequest) GetProcessId() string { ...@@ -552,6 +599,13 @@ func (x *KeyForwardingRequest) GetProcessId() string {
return "" return ""
} }
func (x *KeyForwardingRequest) GetCryptoAlgorithm() CryptoAlgorithm {
if x != nil {
return x.CryptoAlgorithm
}
return CryptoAlgorithm_AES_256_GCM
}
func (x *KeyForwardingRequest) GetKey() *Key { func (x *KeyForwardingRequest) GetKey() *Key {
if x != nil { if x != nil {
return x.Key return x.Key
...@@ -839,11 +893,12 @@ type KeyDeliveryRequest struct { ...@@ -839,11 +893,12 @@ type KeyDeliveryRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
KmsId string `protobuf:"bytes,3,opt,name=kmsId,proto3" json:"kmsId,omitempty"` KmsId string `protobuf:"bytes,3,opt,name=kmsId,proto3" json:"kmsId,omitempty"`
KeyId string `protobuf:"bytes,4,opt,name=keyId,proto3" json:"keyId,omitempty"` KeyId string `protobuf:"bytes,4,opt,name=keyId,proto3" json:"keyId,omitempty"`
RequestId string `protobuf:"bytes,5,opt,name=requestId,proto3" json:"requestId,omitempty"` RequestId string `protobuf:"bytes,5,opt,name=requestId,proto3" json:"requestId,omitempty"`
Keys []*Key `protobuf:"bytes,6,rep,name=keys,proto3" json:"keys,omitempty"` CryptoAlgorithm CryptoAlgorithm `protobuf:"varint,6,opt,name=cryptoAlgorithm,proto3,enum=kmsintercom.CryptoAlgorithm" json:"cryptoAlgorithm,omitempty"`
Keys []*Key `protobuf:"bytes,7,rep,name=keys,proto3" json:"keys,omitempty"`
} }
func (x *KeyDeliveryRequest) Reset() { func (x *KeyDeliveryRequest) Reset() {
...@@ -906,6 +961,13 @@ func (x *KeyDeliveryRequest) GetRequestId() string { ...@@ -906,6 +961,13 @@ func (x *KeyDeliveryRequest) GetRequestId() string {
return "" return ""
} }
func (x *KeyDeliveryRequest) GetCryptoAlgorithm() CryptoAlgorithm {
if x != nil {
return x.CryptoAlgorithm
}
return CryptoAlgorithm_AES_256_GCM
}
func (x *KeyDeliveryRequest) GetKeys() []*Key { func (x *KeyDeliveryRequest) GetKeys() []*Key {
if x != nil { if x != nil {
return x.Keys return x.Keys
...@@ -1077,50 +1139,59 @@ var file_kmsintercom_kmsintercom_proto_rawDesc = []byte{ ...@@ -1077,50 +1139,59 @@ var file_kmsintercom_kmsintercom_proto_rawDesc = []byte{
0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22,
0x8e, 0x01, 0x0a, 0x14, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0xd6, 0x01, 0x0a, 0x14, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e,
0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1c,
0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0f,
0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18,
0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72,
0x22, 0x35, 0x0a, 0x15, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69,
0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x74, 0x68, 0x6d, 0x52, 0x0f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41, 0x6c, 0x67, 0x6f, 0x72,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x41, 0x63, 0x6b, 0x4b, 0x0b, 0x32, 0x10, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e,
0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x35, 0x0a, 0x15, 0x4b, 0x65, 0x79, 0x46,
0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22,
0x09, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x83, 0x01, 0x0a, 0x17, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72,
0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x74,
0x18, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49,
0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12,
0x14, 0x0a, 0x05, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x4b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x18, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46,
0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22,
0x66, 0x0a, 0x18, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x6d, 0x73,
0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x6d, 0x73, 0x49, 0x64, 0x12,
0x16, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
0x06, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x19, 0x4b, 0x65, 0x79, 0x49, 0x64,
0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x22, 0xea, 0x01, 0x0a, 0x12, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65,
0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x66, 0x0a, 0x18, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x6d, 0x73, 0x49, 0x64,
0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x6d, 0x73, 0x49, 0x64, 0x12, 0x14, 0x0a,
0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64,
0x70, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x6d, 0x73, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49,
0x52, 0x05, 0x6b, 0x6d, 0x73, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x64, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41, 0x6c, 0x67, 0x6f, 0x72,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x22, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6b, 0x6d, 0x73,
0x39, 0x0a, 0x19, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x0f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x24, 0x0a, 0x04, 0x6b, 0x65, 0x79,
0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x12, 0x4b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74,
0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
0x14, 0x0a, 0x05, 0x6b, 0x6d, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x6b, 0x6d, 0x73, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x6b, 0x65, 0x79,
0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74,
0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22,
0x33, 0x0a, 0x13, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x33, 0x0a, 0x13, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
...@@ -1129,70 +1200,73 @@ var file_kmsintercom_kmsintercom_proto_rawDesc = []byte{ ...@@ -1129,70 +1200,73 @@ var file_kmsintercom_kmsintercom_proto_rawDesc = []byte{
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e,
0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63,
0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x32, 0xb9, 0x06, 0x0a, 0x09, 0x4b, 0x6d, 0x73, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x6b, 0x65, 0x79, 0x2a, 0x2b, 0x0a, 0x0f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x41, 0x6c, 0x67,
0x72, 0x12, 0x6a, 0x0a, 0x14, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x43, 0x61, 0x70, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35,
0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x54, 0x50, 0x10, 0x01,
0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x32, 0xb9, 0x06, 0x0a, 0x09, 0x4b, 0x6d, 0x73, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x72, 0x12, 0x6a,
0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x0a, 0x14, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69,
0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65,
0x6d, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x43, 0x61, 0x70,
0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x0b, 0x53, 0x79, 0x6e, 0x63, 0x51, 0x6b, 0x64, 0x42, 0x75, 0x6c, 0x6b, 0x12, 0x1f, 0x2e, 0x6b, 0x1a, 0x26, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49,
0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x51, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
0x6b, 0x64, 0x42, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0b, 0x53, 0x79,
0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x6e, 0x63, 0x51, 0x6b, 0x64, 0x42, 0x75, 0x6c, 0x6b, 0x12, 0x1f, 0x2e, 0x6b, 0x6d, 0x73, 0x69,
0x51, 0x6b, 0x64, 0x42, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x51, 0x6b, 0x64, 0x42,
0x00, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x46, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6b, 0x6d, 0x73,
0x6f, 0x72, 0x42, 0x75, 0x6c, 0x6b, 0x12, 0x25, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x51, 0x6b, 0x64,
0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x46, 0x42, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64,
0x6f, 0x72, 0x42, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x42,
0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x75, 0x6c, 0x6b, 0x12, 0x25, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f,
0x4b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x73, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x42,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x1f, 0x49, 0x6e, 0x74, 0x65, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6b, 0x6d, 0x73,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79,
0x49, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x6c, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x1f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f,
0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x4e, 0x65, 0x67,
0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x54,
0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x4e, 0x65, 0x67, 0x6f, 0x74,
0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e,
0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49, 0x6e, 0x74, 0x65,
0x72, 0x43, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x72, 0x43, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79,
0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6b, 0x6d, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77,
0x6f, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x4e, 0x65, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65,
0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69,
0x1a, 0x34, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x49, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6b, 0x6d, 0x73, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
0x4b, 0x65, 0x79, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x46,
0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x6b, 0x6d, 0x73, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61,
0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6b, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x61, 0x0a, 0x10, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64,
0x69, 0x6e, 0x67, 0x12, 0x24, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f,
0x6d, 0x2e, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69,
0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6b, 0x6d, 0x73, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f,
0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x12, 0x61, 0x0a, 0x10, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x11, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66,
0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74,
0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66,
0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6b, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x41, 0x63, 0x6b, 0x4b, 0x65, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79,
0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x11, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x44,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x6b, 0x6d, 0x73, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e,
0x74, 0x1a, 0x26, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65,
0x4b, 0x65, 0x79, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xb0, 0x01, 0x0a,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0b, 0x4b, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d,
0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x6b, 0x6d, 0x73, 0x42, 0x10, 0x4b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x50, 0x72, 0x6f,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x69, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68,
0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6b, 0x6d, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x71, 0x75, 0x61,
0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x44, 0x65, 0x6c, 0x6e, 0x74, 0x2f, 0x67, 0x6f, 0x4b, 0x4d, 0x53, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e,
0x69, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74,
0xb0, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0xa2, 0x02, 0x03, 0x4b, 0x58, 0x58, 0xaa, 0x02, 0x0b, 0x4b, 0x6d,
0x63, 0x6f, 0x6d, 0x42, 0x10, 0x4b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0xca, 0x02, 0x0b, 0x4b, 0x6d, 0x73, 0x69,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0xe2, 0x02, 0x17, 0x4b, 0x6d, 0x73, 0x69, 0x6e, 0x74,
0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x71, 0x75, 0x61, 0x6e, 0x74, 0x2f, 0x67, 0x6f, 0x4b, 0x4d, 0x53, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0xea, 0x02, 0x0b, 0x4b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x62,
0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x6b, 0x6d, 0x73, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0xa2, 0x02, 0x03, 0x4b, 0x58, 0x58, 0xaa, 0x02,
0x0b, 0x4b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0xca, 0x02, 0x0b, 0x4b,
0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0xe2, 0x02, 0x17, 0x4b, 0x6d, 0x73,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4b, 0x6d, 0x73, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63,
0x6f, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
...@@ -1207,50 +1281,54 @@ func file_kmsintercom_kmsintercom_proto_rawDescGZIP() []byte { ...@@ -1207,50 +1281,54 @@ func file_kmsintercom_kmsintercom_proto_rawDescGZIP() []byte {
return file_kmsintercom_kmsintercom_proto_rawDescData return file_kmsintercom_kmsintercom_proto_rawDescData
} }
var file_kmsintercom_kmsintercom_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_kmsintercom_kmsintercom_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_kmsintercom_kmsintercom_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_kmsintercom_kmsintercom_proto_goTypes = []any{ var file_kmsintercom_kmsintercom_proto_goTypes = []any{
(*InterComCapabilitiesRequest)(nil), // 0: kmsintercom.InterComCapabilitiesRequest (CryptoAlgorithm)(0), // 0: kmsintercom.CryptoAlgorithm
(*InterComCapabilitiesReply)(nil), // 1: kmsintercom.InterComCapabilitiesReply (*InterComCapabilitiesRequest)(nil), // 1: kmsintercom.InterComCapabilitiesRequest
(*SyncQkdBulkRequest)(nil), // 2: kmsintercom.SyncQkdBulkRequest (*InterComCapabilitiesReply)(nil), // 2: kmsintercom.InterComCapabilitiesReply
(*SyncKeyIdsForBulkRequest)(nil), // 3: kmsintercom.SyncKeyIdsForBulkRequest (*SyncQkdBulkRequest)(nil), // 3: kmsintercom.SyncQkdBulkRequest
(*SyncKeyIdsForBulkResponse)(nil), // 4: kmsintercom.SyncKeyIdsForBulkResponse (*SyncKeyIdsForBulkRequest)(nil), // 4: kmsintercom.SyncKeyIdsForBulkRequest
(*SyncQkdBulkResponse)(nil), // 5: kmsintercom.SyncQkdBulkResponse (*SyncKeyIdsForBulkResponse)(nil), // 5: kmsintercom.SyncKeyIdsForBulkResponse
(*InterComTransportKeyNegotiationRequest)(nil), // 6: kmsintercom.InterComTransportKeyNegotiationRequest (*SyncQkdBulkResponse)(nil), // 6: kmsintercom.SyncQkdBulkResponse
(*InterComTransportKeyNegotiationResponse)(nil), // 7: kmsintercom.InterComTransportKeyNegotiationResponse (*InterComTransportKeyNegotiationRequest)(nil), // 7: kmsintercom.InterComTransportKeyNegotiationRequest
(*KeyForwardingRequest)(nil), // 8: kmsintercom.KeyForwardingRequest (*InterComTransportKeyNegotiationResponse)(nil), // 8: kmsintercom.InterComTransportKeyNegotiationResponse
(*KeyForwardingResponse)(nil), // 9: kmsintercom.KeyForwardingResponse (*KeyForwardingRequest)(nil), // 9: kmsintercom.KeyForwardingRequest
(*AckKeyForwardingRequest)(nil), // 10: kmsintercom.AckKeyForwardingRequest (*KeyForwardingResponse)(nil), // 10: kmsintercom.KeyForwardingResponse
(*AckKeyForwardingResponse)(nil), // 11: kmsintercom.AckKeyForwardingResponse (*AckKeyForwardingRequest)(nil), // 11: kmsintercom.AckKeyForwardingRequest
(*KeyIdNotificationRequest)(nil), // 12: kmsintercom.KeyIdNotificationRequest (*AckKeyForwardingResponse)(nil), // 12: kmsintercom.AckKeyForwardingResponse
(*KeyIdNotificationResponse)(nil), // 13: kmsintercom.KeyIdNotificationResponse (*KeyIdNotificationRequest)(nil), // 13: kmsintercom.KeyIdNotificationRequest
(*KeyDeliveryRequest)(nil), // 14: kmsintercom.KeyDeliveryRequest (*KeyIdNotificationResponse)(nil), // 14: kmsintercom.KeyIdNotificationResponse
(*KeyDeliveryResponse)(nil), // 15: kmsintercom.KeyDeliveryResponse (*KeyDeliveryRequest)(nil), // 15: kmsintercom.KeyDeliveryRequest
(*Key)(nil), // 16: kmsintercom.Key (*KeyDeliveryResponse)(nil), // 16: kmsintercom.KeyDeliveryResponse
(*Key)(nil), // 17: kmsintercom.Key
} }
var file_kmsintercom_kmsintercom_proto_depIdxs = []int32{ var file_kmsintercom_kmsintercom_proto_depIdxs = []int32{
16, // 0: kmsintercom.KeyForwardingRequest.key:type_name -> kmsintercom.Key 0, // 0: kmsintercom.KeyForwardingRequest.cryptoAlgorithm:type_name -> kmsintercom.CryptoAlgorithm
16, // 1: kmsintercom.KeyDeliveryRequest.keys:type_name -> kmsintercom.Key 17, // 1: kmsintercom.KeyForwardingRequest.key:type_name -> kmsintercom.Key
0, // 2: kmsintercom.KmsTalker.InterComCapabilities:input_type -> kmsintercom.InterComCapabilitiesRequest 0, // 2: kmsintercom.KeyDeliveryRequest.cryptoAlgorithm:type_name -> kmsintercom.CryptoAlgorithm
2, // 3: kmsintercom.KmsTalker.SyncQkdBulk:input_type -> kmsintercom.SyncQkdBulkRequest 17, // 3: kmsintercom.KeyDeliveryRequest.keys:type_name -> kmsintercom.Key
3, // 4: kmsintercom.KmsTalker.SyncKeyIdsForBulk:input_type -> kmsintercom.SyncKeyIdsForBulkRequest 1, // 4: kmsintercom.KmsTalker.InterComCapabilities:input_type -> kmsintercom.InterComCapabilitiesRequest
6, // 5: kmsintercom.KmsTalker.InterComTransportKeyNegotiation:input_type -> kmsintercom.InterComTransportKeyNegotiationRequest 3, // 5: kmsintercom.KmsTalker.SyncQkdBulk:input_type -> kmsintercom.SyncQkdBulkRequest
8, // 6: kmsintercom.KmsTalker.KeyForwarding:input_type -> kmsintercom.KeyForwardingRequest 4, // 6: kmsintercom.KmsTalker.SyncKeyIdsForBulk:input_type -> kmsintercom.SyncKeyIdsForBulkRequest
10, // 7: kmsintercom.KmsTalker.AckKeyForwarding:input_type -> kmsintercom.AckKeyForwardingRequest 7, // 7: kmsintercom.KmsTalker.InterComTransportKeyNegotiation:input_type -> kmsintercom.InterComTransportKeyNegotiationRequest
12, // 8: kmsintercom.KmsTalker.KeyIdNotification:input_type -> kmsintercom.KeyIdNotificationRequest 9, // 8: kmsintercom.KmsTalker.KeyForwarding:input_type -> kmsintercom.KeyForwardingRequest
14, // 9: kmsintercom.KmsTalker.KeyDelivery:input_type -> kmsintercom.KeyDeliveryRequest 11, // 9: kmsintercom.KmsTalker.AckKeyForwarding:input_type -> kmsintercom.AckKeyForwardingRequest
1, // 10: kmsintercom.KmsTalker.InterComCapabilities:output_type -> kmsintercom.InterComCapabilitiesReply 13, // 10: kmsintercom.KmsTalker.KeyIdNotification:input_type -> kmsintercom.KeyIdNotificationRequest
5, // 11: kmsintercom.KmsTalker.SyncQkdBulk:output_type -> kmsintercom.SyncQkdBulkResponse 15, // 11: kmsintercom.KmsTalker.KeyDelivery:input_type -> kmsintercom.KeyDeliveryRequest
4, // 12: kmsintercom.KmsTalker.SyncKeyIdsForBulk:output_type -> kmsintercom.SyncKeyIdsForBulkResponse 2, // 12: kmsintercom.KmsTalker.InterComCapabilities:output_type -> kmsintercom.InterComCapabilitiesReply
7, // 13: kmsintercom.KmsTalker.InterComTransportKeyNegotiation:output_type -> kmsintercom.InterComTransportKeyNegotiationResponse 6, // 13: kmsintercom.KmsTalker.SyncQkdBulk:output_type -> kmsintercom.SyncQkdBulkResponse
9, // 14: kmsintercom.KmsTalker.KeyForwarding:output_type -> kmsintercom.KeyForwardingResponse 5, // 14: kmsintercom.KmsTalker.SyncKeyIdsForBulk:output_type -> kmsintercom.SyncKeyIdsForBulkResponse
11, // 15: kmsintercom.KmsTalker.AckKeyForwarding:output_type -> kmsintercom.AckKeyForwardingResponse 8, // 15: kmsintercom.KmsTalker.InterComTransportKeyNegotiation:output_type -> kmsintercom.InterComTransportKeyNegotiationResponse
13, // 16: kmsintercom.KmsTalker.KeyIdNotification:output_type -> kmsintercom.KeyIdNotificationResponse 10, // 16: kmsintercom.KmsTalker.KeyForwarding:output_type -> kmsintercom.KeyForwardingResponse
15, // 17: kmsintercom.KmsTalker.KeyDelivery:output_type -> kmsintercom.KeyDeliveryResponse 12, // 17: kmsintercom.KmsTalker.AckKeyForwarding:output_type -> kmsintercom.AckKeyForwardingResponse
10, // [10:18] is the sub-list for method output_type 14, // 18: kmsintercom.KmsTalker.KeyIdNotification:output_type -> kmsintercom.KeyIdNotificationResponse
2, // [2:10] is the sub-list for method input_type 16, // 19: kmsintercom.KmsTalker.KeyDelivery:output_type -> kmsintercom.KeyDeliveryResponse
2, // [2:2] is the sub-list for extension type_name 12, // [12:20] is the sub-list for method output_type
2, // [2:2] is the sub-list for extension extendee 4, // [4:12] is the sub-list for method input_type
0, // [0:2] is the sub-list for field type_name 4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
} }
func init() { file_kmsintercom_kmsintercom_proto_init() } func init() { file_kmsintercom_kmsintercom_proto_init() }
...@@ -1469,13 +1547,14 @@ func file_kmsintercom_kmsintercom_proto_init() { ...@@ -1469,13 +1547,14 @@ func file_kmsintercom_kmsintercom_proto_init() {
File: protoimpl.DescBuilder{ File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_kmsintercom_kmsintercom_proto_rawDesc, RawDescriptor: file_kmsintercom_kmsintercom_proto_rawDesc,
NumEnums: 0, NumEnums: 1,
NumMessages: 17, NumMessages: 17,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },
GoTypes: file_kmsintercom_kmsintercom_proto_goTypes, GoTypes: file_kmsintercom_kmsintercom_proto_goTypes,
DependencyIndexes: file_kmsintercom_kmsintercom_proto_depIdxs, DependencyIndexes: file_kmsintercom_kmsintercom_proto_depIdxs,
EnumInfos: file_kmsintercom_kmsintercom_proto_enumTypes,
MessageInfos: file_kmsintercom_kmsintercom_proto_msgTypes, MessageInfos: file_kmsintercom_kmsintercom_proto_msgTypes,
}.Build() }.Build()
File_kmsintercom_kmsintercom_proto = out.File File_kmsintercom_kmsintercom_proto = out.File
......
...@@ -4,111 +4,118 @@ package kmsintercom; ...@@ -4,111 +4,118 @@ package kmsintercom;
// should be renamed to InterCom or KMSInterCom // should be renamed to InterCom or KMSInterCom
service KmsTalker { service KmsTalker {
rpc InterComCapabilities (InterComCapabilitiesRequest) returns (InterComCapabilitiesReply) {} rpc InterComCapabilities(InterComCapabilitiesRequest) returns (InterComCapabilitiesReply) {}
rpc SyncQkdBulk(SyncQkdBulkRequest) returns (SyncQkdBulkResponse) {} rpc SyncQkdBulk(SyncQkdBulkRequest) returns (SyncQkdBulkResponse) {}
rpc SyncKeyIdsForBulk(SyncKeyIdsForBulkRequest) returns (SyncKeyIdsForBulkResponse) {} rpc SyncKeyIdsForBulk(SyncKeyIdsForBulkRequest) returns (SyncKeyIdsForBulkResponse) {}
rpc InterComTransportKeyNegotiation(InterComTransportKeyNegotiationRequest) returns (InterComTransportKeyNegotiationResponse) {} rpc InterComTransportKeyNegotiation(InterComTransportKeyNegotiationRequest) returns (InterComTransportKeyNegotiationResponse) {}
rpc KeyForwarding(KeyForwardingRequest) returns (KeyForwardingResponse) {} rpc KeyForwarding(KeyForwardingRequest) returns (KeyForwardingResponse) {}
rpc AckKeyForwarding(AckKeyForwardingRequest) returns (AckKeyForwardingResponse) {} rpc AckKeyForwarding(AckKeyForwardingRequest) returns (AckKeyForwardingResponse) {}
// KeyIDNotification is used for ETSI GS QKD 014 // KeyIDNotification is used for ETSI GS QKD 014
rpc KeyIdNotification(KeyIdNotificationRequest) returns (KeyIdNotificationResponse) {} rpc KeyIdNotification(KeyIdNotificationRequest) returns (KeyIdNotificationResponse) {}
rpc KeyDelivery(KeyDeliveryRequest) returns (KeyDeliveryResponse) {} rpc KeyDelivery(KeyDeliveryRequest) returns (KeyDeliveryResponse) {}
} }
// Capabilities // Capabilities
// The request message containing the requesting kms' name. // The request message containing the requesting kms' name.
message InterComCapabilitiesRequest { message InterComCapabilitiesRequest {
int64 timestamp = 1; int64 timestamp = 1;
string kmsId = 2; string kmsId = 2;
bool resetKeyStore = 3; bool resetKeyStore = 3;
} }
// The response message containing the replying kms' name. // The response message containing the replying kms' name.
message InterComCapabilitiesReply { message InterComCapabilitiesReply {
int64 timestamp = 1; int64 timestamp = 1;
string peerKmsName= 2; string peerKmsName = 2;
} }
message SyncQkdBulkRequest { message SyncQkdBulkRequest {
int64 timestamp = 1; int64 timestamp = 1;
string kmsId = 2; string kmsId = 2;
repeated int64 bulkId = 3; repeated int64 bulkId = 3;
//string bulkHash = 4; //string bulkHash = 4;
} }
message SyncKeyIdsForBulkRequest { message SyncKeyIdsForBulkRequest {
int64 timestamp = 1; int64 timestamp = 1;
string kmsId = 2; string kmsId = 2;
int64 bulkId = 3; int64 bulkId = 3;
repeated string keyId = 4; repeated string keyId = 4;
} }
message SyncKeyIdsForBulkResponse { message SyncKeyIdsForBulkResponse {
int64 timestamp = 1; int64 timestamp = 1;
} }
message SyncQkdBulkResponse { message SyncQkdBulkResponse {
int64 timestamp = 1; int64 timestamp = 1;
int64 bulkId = 2; int64 bulkId = 2;
} }
// Beim aushandeln // Beim aushandeln
message InterComTransportKeyNegotiationRequest { message InterComTransportKeyNegotiationRequest {
int64 timestamp = 1; int64 timestamp = 1;
string pathID = 2; string pathID = 2;
string keyToUse = 3; string keyToUse = 3;
} }
message InterComTransportKeyNegotiationResponse { message InterComTransportKeyNegotiationResponse {
int64 timestamp = 1; int64 timestamp = 1;
} }
message KeyForwardingRequest { message KeyForwardingRequest {
int64 timestamp = 1; int64 timestamp = 1;
string pathId = 2; string pathId = 2;
string processId = 3; string processId = 3;
Key key = 4; CryptoAlgorithm cryptoAlgorithm = 4;
Key key = 5;
} }
message KeyForwardingResponse { message KeyForwardingResponse {
int64 timestamp = 1; int64 timestamp = 1;
} }
message AckKeyForwardingRequest { message AckKeyForwardingRequest {
int64 timestamp = 1; int64 timestamp = 1;
string pathId = 2; string pathId = 2;
string processId = 3; string processId = 3;
string KeyId = 4; string KeyId = 4;
} }
message AckKeyForwardingResponse { message AckKeyForwardingResponse {
int64 timestamp = 1; int64 timestamp = 1;
} }
message KeyIdNotificationRequest { message KeyIdNotificationRequest {
int64 timestamp = 1; int64 timestamp = 1;
string kmsId = 2; string kmsId = 2;
repeated string keyIds = 3; repeated string keyIds = 3;
} }
message KeyIdNotificationResponse { message KeyIdNotificationResponse {
int64 timestamp = 1; int64 timestamp = 1;
} }
message KeyDeliveryRequest { message KeyDeliveryRequest {
int64 timestamp = 1; int64 timestamp = 1;
string kmsId = 3; string kmsId = 3;
string keyId = 4; string keyId = 4;
string requestId = 5; string requestId = 5;
repeated Key keys = 6; CryptoAlgorithm cryptoAlgorithm = 6;
repeated Key keys = 7;
} }
message KeyDeliveryResponse { message KeyDeliveryResponse {
int64 timestamp = 1; int64 timestamp = 1;
} }
message Key { message Key {
string id = 1; string id = 1;
string nonce = 2; string nonce = 2;
string key = 3; string key = 3;
}
enum CryptoAlgorithm {
AES_256_GCM = 0;
OTP = 1;
} }
...@@ -13,6 +13,7 @@ type Config struct { ...@@ -13,6 +13,7 @@ type Config struct {
QuantumAddr string `yaml:"QuantumAddr"` QuantumAddr string `yaml:"QuantumAddr"`
AKMS AKMS `yaml:"AKMS"` AKMS AKMS `yaml:"AKMS"`
GnmiBindAddress string `yaml:"GnmiBindAddress"` GnmiBindAddress string `yaml:"GnmiBindAddress"`
KSACryptoAlgorithm string `yaml:"KSACryptoAlgorithm"`
KmsTLS TLSConfig `yaml:"KmsTLS"` KmsTLS TLSConfig `yaml:"KmsTLS"`
Peers []Peer `yaml:"Peers"` Peers []Peer `yaml:"Peers"`
GnmiTLS TLSConfig `yaml:"GnmiTLS"` GnmiTLS TLSConfig `yaml:"GnmiTLS"`
...@@ -31,6 +32,7 @@ type AKMS struct { ...@@ -31,6 +32,7 @@ type AKMS struct {
type Peer struct { type Peer struct {
PeerId string `yaml:"PeerId"` PeerId string `yaml:"PeerId"`
PeerInterComAddr string `yaml:"PeerInterComAddr"` PeerInterComAddr string `yaml:"PeerInterComAddr"`
CryptoAlgorithm string `yaml:"CryptoAlgorithm"`
Type string `yaml:"Type"` Type string `yaml:"Type"`
QuantumModule QuantumModule `yaml:"QuantumModule"` QuantumModule QuantumModule `yaml:"QuantumModule"`
} }
......
package crypto
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"io"
)
// AES is an implementation of the CryptoAlgorithm interface.
// AES provides the methods required for performing symmetric key encryption
// and decryption using the AES algorithm.
//
// For this the aes package from the Go standard library is used.
type AES struct {
name string
}
// NewAES creates a new instance of a AES struct.
func NewAES(name string) *AES {
return &AES{
name: name,
}
}
// Encrypt encrypts the plaintext using a provided key.
// The key should have a length of 16, 24 or 32 bytes to select AES-128,
// AES-192 or AES-256.
// The method returns the nonce, the encrypted output and an error if something
// went wrong.
func (a *AES) Encrypt(plaintext []byte, key []byte) ([]byte, []byte, error) {
// create a new cipher block from the key
c, err := aes.NewCipher(key)
if err != nil {
return nil, nil, err
}
// create a new block cipher wrapped in GCM with default nonce (12
// bytes) and tag size (16 bytes).
gcm, err := cipher.NewGCM(c)
if err != nil {
return nil, nil, err
}
// generate a random nonce of nonce size (12 bytes)
nonce := make([]byte, gcm.NonceSize())
if _, err = io.ReadFull(rand.Reader, nonce); err != nil {
return nil, nil, err
}
// Encrypt the plaintext using AES-GCM
// Destination is set to nil, therefore seal only contains the
// ciphertext with the tag appended.
seal := gcm.Seal(nil, nonce, plaintext, nil)
return nonce, seal, nil
}
// Decrypt decrypts the ciphertext using the provided key and nonce.
// The key should have a length of 16, 24 or 32 bytes to select AES-128,
// AES-192 or AES-256.
// The method returns the decrypted input.
func (a *AES) Decrypt(nonce, ciphertext []byte, key []byte) ([]byte, error) {
// create a new cipher block from the key
c, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
// create a new block cipher wrapped in GCM with default nonce (12
// bytes) and tag size (16 bytes).
gcm, err := cipher.NewGCM(c)
if err != nil {
return nil, err
}
// Decrypt the ciphertext using AES-GCM
return gcm.Open(nil, nonce, ciphertext, nil)
}
func (a *AES) Name() string {
return a.name
}
...@@ -49,7 +49,7 @@ func TestCrypto_AES_Encrypt(t *testing.T) { ...@@ -49,7 +49,7 @@ func TestCrypto_AES_Encrypt(t *testing.T) {
t.Run(name, func(t *testing.T) { t.Run(name, func(t *testing.T) {
t.Parallel() t.Parallel()
aes := NewAES() aes := NewAES("AES-256-GCM")
nonce, cipherText, err := aes.Encrypt(test.plaintext, test.key) nonce, cipherText, err := aes.Encrypt(test.plaintext, test.key)
if test.error { if test.error {
assert.Error(t, err) assert.Error(t, err)
...@@ -175,7 +175,7 @@ func TestCrypto_AES_Decrypt(t *testing.T) { ...@@ -175,7 +175,7 @@ func TestCrypto_AES_Decrypt(t *testing.T) {
t.Run(name, func(t *testing.T) { t.Run(name, func(t *testing.T) {
t.Parallel() t.Parallel()
aes := NewAES() aes := NewAES("AES-256-GCM")
plainText, err := aes.Decrypt(test.nonce, test.cipherText, test.key) plainText, err := aes.Decrypt(test.nonce, test.cipherText, test.key)
if test.error { if test.error {
assert.Error(t, err) assert.Error(t, err)
...@@ -191,7 +191,7 @@ func TestCrypto_AES_EncryptAndDecryptPlaintext(t *testing.T) { ...@@ -191,7 +191,7 @@ func TestCrypto_AES_EncryptAndDecryptPlaintext(t *testing.T) {
secret := []byte("this is a secret") secret := []byte("this is a secret")
key := []byte{0xfe, 0x34, 0x64, 0x9e, 0xdf, 0x1a, 0xf1, 0xc, 0xb7, 0x28, 0xee, 0x98, 0xe7, 0x7, 0x40, 0x8f, 0x3b, 0x8, 0x9a, 0xad, 0x45, 0x7a, 0x21, 0xe8, 0x84, 0x79, 0xc5, 0x1b, 0x25, 0x13, 0xa2, 0x3c} key := []byte{0xfe, 0x34, 0x64, 0x9e, 0xdf, 0x1a, 0xf1, 0xc, 0xb7, 0x28, 0xee, 0x98, 0xe7, 0x7, 0x40, 0x8f, 0x3b, 0x8, 0x9a, 0xad, 0x45, 0x7a, 0x21, 0xe8, 0x84, 0x79, 0xc5, 0x1b, 0x25, 0x13, 0xa2, 0x3c}
aes := NewAES() aes := NewAES("AES-256-GCM")
// encrypt the secret with encrypt method // encrypt the secret with encrypt method
nonce, encryptedSecret, err := aes.Encrypt(secret, key) nonce, encryptedSecret, err := aes.Encrypt(secret, key)
......
package crypto package crypto
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"io"
)
// CryptoAlgorithm is an interface that provides the methods required for // CryptoAlgorithm is an interface that provides the methods required for
// encryption and decryption of data. // encryption and decryption of data.
// Currently only AES is supported, but this could be extended to support other // Currently only AES is supported, but this could be extended to support other
...@@ -14,71 +7,5 @@ import ( ...@@ -14,71 +7,5 @@ import (
type CryptoAlgorithm interface { type CryptoAlgorithm interface {
Encrypt(plaintext []byte, key []byte) ([]byte, []byte, error) Encrypt(plaintext []byte, key []byte) ([]byte, []byte, error)
Decrypt(nonce, ciphertext []byte, key []byte) ([]byte, error) Decrypt(nonce, ciphertext []byte, key []byte) ([]byte, error)
} Name() string
// AES is an implementation of the CryptoAlgorithm interface.
// AES provides the methods required for performing symmetric key encryption
// and decryption using the AES algorithm.
//
// For this the aes package from the Go standard library is used.
type AES struct{}
// NewAES creates a new instance of a AES struct.
func NewAES() *AES {
return &AES{}
}
// Encrypt encrypts the plaintext using a provided key.
// The key should have a length of 16, 24 or 32 bytes to select AES-128,
// AES-192 or AES-256.
// The method returns the nonce, the encrypted output and an error if something
// went wrong.
func (a *AES) Encrypt(plaintext []byte, key []byte) ([]byte, []byte, error) {
// create a new cipher block from the key
c, err := aes.NewCipher(key)
if err != nil {
return nil, nil, err
}
// create a new block cipher wrapped in GCM with default nonce (12
// bytes) and tag size (16 bytes).
gcm, err := cipher.NewGCM(c)
if err != nil {
return nil, nil, err
}
// generate a random nonce of nonce size (12 bytes)
nonce := make([]byte, gcm.NonceSize())
if _, err = io.ReadFull(rand.Reader, nonce); err != nil {
return nil, nil, err
}
// Encrypt the plaintext using AES-GCM
// Destination is set to nil, therefore seal only contains the
// ciphertext with the tag appended.
seal := gcm.Seal(nil, nonce, plaintext, nil)
return nonce, seal, nil
}
// Decrypt decrypts the ciphertext using the provided key and nonce.
// The key should have a length of 16, 24 or 32 bytes to select AES-128,
// AES-192 or AES-256.
// The method returns the decrypted input.
func (a *AES) Decrypt(nonce, ciphertext []byte, key []byte) ([]byte, error) {
// create a new cipher block from the key
c, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
// create a new block cipher wrapped in GCM with default nonce (12
// bytes) and tag size (16 bytes).
gcm, err := cipher.NewGCM(c)
if err != nil {
return nil, err
}
// Decrypt the ciphertext using AES-GCM
return gcm.Open(nil, nonce, ciphertext, nil)
} }
package crypto
import "fmt"
type OTP struct {
name string
}
func NewOTP(name string) *OTP {
return &OTP{
name: name,
}
}
func (o *OTP) Encrypt(plaintext []byte, key []byte) ([]byte, []byte, error) {
plainTextLen := len(plaintext)
keyLen := len(key)
if plainTextLen != keyLen {
return nil, nil, fmt.Errorf("For OTP the length of plaintext and key must not differ. Length of plaintext: %d, length of key: %d", plainTextLen, keyLen)
}
ciphertext := make([]byte, plainTextLen)
for i := range ciphertext {
ciphertext[i] = plaintext[i] ^ key[i]
}
return nil, ciphertext, nil
}
func (o *OTP) Decrypt(nonce, ciphertext []byte, key []byte) ([]byte, error) {
cipherTextLen := len(ciphertext)
keyLen := len(key)
if cipherTextLen != keyLen {
return nil, fmt.Errorf("For OTP the length of ciphertext and key must not differ. Length of ciphertext: %d, length of key: %d", cipherTextLen, keyLen)
}
plaintext := make([]byte, cipherTextLen)
for i := range plaintext {
plaintext[i] = ciphertext[i] ^ key[i]
}
return plaintext, nil
}
func (o *OTP) Name() string {
return o.name
}
package crypto
import (
"crypto/rand"
"testing"
"github.com/stretchr/testify/assert"
)
// TestCrypto_OTP tests if a byte array is XOR'ed the proper way.
func TestCrypto_OTP_XOR(t *testing.T) {
testByteArray := []byte{0xF}
testByteArray2 := []byte{0xF0}
resultByteArray := make([]byte, len(testByteArray))
for i := range testByteArray {
resultByteArray[i] = testByteArray[i] ^ testByteArray2[i]
}
assert.Equal(t, resultByteArray, []byte{0xFF})
}
func TestCrypto_OTP_EncryptAndDecryptPlaintext(t *testing.T) {
secret := []byte("this is a secret")
key := make([]byte, len(secret))
_, err := rand.Read(key)
assert.NoError(t, err)
otp := NewOTP("OTP")
// encrypt the secret with encrypt method
_, encryptedSecret, err := otp.Encrypt(secret, key)
assert.NoError(t, err)
// decrypt the encryptedSecret with decrypt method
decryptedSecret, err := otp.Decrypt(nil, encryptedSecret, key)
assert.NoError(t, err)
assert.Equal(t, secret, decryptedSecret)
}
...@@ -3,6 +3,7 @@ package crypto ...@@ -3,6 +3,7 @@ package crypto
import ( import (
"crypto/rand" "crypto/rand"
"encoding/base64" "encoding/base64"
"fmt"
"github.com/google/uuid" "github.com/google/uuid"
) )
...@@ -46,3 +47,14 @@ func Random256BitKey() (*Key, error) { ...@@ -46,3 +47,14 @@ func Random256BitKey() (*Key, error) {
KeyAsBase64: keyAsBase64String, KeyAsBase64: keyAsBase64String,
}, nil }, nil
} }
func GetCryptoAlgorithmByName(cryptoAlgorithmName string) (CryptoAlgorithm, error) {
switch cryptoAlgorithmName {
case "AES_256_GCM":
return NewAES(cryptoAlgorithmName), nil
case "OTP":
return NewOTP(cryptoAlgorithmName), nil
default:
return nil, fmt.Errorf("The provided crypto algorithm name: %s is not supported.", cryptoAlgorithmName)
}
}
...@@ -85,8 +85,9 @@ type KMS struct { ...@@ -85,8 +85,9 @@ type KMS struct {
ckmsAkmsClient *akmsInterfaceClient.CkmsAkmsClient ckmsAkmsClient *akmsInterfaceClient.CkmsAkmsClient
ckmsAkmsServer *akmsInterfaceServer.AKMSReceiverServer ckmsAkmsServer *akmsInterfaceServer.AKMSReceiverServer
// ETSI14 Server things // ETSI14 Server things
etsi14Server *etsi14Server.ETSI14RESTService etsi14Server *etsi14Server.ETSI14RESTService
keyStoreChannel chan []crypto.KSAKey keyStoreChannel chan []crypto.KSAKey
ksaCryptoAlgorithm crypto.CryptoAlgorithm
} }
// Will keep information about the quantum elements that this EKMS is talking to // Will keep information about the quantum elements that this EKMS is talking to
...@@ -149,6 +150,13 @@ func NewKMS(kmsUUID uuid.UUID, logOutput io.Writer, logLevel log.Level, logInJso ...@@ -149,6 +150,13 @@ func NewKMS(kmsUUID uuid.UUID, logOutput io.Writer, logLevel log.Level, logInJso
createdKMS.supportedKeyLengths[BitKeyLen256] = true createdKMS.supportedKeyLengths[BitKeyLen256] = true
// initialize KSA crypto algorithm
createdKMS.ksaCryptoAlgorithm, err = crypto.GetCryptoAlgorithmByName(config.KSACryptoAlgorithm)
if err != nil {
log.Info("No crypto algorithm provided, or not supported -> using default.")
createdKMS.ksaCryptoAlgorithm = crypto.NewAES("AES_256_GCM")
}
// start the inter communication gRPC server // start the inter communication gRPC server
go createdKMS.startGRPC() go createdKMS.startGRPC()
...@@ -235,7 +243,14 @@ func (kms *KMS) initializePeers(config *config.Config) error { ...@@ -235,7 +243,14 @@ func (kms *KMS) initializePeers(config *config.Config) error {
client.KmsTalkerClient = pbIC.NewKmsTalkerClient(newPeerConn) client.KmsTalkerClient = pbIC.NewKmsTalkerClient(newPeerConn)
} }
_, err = kms.AddPeer(peer.PeerId, peer.PeerInterComAddr, qm, client) cryptoAlgorithm, err := crypto.GetCryptoAlgorithmByName(peer.CryptoAlgorithm)
if err != nil {
log.Info("No crypto algorithm provided, or not supported -> using default.")
cryptoAlgorithm = crypto.NewAES("AES_256_GCM")
}
log.Infof("Using %s as crypto algorithm", cryptoAlgorithm.Name())
_, err = kms.AddPeer(peer.PeerId, peer.PeerInterComAddr, qm, client, cryptoAlgorithm)
if err != nil { if err != nil {
log.Fatalf("Failed to create a peer: %s", err) log.Fatalf("Failed to create a peer: %s", err)
return nil return nil
...@@ -300,14 +315,14 @@ func (kms *KMS) AddQuantumElement(qm peers.QuantumModule) error { ...@@ -300,14 +315,14 @@ func (kms *KMS) AddQuantumElement(qm peers.QuantumModule) error {
return nil return nil
} }
func (kms *KMS) AddPeer(peerKmsId string, kmsPeerSocket string, servingQLE peers.QuantumModule, client *peers.GRPCClient) (*peers.KmsPeer, error) { func (kms *KMS) AddPeer(peerKmsId string, kmsPeerSocket string, servingQLE peers.QuantumModule, client *peers.GRPCClient, cryptoAlgorithm crypto.CryptoAlgorithm) (*peers.KmsPeer, error) {
// check if peer exists // check if peer exists
_, err := kms.FindPeerById(peerKmsId) _, err := kms.FindPeerById(peerKmsId)
if err == nil { if err == nil {
log.Errorf("Trying to add existing peer %s, with KMS ID %s", kmsPeerSocket, peerKmsId) log.Errorf("Trying to add existing peer %s, with KMS ID %s", kmsPeerSocket, peerKmsId)
return nil, fmt.Errorf("trying to add existing peer %s, with KMS ID %s", kmsPeerSocket, peerKmsId) return nil, fmt.Errorf("trying to add existing peer %s, with KMS ID %s", kmsPeerSocket, peerKmsId)
} }
peer, err := peers.NewKmsPeer(peerKmsId, servingQLE, kmsPeerSocket, client, kms.eventBus, kms.gRPCTimeout) peer, err := peers.NewKmsPeer(peerKmsId, servingQLE, cryptoAlgorithm, kmsPeerSocket, client, kms.eventBus, kms.gRPCTimeout)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -489,9 +504,8 @@ func (kms *KMS) GenerateAndSendKSAKey(remoteKMSId string, pathId uuid.UUID, requ ...@@ -489,9 +504,8 @@ func (kms *KMS) GenerateAndSendKSAKey(remoteKMSId string, pathId uuid.UUID, requ
ksaKeys := make([]*pbIC.Key, number) ksaKeys := make([]*pbIC.Key, number)
akmsKSAKeys := make([]crypto.KSAKey, number) akmsKSAKeys := make([]crypto.KSAKey, number)
cryptoAlgo := crypto.NewAES()
for i := 0; i < number; i++ { for i := 0; i < number; i++ {
ksaKey, akmsKSAKey, err := generateNewKSAKey(cryptoAlgo, platformKey.Value) ksaKey, akmsKSAKey, err := generateNewKSAKey(kms.ksaCryptoAlgorithm, platformKey.Value)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return err return err
...@@ -653,16 +667,23 @@ func (kms *KMS) sendKSAKeysToPlatformKmsPeer(kmsPeerAddress, platformKeyID, requ ...@@ -653,16 +667,23 @@ func (kms *KMS) sendKSAKeysToPlatformKmsPeer(kmsPeerAddress, platformKeyID, requ
} }
remoteClient := pbIC.NewKmsTalkerClient(remoteConn) remoteClient := pbIC.NewKmsTalkerClient(remoteConn)
cryptoAlgorithmEnum, ok := pbIC.CryptoAlgorithm_value[kms.ksaCryptoAlgorithm.Name()]
if !ok {
log.Infof("Crypto algorithm provided: %s is not supported -> using default.", kms.ksaCryptoAlgorithm.Name())
return fmt.Errorf("Crypto algorithm provided: %s is not supported -> using default.", kms.ksaCryptoAlgorithm.Name())
}
ctx, cancel := context.WithTimeout(context.Background(), kms.gRPCTimeout) ctx, cancel := context.WithTimeout(context.Background(), kms.gRPCTimeout)
// create a new context with some metadata // create a new context with some metadata
md := metadata.Pairs("hostname", kms.kmsName) md := metadata.Pairs("hostname", kms.kmsName)
ctx = metadata.NewOutgoingContext(ctx, md) ctx = metadata.NewOutgoingContext(ctx, md)
defer cancel() defer cancel()
_, err = remoteClient.KeyDelivery(ctx, &pbIC.KeyDeliveryRequest{ _, err = remoteClient.KeyDelivery(ctx, &pbIC.KeyDeliveryRequest{
KeyId: platformKeyID, KeyId: platformKeyID,
RequestId: requestID, RequestId: requestID,
KmsId: kms.kmsUUID.String(), CryptoAlgorithm: pbIC.CryptoAlgorithm(cryptoAlgorithmEnum),
Keys: ksaKeys, KmsId: kms.kmsUUID.String(),
Keys: ksaKeys,
}) })
if err != nil { if err != nil {
log.Error(err) log.Error(err)
...@@ -724,9 +745,8 @@ func (kms *KMS) generateAndReturnKsaKey(receivingCKMSID, pathID uuid.UUID, numbe ...@@ -724,9 +745,8 @@ func (kms *KMS) generateAndReturnKsaKey(receivingCKMSID, pathID uuid.UUID, numbe
ksaKeysToSendToRemoteKMS := make([]*pbIC.Key, number) ksaKeysToSendToRemoteKMS := make([]*pbIC.Key, number)
ksaKeysToReturn := make([]crypto.KSAKey, number) ksaKeysToReturn := make([]crypto.KSAKey, number)
cryptoAlgo := crypto.NewAES()
for i := int64(0); i < number; i++ { for i := int64(0); i < number; i++ {
remoteKSAKey, localKSAKey, err := generateNewKSAKey(cryptoAlgo, platformKey.Value) remoteKSAKey, localKSAKey, err := generateNewKSAKey(kms.ksaCryptoAlgorithm, platformKey.Value)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return nil, err return nil, err
......
...@@ -244,7 +244,12 @@ func (s *kmsTalkerServer) KeyForwarding(ctx context.Context, in *pb.KeyForwardin ...@@ -244,7 +244,12 @@ func (s *kmsTalkerServer) KeyForwarding(ctx context.Context, in *pb.KeyForwardin
return nil, status.Errorf(codes.InvalidArgument, "") return nil, status.Errorf(codes.InvalidArgument, "")
} }
decryptedKey, err := s.getDecryptedKey(decryptKey.Key, route.Previous.CryptoAlgo(), in.GetKey()) cryptoAlgorithm, err := crypto.GetCryptoAlgorithmByName(in.GetCryptoAlgorithm().String())
if err != nil {
return nil, status.Errorf(codes.Internal, "%s", err)
}
decryptedKey, err := s.getDecryptedKey(decryptKey.Key, cryptoAlgorithm, in.GetKey())
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "%s", err) return nil, status.Errorf(codes.Internal, "%s", err)
} }
...@@ -308,8 +313,11 @@ func (s *kmsTalkerServer) KeyDelivery(ctx context.Context, in *pb.KeyDeliveryReq ...@@ -308,8 +313,11 @@ func (s *kmsTalkerServer) KeyDelivery(ctx context.Context, in *pb.KeyDeliveryReq
akmsKSAKeys := make([]crypto.KSAKey, len(in.Keys)) akmsKSAKeys := make([]crypto.KSAKey, len(in.Keys))
for i, key := range in.Keys { for i, key := range in.Keys {
// decrypt the key // decrypt the key
cryptoAlgo := crypto.NewAES() cryptoAlgorithm, err := crypto.GetCryptoAlgorithmByName(in.GetCryptoAlgorithm().String())
decryptedKSAKey, err := s.getDecryptedKey(platformKey.Value, cryptoAlgo, key) if err != nil {
return nil, status.Errorf(codes.Internal, "%s", err)
}
decryptedKSAKey, err := s.getDecryptedKey(platformKey.Value, cryptoAlgorithm, key)
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "%s", err) return nil, status.Errorf(codes.Internal, "%s", err)
} }
......
...@@ -44,7 +44,7 @@ type KmsPeer struct { ...@@ -44,7 +44,7 @@ type KmsPeer struct {
gRPCTimeout time.Duration gRPCTimeout time.Duration
tcpSocket *net.TCPAddr // the IP address and TCP port (aka socket) of the kms peer tcpSocket *net.TCPAddr // the IP address and TCP port (aka socket) of the kms peer
TcpSocketStr string // string rep. of tcpSocket TcpSocketStr string // string rep. of tcpSocket
et crypto.CryptoAlgorithm cryptoAlgorithm crypto.CryptoAlgorithm
// NOTE: currently not used, could be of usage later on // NOTE: currently not used, could be of usage later on
// name string // the name of the kms peer // name string // the name of the kms peer
quit chan bool // cancel the peer goroutine quit chan bool // cancel the peer goroutine
...@@ -52,7 +52,7 @@ type KmsPeer struct { ...@@ -52,7 +52,7 @@ type KmsPeer struct {
} }
// TODO: check intercomaddr -> remove? // TODO: check intercomaddr -> remove?
func NewKmsPeer(peerKmsId string, quantummodule QuantumModule, tcpSocketStr string, client *GRPCClient, eventBus *event.EventBus, gRPCTimeout time.Duration) (*KmsPeer, error) { func NewKmsPeer(peerKmsId string, quantummodule QuantumModule, cryptoAlgorithm crypto.CryptoAlgorithm, tcpSocketStr string, client *GRPCClient, eventBus *event.EventBus, gRPCTimeout time.Duration) (*KmsPeer, error) {
var peerKmsIdUUID uuid.UUID var peerKmsIdUUID uuid.UUID
if peerKmsId == "" { if peerKmsId == "" {
peerKmsIdUUID = uuid.New() peerKmsIdUUID = uuid.New()
...@@ -87,7 +87,7 @@ func NewKmsPeer(peerKmsId string, quantummodule QuantumModule, tcpSocketStr stri ...@@ -87,7 +87,7 @@ func NewKmsPeer(peerKmsId string, quantummodule QuantumModule, tcpSocketStr stri
servingQuantumModul: quantummodule, servingQuantumModul: quantummodule,
tcpSocket: tcpSocket, tcpSocket: tcpSocket,
TcpSocketStr: tcpSocketStr, TcpSocketStr: tcpSocketStr,
et: crypto.NewAES(), cryptoAlgorithm: cryptoAlgorithm,
quit: make(chan bool), quit: make(chan bool),
eventBus: eventBus, eventBus: eventBus,
gRPCTimeout: gRPCTimeout, gRPCTimeout: gRPCTimeout,
...@@ -113,7 +113,7 @@ func (kp *KmsPeer) QuantumModule() QuantumModule { ...@@ -113,7 +113,7 @@ func (kp *KmsPeer) QuantumModule() QuantumModule {
} }
func (kp *KmsPeer) CryptoAlgo() crypto.CryptoAlgorithm { func (kp *KmsPeer) CryptoAlgo() crypto.CryptoAlgorithm {
return kp.et return kp.cryptoAlgorithm
} }
func (kp *KmsPeer) SyncBulkKeys() error { func (kp *KmsPeer) SyncBulkKeys() error {
...@@ -172,7 +172,7 @@ func (kp *KmsPeer) SendPayload(payload *crypto.Key, pathId, processId uuid.UUID) ...@@ -172,7 +172,7 @@ func (kp *KmsPeer) SendPayload(payload *crypto.Key, pathId, processId uuid.UUID)
kp.servingQuantumModul.KeyStore().DeleteKey(key.KeyID) kp.servingQuantumModul.KeyStore().DeleteKey(key.KeyID)
nonce, encryptedPayload, err := kp.et.Encrypt(payload.Key, key.Key) nonce, encryptedPayload, err := kp.cryptoAlgorithm.Encrypt(payload.Key, key.Key)
if err != nil { if err != nil {
return err return err
} }
...@@ -182,12 +182,19 @@ func (kp *KmsPeer) SendPayload(payload *crypto.Key, pathId, processId uuid.UUID) ...@@ -182,12 +182,19 @@ func (kp *KmsPeer) SendPayload(payload *crypto.Key, pathId, processId uuid.UUID)
log.Infof("Sent encrypted Payload: %s with nonce: %s", encryptedPayloadAsString, nonceAsString) log.Infof("Sent encrypted Payload: %s with nonce: %s", encryptedPayloadAsString, nonceAsString)
cryptoAlgorithmEnum, ok := pbIC.CryptoAlgorithm_value[kp.cryptoAlgorithm.Name()]
if !ok {
log.Infof("Crypto algorithm provided: %s is not supported -> using default.", kp.cryptoAlgorithm.Name())
return fmt.Errorf("Crypto algorithm provided: %s is not supported -> using default.", kp.cryptoAlgorithm.Name())
}
ctx2, cancel2 := context.WithTimeout(context.Background(), kp.gRPCTimeout) ctx2, cancel2 := context.WithTimeout(context.Background(), kp.gRPCTimeout)
defer cancel2() defer cancel2()
_, err = kp.peerClient.KeyForwarding(ctx2, &pbIC.KeyForwardingRequest{ _, err = kp.peerClient.KeyForwarding(ctx2, &pbIC.KeyForwardingRequest{
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
PathId: pathId.String(), PathId: pathId.String(),
ProcessId: processId.String(), ProcessId: processId.String(),
CryptoAlgorithm: pbIC.CryptoAlgorithm(cryptoAlgorithmEnum),
Key: &pbIC.Key{ Key: &pbIC.Key{
Id: payload.ID.String(), Id: payload.ID.String(),
Nonce: nonceAsString, Nonce: nonceAsString,
......
...@@ -16,6 +16,7 @@ AKMS: ...@@ -16,6 +16,7 @@ AKMS:
CertFile: "config/ssl/kms/kms1-selfsigned.crt" CertFile: "config/ssl/kms/kms1-selfsigned.crt"
KeyFile: "config/ssl/kms/kms1-selfsigned.key" KeyFile: "config/ssl/kms/kms1-selfsigned.key"
GRPCTimeoutInSeconds: 600 GRPCTimeoutInSeconds: 600
KSACryptoAlgorithm: AES_256_GCM
KmsTLS: KmsTLS:
Active: false Active: false
CAFile: "config/ssl/ca.crt" CAFile: "config/ssl/ca.crt"
...@@ -25,6 +26,7 @@ Peers: ...@@ -25,6 +26,7 @@ Peers:
# peer to kms02 # peer to kms02
- PeerId: "5e41c291-6121-4335-84f6-41e04b8bdaa2" - PeerId: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
PeerInterComAddr: kms02:50910 PeerInterComAddr: kms02:50910
CryptoAlgorithm: AES_256_GCM
Type: danet Type: danet
# quantum module of type emulated at the given address # quantum module of type emulated at the given address
QuantumModule: QuantumModule:
......
Id: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
Name: kms01
InterComAddr: 0.0.0.0:50910
QuantumAddr: 0.0.0.0:50911
AKMS:
RemoteAddress: "https://akms-simulator_1:4444/api/v1/keys/push_ksa_key"
ServerPort: "9696"
ClientTLS:
Active: true
CAFile: "config/ssl/ca.crt"
CertFile: "config/ssl/kms/kms1-selfsigned.crt"
KeyFile: "config/ssl/kms/kms1-selfsigned.key"
ServerTLS:
Active: true
CAFile: "config/ssl/ca.crt"
CertFile: "config/ssl/kms/kms1-selfsigned.crt"
KeyFile: "config/ssl/kms/kms1-selfsigned.key"
GRPCTimeoutInSeconds: 600
KSACryptoAlgorithm: OTP
KmsTLS:
Active: false
CAFile: "config/ssl/ca.crt"
CertFile: "config/ssl/kms/kms1-selfsigned.crt"
KeyFile: "config/ssl/kms/kms1-selfsigned.key"
Peers:
# peer to kms02
- PeerId: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
PeerInterComAddr: kms02:50910
CryptoAlgorithm: OTP
Type: danet
# quantum module of type emulated at the given address
QuantumModule:
Type: emulated
Hostname: quantumlayer_1
ETSI14Server:
Address: ":1414"
RemoteCKMSID: "5e41c291-6121-4335-84f6-41e04b8bdaa2"
...@@ -16,6 +16,7 @@ AKMS: ...@@ -16,6 +16,7 @@ AKMS:
CertFile: "config/ssl/kms/kms2-selfsigned.crt" CertFile: "config/ssl/kms/kms2-selfsigned.crt"
KeyFile: "config/ssl/kms/kms2-selfsigned.key" KeyFile: "config/ssl/kms/kms2-selfsigned.key"
GRPCTimeoutInSeconds: 600 GRPCTimeoutInSeconds: 600
KSACryptoAlgorithm: AES_256_GCM
KmsTLS: KmsTLS:
Active: false Active: false
CAFile: "config/ssl/ca.crt" CAFile: "config/ssl/ca.crt"
...@@ -25,6 +26,7 @@ Peers: ...@@ -25,6 +26,7 @@ Peers:
# peer to kms01 # peer to kms01
- PeerId: "0ff33c82-7fe1-482b-a0ca-67565806ee4b" - PeerId: "0ff33c82-7fe1-482b-a0ca-67565806ee4b"
PeerInterComAddr: kms01:50910 PeerInterComAddr: kms01:50910
CryptoAlgorithm: AES_256_GCM
Type: danet Type: danet
# quantum module of type emulated at the given address # quantum module of type emulated at the given address
QuantumModule: QuantumModule:
......