Skip to content

Commit ec80409

Browse files
Vge0rgecarlescufi
authored andcommitted
ext: oberon: Align with the Oberon deliverables
This aligns the Oberon PSA core and driver code with the Oberon deliverables. All the modified files don't have any functional change, it's only code structure changes. There are two new files, the sha256.h and the memory_buffer_alloc.h. These were added to align with the deliverable and they should not make any difference since they are identical to the same files in sdk-mbedtls. Ref: NCSDK-24707 Signed-off-by: Georgios Vasilakis <georgios.vasilakis@nordicsemi.no>
1 parent d1fec50 commit ec80409

31 files changed

+1764
-1394
lines changed

ext/oberon/psa/core/include/mbedtls/ecp.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,6 @@ mbedtls_ecp_group;
306306
#endif /* MBEDTLS_ECP_ALT */
307307

308308
#if !defined(MBEDTLS_ECP_MAX_BITS)
309-
310309
/**
311310
* The maximum size of the groups, that is, of \c N and \c P.
312311
*/
@@ -344,8 +343,7 @@ mbedtls_ecp_group;
344343
#else
345344
#error "Missing definition of MBEDTLS_ECP_MAX_BITS"
346345
#endif
347-
348-
#endif /* !defined(MBEDTLS_ECP_MAX_BITS) */
346+
#endif
349347

