From 410c23345788d5985a93008dd972b12c78809123 Mon Sep 17 00:00:00 2001 From: ioannanedelcu Date: Mon, 8 Apr 2024 13:39:29 -0700 Subject: Add a proto structure for the Stateless Hash-Based Digital Signature Algorithm (SLH-DSA) PiperOrigin-RevId: 622938993 --- cc/proto/experimental/pqcrypto/slh_dsa.proto | 67 ++++++++++++++++++++++++++++ proto/experimental/pqcrypto/slh_dsa.proto | 67 ++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 cc/proto/experimental/pqcrypto/slh_dsa.proto create mode 100644 proto/experimental/pqcrypto/slh_dsa.proto 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; +} -- cgit v1.2.3