blob: b8a4d7e36c974ed4d19205d9492989dfc74d60fe [file] [log] [blame]
Antonio de Angelis8908f472018-08-31 15:44:25 +01001/*
Antonio de Angelis04debbd2019-10-14 12:12:52 +01002 * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
Antonio de Angelis8908f472018-08-31 15:44:25 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
Antonio de Angelis8908f472018-08-31 15:44:25 +01007/**
Jamie Foxcc31d402019-01-28 17:13:52 +00008 * \file psa/crypto_extra.h
Antonio de Angelis8908f472018-08-31 15:44:25 +01009 *
10 * \brief PSA cryptography module: vendor extensions
Antonio de Angelis377a1552018-11-22 17:02:40 +000011 *
12 * \note This file may not be included directly. Applications must
Jamie Foxcc31d402019-01-28 17:13:52 +000013 * include psa/crypto.h.
Antonio de Angelis377a1552018-11-22 17:02:40 +000014 *
15 * This file is reserved for vendor-specific definitions.
Antonio de Angelis8908f472018-08-31 15:44:25 +010016 */
17
Antonio de Angelis377a1552018-11-22 17:02:40 +000018#ifndef PSA_CRYPTO_EXTRA_H
19#define PSA_CRYPTO_EXTRA_H
Antonio de Angelis8908f472018-08-31 15:44:25 +010020
Antonio de Angelis04debbd2019-10-14 12:12:52 +010021#include "psa/crypto_compat.h"
22
Antonio de Angelis8908f472018-08-31 15:44:25 +010023#ifdef __cplusplus
24extern "C" {
25#endif
26
Soby Mathewf5cd3692020-05-12 22:46:47 +010027/** \addtogroup crypto_types
28 * @{
29 */
30
31/** DSA public key.
32 *
33 * The import and export format is the
34 * representation of the public key `y = g^x mod p` as a big-endian byte
35 * string. The length of the byte string is the length of the base prime `p`
36 * in bytes.
37 */
Soby Mathew07ef6e42020-07-20 21:09:23 +010038#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x4002)
Soby Mathewf5cd3692020-05-12 22:46:47 +010039
40/** DSA key pair (private and public key).
41 *
42 * The import and export format is the
43 * representation of the private key `x` as a big-endian byte string. The
44 * length of the byte string is the private key size in bytes (leading zeroes
45 * are not stripped).
46 *
47 * Determinstic DSA key derivation with psa_generate_derived_key follows
48 * FIPS 186-4 §B.1.2: interpret the byte string as integer
49 * in big-endian order. Discard it if it is not in the range
50 * [0, *N* - 2] where *N* is the boundary of the private key domain
51 * (the prime *p* for Diffie-Hellman, the subprime *q* for DSA,
52 * or the order of the curve's base point for ECC).
53 * Add 1 to the resulting integer and use this as the private key *x*.
54 *
55 */
Soby Mathew07ef6e42020-07-20 21:09:23 +010056#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x7002)
Soby Mathewf5cd3692020-05-12 22:46:47 +010057
58/**@}*/
59
Antonio de Angelis8908f472018-08-31 15:44:25 +010060#ifdef __cplusplus
61}
62#endif
63
Antonio de Angelis377a1552018-11-22 17:02:40 +000064#endif /* PSA_CRYPTO_EXTRA_H */