Add a utils.h file that contains common functions

The new header contains common information across various mbed TLS
modules and avoids code duplication. To start, utils.h currently only
contains the mbedtls_zeroize() function.
This commit is contained in:
Andres Amaya Garcia 2017-10-24 21:27:43 +01:00 committed by Andres Amaya Garcia
parent 4ca9a45756
commit 614d9c0667
4 changed files with 75 additions and 1 deletions

39
include/mbedtls/utils.h Normal file
View File

@ -0,0 +1,39 @@
/**
* \file utils.h
*
* \brief mbed TLS utility functions
*
* Copyright (C) 2017, ARM Limited, All Rights Reserved
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* This file is part of mbed TLS (https://tls.mbed.org)
*/
#ifndef MBEDTLS_UTILS_H
#define MBEDTLS_UTILS_H
#include <stddef.h>
/**
* \brief Securely zeroize a buffer
*
* \param buf Buffer to be zeroized
* \param len Length of the buffer in bytes
*
* \note This implementation should never be optimized out by the
* compiler
*/
void mbedtls_zeroize( void *buf, size_t len );
#endif /* MBEDTLS_UTILS_H */

View File

@ -57,6 +57,7 @@ set(src_crypto
version.c version.c
version_features.c version_features.c
xtea.c xtea.c
utils.c
) )
set(src_x509 set(src_x509

View File

@ -65,7 +65,8 @@ OBJS_CRYPTO= aes.o aesni.o arc4.o \
ripemd160.o rsa_internal.o rsa.o \ ripemd160.o rsa_internal.o rsa.o \
sha1.o sha256.o sha512.o \ sha1.o sha256.o sha512.o \
threading.o timing.o version.o \ threading.o timing.o version.o \
version_features.o xtea.o version_features.o xtea.o \
utils.o
OBJS_X509= certs.o pkcs11.o x509.o \ OBJS_X509= certs.o pkcs11.o x509.o \
x509_create.o x509_crl.o x509_crt.o \ x509_create.o x509_crl.o x509_crt.o \

33
library/utils.c Normal file
View File

@ -0,0 +1,33 @@
/*
* mbedtls utility functions
*
* Copyright (C) 2017, ARM Limited, All Rights Reserved
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* This file is part of mbed TLS (https://tls.mbed.org)
*/
#include "mbedtls/utils.h"
#include <stddef.h>
/* This implementation should never be optimized out by the compiler */
void mbedtls_zeroize( void *buf, size_t len )
{
volatile unsigned char *p = (unsigned char *)buf;
while( len-- )
*p++ = 0;
}