core/asn1/dme/dme_structure_raw_ecc.h (42 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
#ifndef DME_STRUCTURE_RAW_ECC_H_
#define DME_STRUCTURE_RAW_ECC_H_
#include "dme_structure.h"
#include "asn1/ecc_der_util.h"
/**
* Defines a DME structure that uses raw ECC key and ECDSA signature values, represented in
* big-endian format.
*/
struct dme_structure_raw_ecc {
struct dme_structure base; /**< Base DME structure information. */
uint8_t dme_key_der[ECC_DER_MAX_PUBLIC_LENGTH]; /**< DER encoded DME public key. */
uint8_t signature_der[ECC_DER_ECDSA_MAX_LENGTH]; /**< DER encoded ECDSA signature. */
};
int dme_structure_raw_ecc_init_sha384 (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_sha384_with_challenge (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_sha256 (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_sha256_with_challenge (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_sha512 (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_sha512_with_challenge (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_le_ecc384_with_sha512_nonce_and_challenge (
struct dme_structure_raw_ecc *dme, const uint8_t *dme_struct_data, size_t dme_struct_length,
const uint8_t *dme_key_x, const uint8_t *dme_key_y, size_t key_length,
const uint8_t *signature_r, const uint8_t *signature_s, enum hash_type sig_hash);
int dme_structure_raw_ecc_init_chained_ecc384_sha384 (struct dme_structure_raw_ecc *dme,
const uint8_t *dme_struct_data, size_t dme_struct_length, const uint8_t *dme_key_x,
const uint8_t *dme_key_y, size_t key_length, const uint8_t *signature_r,
const uint8_t *signature_s, enum hash_type sig_hash);
#endif /* DME_STRUCTURE_RAW_ECC_H_ */