Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mbed_trng.cpp Source File

mbed_trng.cpp

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2016 ARM Limited
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #if DEVICE_TRNG
00018 
00019 #include "hal/trng_api.h"
00020 #include "platform/SingletonPtr.h"
00021 #include "platform/PlatformMutex.h"
00022 
00023 SingletonPtr<PlatformMutex>  mbedtls_mutex;
00024 
00025 extern "C"
00026 int mbedtls_hardware_poll( void *data, unsigned char *output, size_t len, size_t *olen ) {
00027     trng_t trng_obj;
00028     mbedtls_mutex->lock();
00029     trng_init(&trng_obj);
00030     int ret = trng_get_bytes(&trng_obj, output, len, olen);
00031     trng_free(&trng_obj);
00032     mbedtls_mutex->unlock();
00033     return ret;
00034 }
00035 
00036 #endif