1 /*
2  * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #include "its_utils.h"
9 
its_utils_check_contained_in(size_t superset_size,size_t subset_offset,size_t subset_size)10 psa_status_t its_utils_check_contained_in(size_t superset_size,
11                                           size_t subset_offset,
12                                           size_t subset_size)
13 {
14     /* Check that subset_offset is valid */
15     if (subset_offset > superset_size) {
16         return PSA_ERROR_INVALID_ARGUMENT;
17     }
18 
19     /* Check that subset_offset + subset_size fits in superset_size.
20      * The previous check passed, so we know that subset_offset <= superset_size
21      * and so the right hand side of the inequality cannot underflow.
22      */
23     if (subset_size > (superset_size - subset_offset)) {
24         return PSA_ERROR_INVALID_ARGUMENT;
25     }
26 
27     return PSA_SUCCESS;
28 }
29 
its_utils_validate_fid(const uint8_t * fid)30 psa_status_t its_utils_validate_fid(const uint8_t *fid)
31 {
32     uint32_t fid_size = ITS_FILE_ID_SIZE;
33 
34     /* A file ID is valid if it is non-zero */
35     while (fid_size--) {
36         if (*fid++) {
37             return PSA_SUCCESS;
38         }
39     }
40 
41     return PSA_ERROR_DOES_NOT_EXIST;
42 }
43