350348
#define MBEDTLS_ECP_MAX_BYTES ( ( MBEDTLS_ECP_MAX_BITS + 7 ) / 8 )
351349
#define MBEDTLS_ECP_MAX_PT_LEN ( 2 * MBEDTLS_ECP_MAX_BYTES + 1 )
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
/**
2+
* \file memory_buffer_alloc.h
3+
*
4+
* \brief Buffer-based memory allocator
5+
*/
6+
/*
7+
* Copyright The Mbed TLS Contributors
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
11+
* not use this file except in compliance with the License.
12+
* You may obtain a copy of the License at
13+
*
14+
* http://www.apache.org/licenses/LICENSE-2.0
15+
*
16+
* Unless required by applicable law or agreed to in writing, software
17+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19+
* See the License for the specific language governing permissions and
20+
* limitations under the License.
21+
*/
22+
#ifndef MBEDTLS_MEMORY_BUFFER_ALLOC_H
23+
#define MBEDTLS_MEMORY_BUFFER_ALLOC_H
24+
25+
#include "mbedtls/build_info.h"
26+
27+
#include <stddef.h>
28+
29+
/**
30+
* \name SECTION: Module settings
31+
*
32+
* The configuration options you can set for this module are in this section.
33+
* Either change them in mbedtls_config.h or define them on the compiler command line.
34+
* \{
35+
*/
36+
37+
#if !defined(MBEDTLS_MEMORY_ALIGN_MULTIPLE)
38+
#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */
39+
#endif
40+
41+
/** \} name SECTION: Module settings */
42+
43+
#define MBEDTLS_MEMORY_VERIFY_NONE 0
44+
#define MBEDTLS_MEMORY_VERIFY_ALLOC (1 << 0)
45+
#define MBEDTLS_MEMORY_VERIFY_FREE (1 << 1)
46+
#define MBEDTLS_MEMORY_VERIFY_ALWAYS (MBEDTLS_MEMORY_VERIFY_ALLOC | MBEDTLS_MEMORY_VERIFY_FREE)
47+
48+
#ifdef __cplusplus
49+
extern "C" {
50+
#endif
51+
52+
/**
53+
* \brief Initialize use of stack-based memory allocator.
54+
* The stack-based allocator does memory management inside the
55+
* presented buffer and does not call calloc() and free().
56+
* It sets the global mbedtls_calloc() and mbedtls_free() pointers
57+
* to its own functions.
58+
* (Provided mbedtls_calloc() and mbedtls_free() are thread-safe if
59+
* MBEDTLS_THREADING_C is defined)
60+
*
61+
* \note This code is not optimized and provides a straight-forward
62+
* implementation of a stack-based memory allocator.
63+
*
64+
* \param buf buffer to use as heap
65+
* \param len size of the buffer
66+
*/
67+
void mbedtls_memory_buffer_alloc_init( unsigned char *buf, size_t len );
68+
69+
/**
70+
* \brief Free the mutex for thread-safety and clear remaining memory
71+
*/
72+
void mbedtls_memory_buffer_alloc_free( void );
73+
74+
/**
75+
* \brief Determine when the allocator should automatically verify the state
76+
* of the entire chain of headers / meta-data.
77+
* (Default: MBEDTLS_MEMORY_VERIFY_NONE)
78+
*
79+
* \param verify One of MBEDTLS_MEMORY_VERIFY_NONE, MBEDTLS_MEMORY_VERIFY_ALLOC,
80+
* MBEDTLS_MEMORY_VERIFY_FREE or MBEDTLS_MEMORY_VERIFY_ALWAYS
81+
*/
82+
void mbedtls_memory_buffer_set_verify( int verify );
83+
84+
#if defined(MBEDTLS_MEMORY_DEBUG)
85+
/**
86+
* \brief Print out the status of the allocated memory (primarily for use
87+
* after a program should have de-allocated all memory)
88+
* Prints out a list of 'still allocated' blocks and their stack
89+
* trace if MBEDTLS_MEMORY_BACKTRACE is defined.
90+
*/
91+
void mbedtls_memory_buffer_alloc_status( void );
92+
93+
/**
94+
* \brief Get the number of alloc/free so far.
95+
*
96+
* \param alloc_count Number of allocations.
97+
* \param free_count Number of frees.
98+
*/
99+
void mbedtls_memory_buffer_alloc_count_get( size_t *alloc_count, size_t *free_count );
100+
101+
/**
102+
* \brief Get the peak heap usage so far
103+
*
104+
* \param max_used Peak number of bytes in use or committed. This
105+
* includes bytes in allocated blocks too small to split
106+
* into smaller blocks but larger than the requested size.
107+
* \param max_blocks Peak number of blocks in use, including free and used
108+
*/
109+
void mbedtls_memory_buffer_alloc_max_get( size_t *max_used, size_t *max_blocks );
110+
111+
/**
112+
* \brief Reset peak statistics
113+
*/
114+
void mbedtls_memory_buffer_alloc_max_reset( void );
115+
116+
/**
117+
* \brief Get the current heap usage
118+
*
119+
* \param cur_used Current number of bytes in use or committed. This
120+
* includes bytes in allocated blocks too small to split
121+
* into smaller blocks but larger than the requested size.
122+
* \param cur_blocks Current number of blocks in use, including free and used
123+
*/
124+
void mbedtls_memory_buffer_alloc_cur_get( size_t *cur_used, size_t *cur_blocks );
125+
#endif /* MBEDTLS_MEMORY_DEBUG */
126+
127+
/**
128+
* \brief Verifies that all headers in the memory buffer are correct
129+
* and contain sane values. Helps debug buffer-overflow errors.
130+
*
131+
* Prints out first failure if MBEDTLS_MEMORY_DEBUG is defined.
132+
* Prints out full header information if MBEDTLS_MEMORY_DEBUG
133+
* is defined. (Includes stack trace information for each block if
134+
* MBEDTLS_MEMORY_BACKTRACE is defined as well).
135+
*
136+
* \return 0 if verified, 1 otherwise
137+
*/
138+
int mbedtls_memory_buffer_alloc_verify( void );
139+
140+
#if defined(MBEDTLS_SELF_TEST)
141+
/**
142+
* \brief Checkup routine
143+
*
144+
* \return 0 if successful, or 1 if a test failed
145+
*/
146+
int mbedtls_memory_buffer_alloc_self_test( int verbose );
147+
#endif
148+
149+
#ifdef __cplusplus
150+
}
151+
#endif
152+
153+
#endif /* memory_buffer_alloc.h */
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
/**
2+
* \file sha256.h
3+
*
4+
* \brief This file contains SHA-224 and SHA-256 definitions and functions.
5+
*
6+
* The Secure Hash Algorithms 224 and 256 (SHA-224 and SHA-256) cryptographic
7+
* hash functions are defined in <em>FIPS 180-4: Secure Hash Standard (SHS)</em>.
8+
*/
9+
/*
10+
* Copyright The Mbed TLS Contributors
11+
* SPDX-License-Identifier: Apache-2.0
12+
*
13+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
14+
* not use this file except in compliance with the License.
15+
* You may obtain a copy of the License at
16+
*
17+
* http://www.apache.org/licenses/LICENSE-2.0
18+
*
19+
* Unless required by applicable law or agreed to in writing, software
20+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
21+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22+
* See the License for the specific language governing permissions and
23+
* limitations under the License.
24+
*/
25+
#ifndef MBEDTLS_SHA256_H
26+
#define MBEDTLS_SHA256_H
27+
#include "mbedtls/private_access.h"
28+
29+
#include "mbedtls/build_info.h"
30+
31+
#include <stddef.h>
32+
#include <stdint.h>
33+
34+
/** SHA-256 input data was malformed. */
35+
#define MBEDTLS_ERR_SHA256_BAD_INPUT_DATA -0x0074
36+
37+
#ifdef __cplusplus
38+
extern "C" {
39+
#endif
40+
41+
#if !defined(MBEDTLS_SHA256_ALT)
42+
// Regular implementation
43+
//
44+
45+
/**
46+
* \brief The SHA-256 context structure.
47+
*
48+
* The structure is used both for SHA-256 and for SHA-224
49+
* checksum calculations. The choice between these two is
50+
* made in the call to mbedtls_sha256_starts().
51+
*/
52+
typedef struct mbedtls_sha256_context
53+
{
54+
uint32_t MBEDTLS_PRIVATE(total)[2]; /*!< The number of Bytes processed. */
55+
uint32_t MBEDTLS_PRIVATE(state)[8]; /*!< The intermediate digest state. */
56+
unsigned char MBEDTLS_PRIVATE(buffer)[64]; /*!< The data block being processed. */
57+
int MBEDTLS_PRIVATE(is224); /*!< Determines which function to use:
58+
0: Use SHA-256, or 1: Use SHA-224. */
59+
}
60+
mbedtls_sha256_context;
61+
62+
#else /* MBEDTLS_SHA256_ALT */
63+
#include "sha256_alt.h"
64+
#endif /* MBEDTLS_SHA256_ALT */
65+
66+
/**
67+
* \brief This function initializes a SHA-256 context.
68+
*
69+
* \param ctx The SHA-256 context to initialize. This must not be \c NULL.
70+
*/
71+
void mbedtls_sha256_init( mbedtls_sha256_context *ctx );
72+
73+
/**
74+
* \brief This function clears a SHA-256 context.
75+
*
76+
* \param ctx The SHA-256 context to clear. This may be \c NULL, in which
77+
* case this function returns immediately. If it is not \c NULL,
78+
* it must point to an initialized SHA-256 context.
79+
*/
80+
void mbedtls_sha256_free( mbedtls_sha256_context *ctx );
81+
82+
/**
83+
* \brief This function clones the state of a SHA-256 context.
84+
*
85+
* \param dst The destination context. This must be initialized.
86+
* \param src The context to clone. This must be initialized.
87+
*/
88+
void mbedtls_sha256_clone( mbedtls_sha256_context *dst,
89+
const mbedtls_sha256_context *src );
90+
91+
/**
92+
* \brief This function starts a SHA-224 or SHA-256 checksum
93+
* calculation.
94+
*
95+
* \param ctx The context to use. This must be initialized.
96+
* \param is224 This determines which function to use. This must be
97+
* either \c 0 for SHA-256, or \c 1 for SHA-224.
98+
*
99+
* \return \c 0 on success.
100+
* \return A negative error code on failure.
101+
*/
102+
int mbedtls_sha256_starts( mbedtls_sha256_context *ctx, int is224 );
103+
104+
/**
105+
* \brief This function feeds an input buffer into an ongoing
106+
* SHA-256 checksum calculation.
107+
*
108+
* \param ctx The SHA-256 context. This must be initialized
109+
* and have a hash operation started.
110+
* \param input The buffer holding the data. This must be a readable
111+
* buffer of length \p ilen Bytes.
112+
* \param ilen The length of the input data in Bytes.
113+
*
114+
* \return \c 0 on success.
115+
* \return A negative error code on failure.
116+
*/
117+
int mbedtls_sha256_update( mbedtls_sha256_context *ctx,
118+
const unsigned char *input,
119+
size_t ilen );
120+
121+
/**
122+
* \brief This function finishes the SHA-256 operation, and writes
123+
* the result to the output buffer.
124+
*
125+
* \param ctx The SHA-256 context. This must be initialized
126+
* and have a hash operation started.
127+
* \param output The SHA-224 or SHA-256 checksum result.
128+
* This must be a writable buffer of length \c 32 bytes
129+
* for SHA-256, \c 28 bytes for SHA-224.
130+
*
131+
* \return \c 0 on success.
132+
* \return A negative error code on failure.
133+
*/
134+
int mbedtls_sha256_finish( mbedtls_sha256_context *ctx,
135+
unsigned char *output );
136+
137+
/**
138+
* \brief This function processes a single data block within
139+
* the ongoing SHA-256 computation. This function is for
140+
* internal use only.
141+
*
142+
* \param ctx The SHA-256 context. This must be initialized.
143+
* \param data The buffer holding one block of data. This must
144+
* be a readable buffer of length \c 64 Bytes.
145+
*
146+
* \return \c 0 on success.
147+
* \return A negative error code on failure.
148+
*/
149+
int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx,
150+
const unsigned char data[64] );
151+
152+
/**
153+
* \brief This function calculates the SHA-224 or SHA-256
154+
* checksum of a buffer.
155+
*
156+
* The function allocates the context, performs the
157+
* calculation, and frees the context.
158+
*
159+
* The SHA-256 result is calculated as
160+
* output = SHA-256(input buffer).
161+
*
162+
* \param input The buffer holding the data. This must be a readable
163+
* buffer of length \p ilen Bytes.
164+
* \param ilen The length of the input data in Bytes.
165+
* \param output The SHA-224 or SHA-256 checksum result.
166+
* This must be a writable buffer of length \c 32 bytes
167+
* for SHA-256, \c 28 bytes for SHA-224.
168+
* \param is224 Determines which function to use. This must be
169+
* either \c 0 for SHA-256, or \c 1 for SHA-224.
170+
*
171+
* \return \c 0 on success.
172+
* \return A negative error code on failure.
173+
*/
174+
int mbedtls_sha256( const unsigned char *input,
175+
size_t ilen,
176+
unsigned char *output,
177+
int is224 );
178+
179+
#if defined(MBEDTLS_SELF_TEST)
180+
181+
/**
182+
* \brief The SHA-224 and SHA-256 checkup routine.
183+
*
184+
* \return \c 0 on success.
185+
* \return \c 1 on failure.
186+
*/
187+
int mbedtls_sha256_self_test( int verbose );
188+
189+
#endif /* MBEDTLS_SELF_TEST */
190+
191+
#ifdef __cplusplus
192+
}
193+
#endif
194+
195+
#endif /* mbedtls_sha256.h */

