• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  *  Constant-time functions
3  */
4 /*
5  *  Copyright The Mbed TLS Contributors
6  *  SPDX-License-Identifier: Apache-2.0
7  *
8  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
9  *  not use this file except in compliance with the License.
10  *  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  *  Unless required by applicable law or agreed to in writing, software
15  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  *  See the License for the specific language governing permissions and
18  *  limitations under the License.
19  */
20 
21 #ifndef MBEDTLS_CONSTANT_TIME_H
22 #define MBEDTLS_CONSTANT_TIME_H
23 
24 #include <stddef.h>
25 
26 
27 /** Constant-time buffer comparison without branches.
28  *
29  * This is equivalent to the standard memcmp function, but is likely to be
30  * compiled to code using bitwise operation rather than a branch.
31  *
32  * This function can be used to write constant-time code by replacing branches
33  * with bit operations using masks.
34  *
35  * \param a     Pointer to the first buffer.
36  * \param b     Pointer to the second buffer.
37  * \param n     The number of bytes to compare in the buffer.
38  *
39  * \return      Zero if the content of the two buffer is the same,
40  *              otherwise non-zero.
41  */
42 int mbedtls_ct_memcmp(const void *a,
43                       const void *b,
44                       size_t n);
45 
46 #endif /* MBEDTLS_CONSTANT_TIME_H */
47