aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorioannanedelcu <ioannanedelcu@google.com>2024-04-08 13:39:29 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-08 13:40:55 -0700
commit410c23345788d5985a93008dd972b12c78809123 (patch)
tree690af4e02f1aa880e9972471cb07c9026bc91113
parent5b5162b09ca7dc39be7a61da70b16b4257b6f786 (diff)
downloadtink-410c23345788d5985a93008dd972b12c78809123.tar.gz
Add a proto structure for the Stateless Hash-Based Digital Signature Algorithm (SLH-DSA)
PiperOrigin-RevId: 622938993
-rw-r--r--cc/proto/experimental/pqcrypto/slh_dsa.proto67
-rw-r--r--proto/experimental/pqcrypto/slh_dsa.proto67
2 files changed, 134 insertions, 0 deletions
diff --git a/cc/proto/experimental/pqcrypto/slh_dsa.proto b/cc/proto/experimental/pqcrypto/slh_dsa.proto
new file mode 100644
index 000000000..b3768c64c
--- /dev/null
+++ b/cc/proto/experimental/pqcrypto/slh_dsa.proto
@@ -0,0 +1,67 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+///////////////////////////////////////////////////////////////////////////////
+syntax = "proto3";
+
+package google.crypto.tink;
+
+enum SlhDsaHashType {
+ SLH_DSA_HASH_TYPE_UNSPECIFIED = 0;
+ SHA2 = 1;
+ SHAKE = 2;
+}
+
+enum SlhDsaSignatureType {
+ SLH_DSA_SIGNATURE_TYPE_UNSPECIFIED = 0;
+ FAST_SIGNING = 1;
+ SMALL_SIGNATURE = 2;
+}
+
+// Protos for the Stateless Hash-Based Digital Signature Algorithm
+// https://csrc.nist.gov/pubs/fips/205/ipd
+message SlhDsaParams {
+ // Required
+ int32 key_size = 1;
+ // Required.
+ SlhDsaHashType hash_type = 2;
+ // Required.
+ SlhDsaSignatureType sig_type = 3;
+}
+
+message SlhDsaKeyFormat {
+ uint32 version = 1;
+ // Required.
+ SlhDsaParams params = 2;
+}
+
+// key_type: type.googleapis.com/google.crypto.tink.SlhDsaPublicKey
+message SlhDsaPublicKey {
+ // Required.
+ uint32 version = 1;
+ // Required.
+ bytes key_value = 2;
+ // Required
+ SlhDsaParams params = 3;
+}
+
+// key_type: type.googleapis.com/google.crypto.tink.SlhDsaPrivateKey
+message SlhDsaPrivateKey {
+ // Required.
+ uint32 version = 1;
+ // Required.
+ bytes key_value = 2;
+ // Required. The corresponding public key.
+ SlhDsaPublicKey public_key = 3;
+}
diff --git a/proto/experimental/pqcrypto/slh_dsa.proto b/proto/experimental/pqcrypto/slh_dsa.proto
new file mode 100644
index 000000000..b3768c64c
--- /dev/null
+++ b/proto/experimental/pqcrypto/slh_dsa.proto
@@ -0,0 +1,67 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+///////////////////////////////////////////////////////////////////////////////
+syntax = "proto3";
+
+package google.crypto.tink;
+
+enum SlhDsaHashType {
+ SLH_DSA_HASH_TYPE_UNSPECIFIED = 0;
+ SHA2 = 1;
+ SHAKE = 2;
+}
+
+enum SlhDsaSignatureType {
+ SLH_DSA_SIGNATURE_TYPE_UNSPECIFIED = 0;
+ FAST_SIGNING = 1;
+ SMALL_SIGNATURE = 2;
+}
+
+// Protos for the Stateless Hash-Based Digital Signature Algorithm
+// https://csrc.nist.gov/pubs/fips/205/ipd
+message SlhDsaParams {
+ // Required
+ int32 key_size = 1;
+ // Required.
+ SlhDsaHashType hash_type = 2;
+ // Required.
+ SlhDsaSignatureType sig_type = 3;
+}
+
+message SlhDsaKeyFormat {
+ uint32 version = 1;
+ // Required.
+ SlhDsaParams params = 2;
+}
+
+// key_type: type.googleapis.com/google.crypto.tink.SlhDsaPublicKey
+message SlhDsaPublicKey {
+ // Required.
+ uint32 version = 1;
+ // Required.
+ bytes key_value = 2;
+ // Required
+ SlhDsaParams params = 3;
+}
+
+// key_type: type.googleapis.com/google.crypto.tink.SlhDsaPrivateKey
+message SlhDsaPrivateKey {
+ // Required.
+ uint32 version = 1;
+ // Required.
+ bytes key_value = 2;
+ // Required. The corresponding public key.
+ SlhDsaPublicKey public_key = 3;
+}