aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
+}