blob: fc908d908d60b9a5ee8ad729aba25b769458cd0b [file] [log] [blame]
Julian Halla7e76c82021-04-14 11:12:11 +01001/*
2 * Copyright (c) 2018-2021, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7/**
8 * \file psa/crypto_extra.h
9 *
10 * \brief PSA cryptography module: vendor extensions
11 *
12 * \note This file may not be included directly. Applications must
13 * include psa/crypto.h.
14 *
15 * This file is reserved for vendor-specific definitions.
16 */
17
18#ifndef PSA_CRYPTO_EXTRA_H
19#define PSA_CRYPTO_EXTRA_H
20
21#include "psa/crypto_compat.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/** \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 */
38#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x4002)
39
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 */
56#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x7002)
57
58/**@}*/
59
60#ifdef __cplusplus
61}
62#endif
63
64#endif /* PSA_CRYPTO_EXTRA_H */