Skip to content

Commit 3ba73d7

Browse files
authored
[1.7] - Updates from CBOM working group - remove any BREAKING CHANGES for ProtoBuf (#677)
removed breaking changes in Protocol Buffer schema regarding CBOM changes caused by #657 (comment)
2 parents 61fcdd0 + ed35e78 commit 3ba73d7

File tree

3 files changed

+69
-47
lines changed

3 files changed

+69
-47
lines changed

schema/bom-1.7.proto

Lines changed: 67 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2223,7 +2223,7 @@ message CryptoProperties {
22232223

22242224
// Certificate State
22252225
message CertificateState {
2226-
2226+
22272227
// Pre-defined certificate states
22282228
enum PredefinedState {
22292229
// ProtoBuff's default value
@@ -2488,62 +2488,80 @@ message CryptoProperties {
24882488
repeated string tlsSignatureSchemes = 5;
24892489
}
24902490

2491-
// Encryption Algorithm (ENCR)
2492-
message IkeV2Enc {
2493-
// A name for the encryption method
2494-
optional string name = 1;
2495-
// The key length of the encryption algorithm
2496-
optional int32 keyLength = 2;
2497-
// The bom-ref to algorithm cryptographic asset
2498-
optional string algorithm = 3;
2499-
}
25002491

2501-
// Pseudorandom Function (PRF)
2502-
message IkeV2Prf {
2503-
// A name for the pseudorandom function
2504-
optional string name = 1;
2505-
// The bom-ref to algorithm cryptographic asset
2506-
optional string algorithm = 2;
2492+
// DEPRECATED - DO NOT USE - This will be removed in a future version.
2493+
// IKEv2 Transform Types
2494+
message Ikev2TransformTypes {
2495+
// Transform Type 1: encryption algorithms
2496+
repeated string encr = 1;
2497+
// Transform Type 2: pseudorandom functions
2498+
repeated string prf = 2;
2499+
// Transform Type 3: integrity algorithms
2500+
repeated string integ = 3;
2501+
// Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)
2502+
repeated string ke = 4;
2503+
// Specifies if an Extended Sequence Number (ESN) is used.
2504+
optional bool esn = 5;
2505+
// IKEv2 Authentication method
2506+
repeated string auth = 6;
25072507
}
25082508

2509-
// Integrity Algorithm (INTEG)
2510-
message IkeV2Integ {
2511-
// A name for the integrity algorithm
2512-
optional string name = 1;
2513-
// The bom-ref to algorithm cryptographic asset
2514-
optional string algorithm = 2;
2515-
}
2509+
// IKEv2 Transform Types Detailed
2510+
message Ikev2TransformTypesDetailed {
2511+
// IKEv2 Encryption Algorithm (ENCR)
2512+
message Encr {
2513+
// A name for the encryption method
2514+
optional string name = 1;
2515+
// The key length of the encryption algorithm
2516+
optional int32 keyLength = 2;
2517+
// The bom-ref to algorithm cryptographic asset
2518+
optional string algorithm = 3;
2519+
}
25162520

2517-
// Key Exchange Method (KE)
2518-
message IkeV2Ke {
2519-
// A group identifier for the key exchange algorithm
2520-
optional int32 group = 1;
2521-
// The bom-ref to algorithm cryptographic asset
2522-
optional string algorithm = 2;
2523-
}
2521+
// IKEv2 Pseudorandom Function (PRF)
2522+
message Prf {
2523+
// A name for the pseudorandom function
2524+
optional string name = 1;
2525+
// The bom-ref to algorithm cryptographic asset
2526+
optional string algorithm = 2;
2527+
}
25242528

2525-
// IKEv2 Authentication method
2526-
message IkeV2Auth {
2527-
// A name for the authentication method
2528-
optional string name = 1;
2529-
// The bom-ref to algorithm cryptographic asset
2530-
optional string algorithm = 2;
2531-
}
2529+
// IKEv2 Integrity Algorithm (INTEG)
2530+
message Integ {
2531+
// A name for the integrity algorithm
2532+
optional string name = 1;
2533+
// The bom-ref to algorithm cryptographic asset
2534+
optional string algorithm = 2;
2535+
}
2536+
2537+
// IKEv2 Key Exchange Method (KE)
2538+
message Ke {
2539+
// A group identifier for the key exchange algorithm
2540+
optional int32 group = 1;
2541+
// The bom-ref to algorithm cryptographic asset
2542+
optional string algorithm = 2;
2543+
}
2544+
2545+
// IKEv2 Authentication method
2546+
message Auth {
2547+
// A name for the authentication method
2548+
optional string name = 1;
2549+
// The bom-ref to algorithm cryptographic asset
2550+
optional string algorithm = 2;
2551+
}
25322552

2533-
// IKEv2 Transform Types
2534-
message Ikev2TransformTypes {
25352553
// Transform Type 1: encryption algorithms
2536-
repeated IkeV2Enc encr = 1;
2554+
repeated Encr encr = 1;
25372555
// Transform Type 2: pseudorandom functions
2538-
repeated IkeV2Prf prf = 2;
2556+
repeated Prf prf = 2;
25392557
// Transform Type 3: integrity algorithms
2540-
repeated IkeV2Integ integ = 3;
2558+
repeated Integ integ = 3;
25412559
// Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)
2542-
repeated IkeV2Ke ke = 4;
2560+
repeated Ke ke = 4;
25432561
// Specifies if an Extended Sequence Number (ESN) is used.
25442562
optional bool esn = 5;
25452563
// IKEv2 Authentication method
2546-
repeated IkeV2Auth auth = 6;
2564+
repeated Auth auth = 6;
25472565
}
25482566

25492567
// The concrete protocol type.
@@ -2552,8 +2570,12 @@ message CryptoProperties {
25522570
optional string version = 2;
25532571
// A list of cipher suites related to the protocol.
25542572
repeated CryptoProtocolCipherSuite cipherSuites = 3;
2573+
// DEPRECATED - DO NOT USE - This will be removed in a future version - Use `.ikev2TransformTypesDetailed` Instead.
2574+
// The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2, and additional properties.
2575+
optional Ikev2TransformTypes ikev2TransformTypes = 4 [deprecated = true];
25552576
// The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2, and additional properties.
2556-
optional Ikev2TransformTypes ikev2TransformTypes = 4;
2577+
// If this field is present, the deprecated field `.ikev2TransformTypes` MUST be ignored.
2578+
optional Ikev2TransformTypesDetailed ikev2TransformTypesDetailed = 7;
25572579
// The bom-ref(s) to protocol-related cryptographic assets
25582580
repeated string cryptoRef = 5;
25592581
// A list of cryptographic assets related to this component.

tools/src/test/proto/test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ function schema-breaking-version () {
5454
NEW_NP="$(mktemp)"
5555
OLD_NP="$(mktemp)"
5656

57-
# remove package identifier -> so that the comparisson works as expected
57+
# remove package identifier -> so that the comparison works as expected
5858
sed 's/^package .*//' "${ROOT_PATH}/${SCHEMA_DIR}/${NEW}" > "$NEW_NP"
5959
sed 's/^package .*//' "${ROOT_PATH}/${SCHEMA_DIR}/${OLD}" > "$OLD_NP"
6060

tools/src/test/resources/1.7/valid-cryptography-full-1.7.textproto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ components {
207207
algorithms: "sha256-ref"
208208
identifiers: "0x1303"
209209
}
210-
ikev2TransformTypes {
210+
ikev2TransformTypesDetailed {
211211
encr {
212212
name: "AES-128-GCM"
213213
keyLength: 128

0 commit comments

Comments
 (0)