ext/oberon/psa/core/include/psa/crypto_config.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,9 @@
120120
#define PSA_USE_HMAC_DRBG_DRIVER 1
121121

122122
/* Hardware driver demonstration */
123-
#define PSA_USE_DEMO_ENTROPY_DRIVER 1
124-
// #define PSA_USE_DEMO_HARDWARE_DRIVER 1
125-
#define PSA_USE_DEMO_OPAQUE_DRIVER 1
123+
#define PSA_USE_DEMO_ENTROPY_DRIVER 1
124+
//#define PSA_USE_DEMO_HARDWARE_DRIVER 1
125+
#define PSA_USE_DEMO_OPAQUE_DRIVER 1
126+
126127

127128
#endif /* PSA_CRYPTO_CONFIG_H */

ext/oberon/psa/core/include/psa/crypto_sizes.h

-2
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@
197197
/* The maximum size of an ECC key on this implementation, in bits.
198198
* This is a vendor-specific macro. */
199199
#ifndef PSA_VENDOR_ECC_MAX_CURVE_BITS
200-
201200
#if defined(PSA_WANT_ECC_SECP_R1_521) /*!!OM*/
202201
#define PSA_VENDOR_ECC_MAX_CURVE_BITS 521
203202
#elif defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512)
@@ -231,7 +230,6 @@
231230
#else
232231
#define PSA_VENDOR_ECC_MAX_CURVE_BITS 0
233232
#endif
234-
235233
#endif
236234

237235
/** This macro returns the maximum supported length of the PSK for the

0 commit comments

Comments
 (0)