diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 69c9e362b0..2071a7b4db 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -229,6 +229,14 @@

Table of Contents

MConditionGroup +
  • + MKasPublicKey +
  • + +
  • + MKasPublicKeySet +
  • +
  • MKeyAccessServer
  • @@ -282,6 +290,10 @@

    Table of Contents

    EConditionBooleanTypeEnum +
  • + EKasPublicKeyAlgEnum +
  • +
  • ESubjectMappingOperatorEnum
  • @@ -1478,6 +1490,70 @@

    ConditionGroup

    +

    KasPublicKey

    +

    A KAS public key and some associated metadata for further identifcation

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    pemstring

    x509 ASN.1 content in PEM envelope, usually

    kidstring

    A unique string identifier for this key

    algKasPublicKeyAlgEnum

    A known algorithm type with any additional parameters encoded. +To start, these may be `rsa:2048` for encrypting ZTDF files and +`ec:secp256r1` for nanoTDF, but more formats may be added as needed.

    + + + + + +

    KasPublicKeySet

    +

    A list of known KAS public keys

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keysKasPublicKeyrepeated

    + + + + +

    KeyAccessServer

    Key Access Server Registry

    @@ -1606,6 +1682,13 @@

    PublicKey

    public key - optional since can also be retrieved via url

    + + cached + KasPublicKeySet + +

    public key with additional information. Current preferred version

    + + @@ -2016,6 +2099,35 @@

    ConditionBooleanTypeEnum

    +

    KasPublicKeyAlgEnum

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED0

    KAS_PUBLIC_KEY_ALG_ENUM_RSA_20481

    KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R15

    +

    SubjectMappingOperatorEnum

    buflint ENUM_VALUE_PREFIX: to make sure that C++ scoping rules aren't violated when users add new enum values to an enum in a given package

    diff --git a/docs/openapi/policy/attributes/attributes.swagger.json b/docs/openapi/policy/attributes/attributes.swagger.json index 70c760d327..01d68183d2 100644 --- a/docs/openapi/policy/attributes/attributes.swagger.json +++ b/docs/openapi/policy/attributes/attributes.swagger.json @@ -991,6 +991,46 @@ }, "title": "A collection of Conditions evaluated by the boolean_operator provided" }, + "policyKasPublicKey": { + "type": "object", + "properties": { + "pem": { + "type": "string", + "title": "x509 ASN.1 content in PEM envelope, usually" + }, + "kid": { + "type": "string", + "title": "A unique string identifier for this key" + }, + "alg": { + "$ref": "#/definitions/policyKasPublicKeyAlgEnum", + "description": "A known algorithm type with any additional parameters encoded.\nTo start, these may be `rsa:2048` for encrypting ZTDF files and \n`ec:secp256r1` for nanoTDF, but more formats may be added as needed." + } + }, + "title": "A KAS public key and some associated metadata for further identifcation" + }, + "policyKasPublicKeyAlgEnum": { + "type": "string", + "enum": [ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1" + ], + "default": "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED" + }, + "policyKasPublicKeySet": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyKasPublicKey" + } + } + }, + "title": "A list of known KAS public keys" + }, "policyKeyAccessServer": { "type": "object", "properties": { @@ -1052,6 +1092,10 @@ "local": { "type": "string", "title": "public key - optional since can also be retrieved via url" + }, + "cached": { + "$ref": "#/definitions/policyKasPublicKeySet", + "title": "public key with additional information. Current preferred version" } } }, diff --git a/docs/openapi/policy/kasregistry/key_access_server_registry.swagger.json b/docs/openapi/policy/kasregistry/key_access_server_registry.swagger.json index 71edf32bd5..af67abf55a 100644 --- a/docs/openapi/policy/kasregistry/key_access_server_registry.swagger.json +++ b/docs/openapi/policy/kasregistry/key_access_server_registry.swagger.json @@ -375,6 +375,46 @@ } } }, + "policyKasPublicKey": { + "type": "object", + "properties": { + "pem": { + "type": "string", + "title": "x509 ASN.1 content in PEM envelope, usually" + }, + "kid": { + "type": "string", + "title": "A unique string identifier for this key" + }, + "alg": { + "$ref": "#/definitions/policyKasPublicKeyAlgEnum", + "description": "A known algorithm type with any additional parameters encoded.\nTo start, these may be `rsa:2048` for encrypting ZTDF files and \n`ec:secp256r1` for nanoTDF, but more formats may be added as needed." + } + }, + "title": "A KAS public key and some associated metadata for further identifcation" + }, + "policyKasPublicKeyAlgEnum": { + "type": "string", + "enum": [ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1" + ], + "default": "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED" + }, + "policyKasPublicKeySet": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyKasPublicKey" + } + } + }, + "title": "A list of known KAS public keys" + }, "policyKeyAccessServer": { "type": "object", "properties": { @@ -405,6 +445,10 @@ "local": { "type": "string", "title": "public key - optional since can also be retrieved via url" + }, + "cached": { + "$ref": "#/definitions/policyKasPublicKeySet", + "title": "public key with additional information. Current preferred version" } } }, diff --git a/docs/openapi/policy/namespaces/namespaces.swagger.json b/docs/openapi/policy/namespaces/namespaces.swagger.json index a95a2af500..aad8b5f1ad 100644 --- a/docs/openapi/policy/namespaces/namespaces.swagger.json +++ b/docs/openapi/policy/namespaces/namespaces.swagger.json @@ -392,6 +392,46 @@ } } }, + "policyKasPublicKey": { + "type": "object", + "properties": { + "pem": { + "type": "string", + "title": "x509 ASN.1 content in PEM envelope, usually" + }, + "kid": { + "type": "string", + "title": "A unique string identifier for this key" + }, + "alg": { + "$ref": "#/definitions/policyKasPublicKeyAlgEnum", + "description": "A known algorithm type with any additional parameters encoded.\nTo start, these may be `rsa:2048` for encrypting ZTDF files and \n`ec:secp256r1` for nanoTDF, but more formats may be added as needed." + } + }, + "title": "A KAS public key and some associated metadata for further identifcation" + }, + "policyKasPublicKeyAlgEnum": { + "type": "string", + "enum": [ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1" + ], + "default": "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED" + }, + "policyKasPublicKeySet": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyKasPublicKey" + } + } + }, + "title": "A list of known KAS public keys" + }, "policyKeyAccessServer": { "type": "object", "properties": { @@ -453,6 +493,10 @@ "local": { "type": "string", "title": "public key - optional since can also be retrieved via url" + }, + "cached": { + "$ref": "#/definitions/policyKasPublicKeySet", + "title": "public key with additional information. Current preferred version" } } }, diff --git a/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json b/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json index 8efe538615..63e2b9ae9d 100644 --- a/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json +++ b/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json @@ -357,6 +357,46 @@ }, "title": "A collection of Conditions evaluated by the boolean_operator provided" }, + "policyKasPublicKey": { + "type": "object", + "properties": { + "pem": { + "type": "string", + "title": "x509 ASN.1 content in PEM envelope, usually" + }, + "kid": { + "type": "string", + "title": "A unique string identifier for this key" + }, + "alg": { + "$ref": "#/definitions/policyKasPublicKeyAlgEnum", + "description": "A known algorithm type with any additional parameters encoded.\nTo start, these may be `rsa:2048` for encrypting ZTDF files and \n`ec:secp256r1` for nanoTDF, but more formats may be added as needed." + } + }, + "title": "A KAS public key and some associated metadata for further identifcation" + }, + "policyKasPublicKeyAlgEnum": { + "type": "string", + "enum": [ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1" + ], + "default": "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED" + }, + "policyKasPublicKeySet": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyKasPublicKey" + } + } + }, + "title": "A list of known KAS public keys" + }, "policyKeyAccessServer": { "type": "object", "properties": { @@ -418,6 +458,10 @@ "local": { "type": "string", "title": "public key - optional since can also be retrieved via url" + }, + "cached": { + "$ref": "#/definitions/policyKasPublicKeySet", + "title": "public key with additional information. Current preferred version" } } }, diff --git a/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json b/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json index 4bf1247fc3..c32d59a988 100644 --- a/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json +++ b/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json @@ -559,6 +559,46 @@ }, "title": "A collection of Conditions evaluated by the boolean_operator provided" }, + "policyKasPublicKey": { + "type": "object", + "properties": { + "pem": { + "type": "string", + "title": "x509 ASN.1 content in PEM envelope, usually" + }, + "kid": { + "type": "string", + "title": "A unique string identifier for this key" + }, + "alg": { + "$ref": "#/definitions/policyKasPublicKeyAlgEnum", + "description": "A known algorithm type with any additional parameters encoded.\nTo start, these may be `rsa:2048` for encrypting ZTDF files and \n`ec:secp256r1` for nanoTDF, but more formats may be added as needed." + } + }, + "title": "A KAS public key and some associated metadata for further identifcation" + }, + "policyKasPublicKeyAlgEnum": { + "type": "string", + "enum": [ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1" + ], + "default": "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED" + }, + "policyKasPublicKeySet": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyKasPublicKey" + } + } + }, + "title": "A list of known KAS public keys" + }, "policyKeyAccessServer": { "type": "object", "properties": { @@ -620,6 +660,10 @@ "local": { "type": "string", "title": "public key - optional since can also be retrieved via url" + }, + "cached": { + "$ref": "#/definitions/policyKasPublicKeySet", + "title": "public key with additional information. Current preferred version" } } }, diff --git a/docs/openapi/policy/unsafe/unsafe.swagger.json b/docs/openapi/policy/unsafe/unsafe.swagger.json index 855ff0c55c..a917b49d1f 100644 --- a/docs/openapi/policy/unsafe/unsafe.swagger.json +++ b/docs/openapi/policy/unsafe/unsafe.swagger.json @@ -505,6 +505,46 @@ }, "title": "A collection of Conditions evaluated by the boolean_operator provided" }, + "policyKasPublicKey": { + "type": "object", + "properties": { + "pem": { + "type": "string", + "title": "x509 ASN.1 content in PEM envelope, usually" + }, + "kid": { + "type": "string", + "title": "A unique string identifier for this key" + }, + "alg": { + "$ref": "#/definitions/policyKasPublicKeyAlgEnum", + "description": "A known algorithm type with any additional parameters encoded.\nTo start, these may be `rsa:2048` for encrypting ZTDF files and \n`ec:secp256r1` for nanoTDF, but more formats may be added as needed." + } + }, + "title": "A KAS public key and some associated metadata for further identifcation" + }, + "policyKasPublicKeyAlgEnum": { + "type": "string", + "enum": [ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1" + ], + "default": "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED" + }, + "policyKasPublicKeySet": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyKasPublicKey" + } + } + }, + "title": "A list of known KAS public keys" + }, "policyKeyAccessServer": { "type": "object", "properties": { @@ -566,6 +606,10 @@ "local": { "type": "string", "title": "public key - optional since can also be retrieved via url" + }, + "cached": { + "$ref": "#/definitions/policyKasPublicKeySet", + "title": "public key with additional information. Current preferred version" } } }, diff --git a/protocol/go/policy/objects.pb.go b/protocol/go/policy/objects.pb.go index d7526c30e4..ace9fc48d9 100644 --- a/protocol/go/policy/objects.pb.go +++ b/protocol/go/policy/objects.pb.go @@ -182,6 +182,55 @@ func (ConditionBooleanTypeEnum) EnumDescriptor() ([]byte, []int) { return file_policy_objects_proto_rawDescGZIP(), []int{2} } +type KasPublicKeyAlgEnum int32 + +const ( + KasPublicKeyAlgEnum_KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED KasPublicKeyAlgEnum = 0 + KasPublicKeyAlgEnum_KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048 KasPublicKeyAlgEnum = 1 + KasPublicKeyAlgEnum_KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1 KasPublicKeyAlgEnum = 5 +) + +// Enum value maps for KasPublicKeyAlgEnum. +var ( + KasPublicKeyAlgEnum_name = map[int32]string{ + 0: "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED", + 1: "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048", + 5: "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1", + } + KasPublicKeyAlgEnum_value = map[string]int32{ + "KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED": 0, + "KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048": 1, + "KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1": 5, + } +) + +func (x KasPublicKeyAlgEnum) Enum() *KasPublicKeyAlgEnum { + p := new(KasPublicKeyAlgEnum) + *p = x + return p +} + +func (x KasPublicKeyAlgEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KasPublicKeyAlgEnum) Descriptor() protoreflect.EnumDescriptor { + return file_policy_objects_proto_enumTypes[3].Descriptor() +} + +func (KasPublicKeyAlgEnum) Type() protoreflect.EnumType { + return &file_policy_objects_proto_enumTypes[3] +} + +func (x KasPublicKeyAlgEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KasPublicKeyAlgEnum.Descriptor instead. +func (KasPublicKeyAlgEnum) EnumDescriptor() ([]byte, []int) { + return file_policy_objects_proto_rawDescGZIP(), []int{3} +} + // Standard actions supported by the platform type Action_StandardAction int32 @@ -216,11 +265,11 @@ func (x Action_StandardAction) String() string { } func (Action_StandardAction) Descriptor() protoreflect.EnumDescriptor { - return file_policy_objects_proto_enumTypes[3].Descriptor() + return file_policy_objects_proto_enumTypes[4].Descriptor() } func (Action_StandardAction) Type() protoreflect.EnumType { - return &file_policy_objects_proto_enumTypes[3] + return &file_policy_objects_proto_enumTypes[4] } func (x Action_StandardAction) Number() protoreflect.EnumNumber { @@ -1256,6 +1305,123 @@ func (x *KeyAccessServer) GetMetadata() *common.Metadata { return nil } +// A KAS public key and some associated metadata for further identifcation +type KasPublicKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // x509 ASN.1 content in PEM envelope, usually + Pem string `protobuf:"bytes,1,opt,name=pem,proto3" json:"pem,omitempty"` + // A unique string identifier for this key + Kid string `protobuf:"bytes,2,opt,name=kid,proto3" json:"kid,omitempty"` + // A known algorithm type with any additional parameters encoded. + // To start, these may be `rsa:2048` for encrypting ZTDF files and + // `ec:secp256r1` for nanoTDF, but more formats may be added as needed. + Alg KasPublicKeyAlgEnum `protobuf:"varint,3,opt,name=alg,proto3,enum=policy.KasPublicKeyAlgEnum" json:"alg,omitempty"` +} + +func (x *KasPublicKey) Reset() { + *x = KasPublicKey{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_objects_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KasPublicKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KasPublicKey) ProtoMessage() {} + +func (x *KasPublicKey) ProtoReflect() protoreflect.Message { + mi := &file_policy_objects_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KasPublicKey.ProtoReflect.Descriptor instead. +func (*KasPublicKey) Descriptor() ([]byte, []int) { + return file_policy_objects_proto_rawDescGZIP(), []int{13} +} + +func (x *KasPublicKey) GetPem() string { + if x != nil { + return x.Pem + } + return "" +} + +func (x *KasPublicKey) GetKid() string { + if x != nil { + return x.Kid + } + return "" +} + +func (x *KasPublicKey) GetAlg() KasPublicKeyAlgEnum { + if x != nil { + return x.Alg + } + return KasPublicKeyAlgEnum_KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED +} + +// A list of known KAS public keys +type KasPublicKeySet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []*KasPublicKey `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` +} + +func (x *KasPublicKeySet) Reset() { + *x = KasPublicKeySet{} + if protoimpl.UnsafeEnabled { + mi := &file_policy_objects_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KasPublicKeySet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KasPublicKeySet) ProtoMessage() {} + +func (x *KasPublicKeySet) ProtoReflect() protoreflect.Message { + mi := &file_policy_objects_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KasPublicKeySet.ProtoReflect.Descriptor instead. +func (*KasPublicKeySet) Descriptor() ([]byte, []int) { + return file_policy_objects_proto_rawDescGZIP(), []int{14} +} + +func (x *KasPublicKeySet) GetKeys() []*KasPublicKey { + if x != nil { + return x.Keys + } + return nil +} + type PublicKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1265,13 +1431,14 @@ type PublicKey struct { // // *PublicKey_Remote // *PublicKey_Local + // *PublicKey_Cached PublicKey isPublicKey_PublicKey `protobuf_oneof:"public_key"` } func (x *PublicKey) Reset() { *x = PublicKey{} if protoimpl.UnsafeEnabled { - mi := &file_policy_objects_proto_msgTypes[13] + mi := &file_policy_objects_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1284,7 +1451,7 @@ func (x *PublicKey) String() string { func (*PublicKey) ProtoMessage() {} func (x *PublicKey) ProtoReflect() protoreflect.Message { - mi := &file_policy_objects_proto_msgTypes[13] + mi := &file_policy_objects_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1297,7 +1464,7 @@ func (x *PublicKey) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicKey.ProtoReflect.Descriptor instead. func (*PublicKey) Descriptor() ([]byte, []int) { - return file_policy_objects_proto_rawDescGZIP(), []int{13} + return file_policy_objects_proto_rawDescGZIP(), []int{15} } func (m *PublicKey) GetPublicKey() isPublicKey_PublicKey { @@ -1321,6 +1488,13 @@ func (x *PublicKey) GetLocal() string { return "" } +func (x *PublicKey) GetCached() *KasPublicKeySet { + if x, ok := x.GetPublicKey().(*PublicKey_Cached); ok { + return x.Cached + } + return nil +} + type isPublicKey_PublicKey interface { isPublicKey_PublicKey() } @@ -1335,10 +1509,17 @@ type PublicKey_Local struct { Local string `protobuf:"bytes,2,opt,name=local,proto3,oneof"` } +type PublicKey_Cached struct { + // public key with additional information. Current preferred version + Cached *KasPublicKeySet `protobuf:"bytes,3,opt,name=cached,proto3,oneof"` +} + func (*PublicKey_Remote) isPublicKey_PublicKey() {} func (*PublicKey_Local) isPublicKey_PublicKey() {} +func (*PublicKey_Cached) isPublicKey_PublicKey() {} + var File_policy_objects_proto protoreflect.FileDescriptor var file_policy_objects_proto_rawDesc = []byte{ @@ -1537,7 +1718,17 @@ var file_policy_objects_proto_rawDesc = []byte{ 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb8, 0x03, 0x0a, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x0c, + 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x70, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x65, 0x6d, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x69, 0x64, + 0x12, 0x2d, 0x0a, 0x03, 0x61, 0x6c, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x61, 0x6c, 0x67, 0x22, + 0x3b, 0x0a, 0x0f, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0xeb, 0x03, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x84, 0x03, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xe9, 0x02, 0xba, 0x48, 0xe5, 0x02, 0xba, 0x01, 0xe1, 0x02, 0x0a, 0x0a, 0x75, 0x72, 0x69, 0x5f, 0x66, 0x6f, 0x72, 0x6d, @@ -1564,41 +1755,54 @@ var file_policy_objects_proto_rawDesc = []byte{ 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x29, 0x2a, 0x28, 0x2f, 0x2e, 0x2a, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x2a, 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, - 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, - 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, - 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, - 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, - 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, - 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, - 0x4d, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03, 0x2a, 0xca, 0x01, - 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x29, - 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, - 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x53, - 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x10, - 0x01, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, - 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, - 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x2d, 0x0a, 0x29, 0x53, - 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x5f, - 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x03, 0x2a, 0x90, 0x01, 0x0a, 0x18, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4f, 0x4e, 0x44, 0x49, + 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x0c, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x2a, 0xb3, 0x01, 0x0a, 0x15, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, + 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, + 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, + 0x46, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, + 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, + 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x54, 0x54, 0x52, + 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03, + 0x2a, 0xca, 0x01, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x2d, 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, + 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, + 0x0a, 0x20, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, + 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, + 0x49, 0x4e, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, + 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x2d, + 0x0a, 0x29, 0x53, 0x55, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, + 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, + 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x03, 0x2a, 0x90, 0x01, + 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, + 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4f, + 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, - 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, - 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4f, 0x52, 0x10, 0x02, 0x42, 0x82, 0x01, + 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, + 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4f, 0x52, 0x10, 0x02, + 0x2a, 0x9a, 0x01, 0x0a, 0x13, 0x4b, 0x61, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x41, 0x6c, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x23, 0x4b, 0x41, 0x53, 0x5f, + 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, + 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x24, 0x0a, 0x20, 0x4b, 0x41, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, + 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x52, 0x53, 0x41, + 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x41, 0x53, 0x5f, 0x50, + 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x4c, 0x47, 0x5f, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x52, 0x31, 0x10, + 0x05, 0x22, 0x04, 0x08, 0x02, 0x10, 0x04, 0x22, 0x04, 0x08, 0x06, 0x10, 0x64, 0x42, 0x82, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, @@ -1622,66 +1826,72 @@ func file_policy_objects_proto_rawDescGZIP() []byte { return file_policy_objects_proto_rawDescData } -var file_policy_objects_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_policy_objects_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_policy_objects_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_policy_objects_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_policy_objects_proto_goTypes = []interface{}{ (AttributeRuleTypeEnum)(0), // 0: policy.AttributeRuleTypeEnum (SubjectMappingOperatorEnum)(0), // 1: policy.SubjectMappingOperatorEnum (ConditionBooleanTypeEnum)(0), // 2: policy.ConditionBooleanTypeEnum - (Action_StandardAction)(0), // 3: policy.Action.StandardAction - (*Namespace)(nil), // 4: policy.Namespace - (*Attribute)(nil), // 5: policy.Attribute - (*Value)(nil), // 6: policy.Value - (*Action)(nil), // 7: policy.Action - (*SubjectMapping)(nil), // 8: policy.SubjectMapping - (*Condition)(nil), // 9: policy.Condition - (*ConditionGroup)(nil), // 10: policy.ConditionGroup - (*SubjectSet)(nil), // 11: policy.SubjectSet - (*SubjectConditionSet)(nil), // 12: policy.SubjectConditionSet - (*SubjectProperty)(nil), // 13: policy.SubjectProperty - (*ResourceMappingGroup)(nil), // 14: policy.ResourceMappingGroup - (*ResourceMapping)(nil), // 15: policy.ResourceMapping - (*KeyAccessServer)(nil), // 16: policy.KeyAccessServer - (*PublicKey)(nil), // 17: policy.PublicKey - (*wrapperspb.BoolValue)(nil), // 18: google.protobuf.BoolValue - (*common.Metadata)(nil), // 19: common.Metadata + (KasPublicKeyAlgEnum)(0), // 3: policy.KasPublicKeyAlgEnum + (Action_StandardAction)(0), // 4: policy.Action.StandardAction + (*Namespace)(nil), // 5: policy.Namespace + (*Attribute)(nil), // 6: policy.Attribute + (*Value)(nil), // 7: policy.Value + (*Action)(nil), // 8: policy.Action + (*SubjectMapping)(nil), // 9: policy.SubjectMapping + (*Condition)(nil), // 10: policy.Condition + (*ConditionGroup)(nil), // 11: policy.ConditionGroup + (*SubjectSet)(nil), // 12: policy.SubjectSet + (*SubjectConditionSet)(nil), // 13: policy.SubjectConditionSet + (*SubjectProperty)(nil), // 14: policy.SubjectProperty + (*ResourceMappingGroup)(nil), // 15: policy.ResourceMappingGroup + (*ResourceMapping)(nil), // 16: policy.ResourceMapping + (*KeyAccessServer)(nil), // 17: policy.KeyAccessServer + (*KasPublicKey)(nil), // 18: policy.KasPublicKey + (*KasPublicKeySet)(nil), // 19: policy.KasPublicKeySet + (*PublicKey)(nil), // 20: policy.PublicKey + (*wrapperspb.BoolValue)(nil), // 21: google.protobuf.BoolValue + (*common.Metadata)(nil), // 22: common.Metadata } var file_policy_objects_proto_depIdxs = []int32{ - 18, // 0: policy.Namespace.active:type_name -> google.protobuf.BoolValue - 19, // 1: policy.Namespace.metadata:type_name -> common.Metadata - 16, // 2: policy.Namespace.grants:type_name -> policy.KeyAccessServer - 4, // 3: policy.Attribute.namespace:type_name -> policy.Namespace + 21, // 0: policy.Namespace.active:type_name -> google.protobuf.BoolValue + 22, // 1: policy.Namespace.metadata:type_name -> common.Metadata + 17, // 2: policy.Namespace.grants:type_name -> policy.KeyAccessServer + 5, // 3: policy.Attribute.namespace:type_name -> policy.Namespace 0, // 4: policy.Attribute.rule:type_name -> policy.AttributeRuleTypeEnum - 6, // 5: policy.Attribute.values:type_name -> policy.Value - 16, // 6: policy.Attribute.grants:type_name -> policy.KeyAccessServer - 18, // 7: policy.Attribute.active:type_name -> google.protobuf.BoolValue - 19, // 8: policy.Attribute.metadata:type_name -> common.Metadata - 5, // 9: policy.Value.attribute:type_name -> policy.Attribute - 16, // 10: policy.Value.grants:type_name -> policy.KeyAccessServer - 18, // 11: policy.Value.active:type_name -> google.protobuf.BoolValue - 8, // 12: policy.Value.subject_mappings:type_name -> policy.SubjectMapping - 19, // 13: policy.Value.metadata:type_name -> common.Metadata - 3, // 14: policy.Action.standard:type_name -> policy.Action.StandardAction - 6, // 15: policy.SubjectMapping.attribute_value:type_name -> policy.Value - 12, // 16: policy.SubjectMapping.subject_condition_set:type_name -> policy.SubjectConditionSet - 7, // 17: policy.SubjectMapping.actions:type_name -> policy.Action - 19, // 18: policy.SubjectMapping.metadata:type_name -> common.Metadata + 7, // 5: policy.Attribute.values:type_name -> policy.Value + 17, // 6: policy.Attribute.grants:type_name -> policy.KeyAccessServer + 21, // 7: policy.Attribute.active:type_name -> google.protobuf.BoolValue + 22, // 8: policy.Attribute.metadata:type_name -> common.Metadata + 6, // 9: policy.Value.attribute:type_name -> policy.Attribute + 17, // 10: policy.Value.grants:type_name -> policy.KeyAccessServer + 21, // 11: policy.Value.active:type_name -> google.protobuf.BoolValue + 9, // 12: policy.Value.subject_mappings:type_name -> policy.SubjectMapping + 22, // 13: policy.Value.metadata:type_name -> common.Metadata + 4, // 14: policy.Action.standard:type_name -> policy.Action.StandardAction + 7, // 15: policy.SubjectMapping.attribute_value:type_name -> policy.Value + 13, // 16: policy.SubjectMapping.subject_condition_set:type_name -> policy.SubjectConditionSet + 8, // 17: policy.SubjectMapping.actions:type_name -> policy.Action + 22, // 18: policy.SubjectMapping.metadata:type_name -> common.Metadata 1, // 19: policy.Condition.operator:type_name -> policy.SubjectMappingOperatorEnum - 9, // 20: policy.ConditionGroup.conditions:type_name -> policy.Condition + 10, // 20: policy.ConditionGroup.conditions:type_name -> policy.Condition 2, // 21: policy.ConditionGroup.boolean_operator:type_name -> policy.ConditionBooleanTypeEnum - 10, // 22: policy.SubjectSet.condition_groups:type_name -> policy.ConditionGroup - 11, // 23: policy.SubjectConditionSet.subject_sets:type_name -> policy.SubjectSet - 19, // 24: policy.SubjectConditionSet.metadata:type_name -> common.Metadata - 19, // 25: policy.ResourceMapping.metadata:type_name -> common.Metadata - 6, // 26: policy.ResourceMapping.attribute_value:type_name -> policy.Value - 14, // 27: policy.ResourceMapping.group:type_name -> policy.ResourceMappingGroup - 17, // 28: policy.KeyAccessServer.public_key:type_name -> policy.PublicKey - 19, // 29: policy.KeyAccessServer.metadata:type_name -> common.Metadata - 30, // [30:30] is the sub-list for method output_type - 30, // [30:30] is the sub-list for method input_type - 30, // [30:30] is the sub-list for extension type_name - 30, // [30:30] is the sub-list for extension extendee - 0, // [0:30] is the sub-list for field type_name + 11, // 22: policy.SubjectSet.condition_groups:type_name -> policy.ConditionGroup + 12, // 23: policy.SubjectConditionSet.subject_sets:type_name -> policy.SubjectSet + 22, // 24: policy.SubjectConditionSet.metadata:type_name -> common.Metadata + 22, // 25: policy.ResourceMapping.metadata:type_name -> common.Metadata + 7, // 26: policy.ResourceMapping.attribute_value:type_name -> policy.Value + 15, // 27: policy.ResourceMapping.group:type_name -> policy.ResourceMappingGroup + 20, // 28: policy.KeyAccessServer.public_key:type_name -> policy.PublicKey + 22, // 29: policy.KeyAccessServer.metadata:type_name -> common.Metadata + 3, // 30: policy.KasPublicKey.alg:type_name -> policy.KasPublicKeyAlgEnum + 18, // 31: policy.KasPublicKeySet.keys:type_name -> policy.KasPublicKey + 19, // 32: policy.PublicKey.cached:type_name -> policy.KasPublicKeySet + 33, // [33:33] is the sub-list for method output_type + 33, // [33:33] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_policy_objects_proto_init() } @@ -1847,6 +2057,30 @@ func file_policy_objects_proto_init() { } } file_policy_objects_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KasPublicKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_objects_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KasPublicKeySet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_policy_objects_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublicKey); i { case 0: return &v.state @@ -1863,17 +2097,18 @@ func file_policy_objects_proto_init() { (*Action_Standard)(nil), (*Action_Custom)(nil), } - file_policy_objects_proto_msgTypes[13].OneofWrappers = []interface{}{ + file_policy_objects_proto_msgTypes[15].OneofWrappers = []interface{}{ (*PublicKey_Remote)(nil), (*PublicKey_Local)(nil), + (*PublicKey_Cached)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_policy_objects_proto_rawDesc, - NumEnums: 4, - NumMessages: 14, + NumEnums: 5, + NumMessages: 16, NumExtensions: 0, NumServices: 0, }, diff --git a/service/policy/objects.proto b/service/policy/objects.proto index f0ac9d3850..10da55d418 100644 --- a/service/policy/objects.proto +++ b/service/policy/objects.proto @@ -150,21 +150,21 @@ message SubjectMapping { } /** - A Condition defines a rule of - - Example: Subjects with a field selected by the flattened selector "'.division'" and a value of "Accounting" or "Marketing": - { - "subject_external_selector_value": "'.division'", - "operator": "SUBJECT_MAPPING_OPERATOR_ENUM_IN", - "subject_external_values" : ["Accounting", "Marketing"] - } - - Example: Subjects that are not part of the Fantastic Four according to their alias field: - { - "subject_external_selector_value": "'.data[0].alias'", - "operator": "SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN", - "subject_external_values" : ["mister_fantastic", "the_thing", "human_torch", "invisible_woman"] - } + A Condition defines a rule of + + Example: Subjects with a field selected by the flattened selector "'.division'" and a value of "Accounting" or "Marketing": + { + "subject_external_selector_value": "'.division'", + "operator": "SUBJECT_MAPPING_OPERATOR_ENUM_IN", + "subject_external_values" : ["Accounting", "Marketing"] + } + + Example: Subjects that are not part of the Fantastic Four according to their alias field: + { + "subject_external_selector_value": "'.data[0].alias'", + "operator": "SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN", + "subject_external_values" : ["mister_fantastic", "the_thing", "human_torch", "invisible_woman"] + } */ message Condition { // a selector for a field value on a flattened Entity Representation (such as from idP/LDAP) @@ -269,16 +269,46 @@ message KeyAccessServer { common.Metadata metadata = 100; } +enum KasPublicKeyAlgEnum { + KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED = 0; + KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048 = 1; + reserved 2 to 4; + KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1 = 5; + reserved 6 to 100; +} + +// A KAS public key and some associated metadata for further identifcation +message KasPublicKey { + // x509 ASN.1 content in PEM envelope, usually + string pem = 1; + + // A unique string identifier for this key + string kid = 2; + + // A known algorithm type with any additional parameters encoded. + // To start, these may be `rsa:2048` for encrypting ZTDF files and + // `ec:secp256r1` for nanoTDF, but more formats may be added as needed. + KasPublicKeyAlgEnum alg = 3; +} + +// A list of known KAS public keys +message KasPublicKeySet { + repeated KasPublicKey keys = 1; +} + message PublicKey { oneof public_key { // kas public key url - optional since can also be retrieved via public key string remote = 1 [(buf.validate.field).cel = { - id: "uri_format", - message: "URI must be a valid URL (e.g., 'https://demo.com/') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.", + id: "uri_format" + message: "URI must be a valid URL (e.g., 'https://demo.com/') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes." expression: "this.matches('^https://[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?(\\\\.[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?)*(/.*)?$')" }]; // public key - optional since can also be retrieved via url string local = 2; + + // public key with additional information. Current preferred version + KasPublicKeySet cached = 3; } }