// 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
//
//     https://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.

#ifndef DICE_CONFIG_COSE_KEY_CONFIG_H_
#define DICE_CONFIG_COSE_KEY_CONFIG_H_

#include <stdint.h>

// Constants per RFC 8152.
static const int64_t kCoseKeyKtyLabel = 1;
static const int64_t kCoseKeyKtyOkp = 1;
static const int64_t kCoseKeyKtyEc2 = 2;
static const int64_t kCoseKeyAlgLabel = 3;
static const int64_t kCoseKeyOpsLabel = 4;
static const int64_t kCoseKeyOpsVerify = 2;
static const int64_t kCoseKeyCrvLabel = -1;
static const int64_t kCoseKeyXLabel = -2;
static const int64_t kCoseKeyYLabel = -3;

// Constants for Ed25519 keys.
static const int64_t kCoseAlgEdDsa = -8;
static const int64_t kCoseCrvEd25519 = 6;

// Constants for ECDSA P-256/P-384 keys.
static const int64_t kCoseAlgEs256 = -7;
static const int64_t kCoseCrvP256 = 1;
static const int64_t kCoseAlgEs384 = -35;
static const int64_t kCoseCrvP384 = 2;

#endif  // DICE_CONFIG_COSE_KEY_CONFIG_H_
