Skip to content

Commit

Permalink
Submodule PKCS Repository (#20)
Browse files Browse the repository at this point in the history
* Submoduled PKCS #11 repo.

* Fix build.
  • Loading branch information
lundinc2 authored Sep 22, 2020
1 parent 9331aad commit dc35c61
Show file tree
Hide file tree
Showing 34 changed files with 823 additions and 15,554 deletions.
11 changes: 3 additions & 8 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@
[submodule "FreeRTOS-Plus/Source/FreeRTOS-Plus-PKCS/3rdparty/pkcs11"]
path = FreeRTOS-Plus/Source/FreeRTOS-Plus-PKCS/3rdparty/pkcs11
url = https://github.com/amazon-freertos/pkcs11.git
[submodule "FreeRTOS-Plus/Source/FreeRTOS-Plus-PKCS11/3rdparty/pkcs11"]
path = FreeRTOS-Plus/Source/FreeRTOS-Plus-PKCS11/3rdparty/pkcs11
url = https://github.com/amazon-freertos/pkcs11.git
branch = v2.40_errata01
[submodule "FreeRTOS-Plus/Source/FreeRTOS-Plus-PKCS11/3rdparty/mbedtls"]
path = FreeRTOS-Plus/Source/FreeRTOS-Plus-PKCS11/3rdparty/mbedtls
url = https://github.com/ARMmbed/mbedtls.git
branch = mbedtls-2.16.6
[submodule "FreeRTOS-Plus/Source/FreeRTOS-PKCS"]
path = FreeRTOS-Plus/Source/FreeRTOS-PKCS
url = https://github.com/FreeRTOS/FreeRTOS-PKCS
353 changes: 176 additions & 177 deletions FreeRTOS-Plus/Demo/FreeRTOS_Plus_PKCS11_Windows_Simulator/WIN32.vcxproj

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -193,15 +193,13 @@
*/
#define MBEDTLS_PLATFORM_MEMORY

#ifdef CONFIG_MEDTLS_USE_AFR_MEMORY
#include <stddef.h>

extern void * pvCalloc( size_t xNumElements,
size_t xSize ) ;
extern void vPortFree( void *pv );
#define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc
#define MBEDTLS_PLATFORM_FREE_MACRO vPortFree
#endif
#include <stddef.h>

extern void * pvCalloc( size_t xNumElements,
size_t xSize ) ;
extern void vPortFree( void *pv );
#define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc
#define MBEDTLS_PLATFORM_FREE_MACRO vPortFree

/**
* \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,3 +260,82 @@ CK_RV vExportPublicKey( CK_SESSION_HANDLE xSession,
}
/*-----------------------------------------------------------*/

void * pvCalloc( size_t xNumElements,
size_t xSize )
{
void * pvNew = pvPortMalloc( xNumElements * xSize );

if( NULL != pvNew )
{
memset( pvNew, 0, xNumElements * xSize );
}

return pvNew;
}
/*-----------------------------------------------------------*/

void aws_mbedtls_mutex_init( mbedtls_threading_mutex_t * mutex )
{
mutex->mutex = xSemaphoreCreateMutex();

if( mutex->mutex != NULL )
{
mutex->is_valid = 1;
}
else
{
mutex->is_valid = 0;
}
}
/*-----------------------------------------------------------*/

void aws_mbedtls_mutex_free( mbedtls_threading_mutex_t * mutex )
{
if( mutex->is_valid == 1 )
{
vSemaphoreDelete( mutex->mutex );
mutex->is_valid = 0;
}
}
/*-----------------------------------------------------------*/

int aws_mbedtls_mutex_lock( mbedtls_threading_mutex_t * mutex )
{
int ret = MBEDTLS_ERR_THREADING_BAD_INPUT_DATA;

if( mutex->is_valid == 1 )
{
if( xSemaphoreTake( mutex->mutex, portMAX_DELAY ) )
{
ret = 0;
}
else
{
ret = MBEDTLS_ERR_THREADING_MUTEX_ERROR;
}
}

return ret;
}
/*-----------------------------------------------------------*/

int aws_mbedtls_mutex_unlock( mbedtls_threading_mutex_t * mutex )
{
int ret = MBEDTLS_ERR_THREADING_BAD_INPUT_DATA;

if( mutex->is_valid == 1 )
{
if( xSemaphoreGive( mutex->mutex ) )
{
ret = 0;
}
else
{
ret = MBEDTLS_ERR_THREADING_MUTEX_ERROR;
}
}

return ret;
}
/*-----------------------------------------------------------*/

Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
#ifndef _DEMO_HELPER_FUNCTIONS_
#define _DEMO_HELPER_FUNCTIONS_

#include "iot_pkcs11.h"
#include "threading_alt.h"
#include "mbedtls/pk.h"

/* This function contains standard setup code for PKCS #11. See the
Expand Down Expand Up @@ -59,4 +61,43 @@ CK_RV vExportPublicKey( CK_SESSION_HANDLE xSession,
CK_BYTE ** ppucDerPublicKey,
CK_ULONG * pulDerPublicKeyLength );
/*-----------------------------------------------------------*/

/**
* @brief Implements libc calloc semantics using the FreeRTOS heap
*/
void * pvCalloc( size_t xNumElements,
size_t xSize );
/*-----------------------------------------------------------*/

/**
* @brief Implementation of mbedtls_mutex_init for thread-safety.
*
*/
void aws_mbedtls_mutex_init( mbedtls_threading_mutex_t * mutex );
/*-----------------------------------------------------------*/

/**
* @brief Implementation of mbedtls_mutex_free for thread-safety.
*
*/
void aws_mbedtls_mutex_free( mbedtls_threading_mutex_t * mutex );
/*-----------------------------------------------------------*/

/**
* @brief Implementation of mbedtls_mutex_lock for thread-safety.
*
* @return 0 if successful, MBEDTLS_ERR_THREADING_MUTEX_ERROR if timeout,
* MBEDTLS_ERR_THREADING_BAD_INPUT_DATA if the mutex is not valid.
*/
int aws_mbedtls_mutex_lock( mbedtls_threading_mutex_t * mutex );
/*-----------------------------------------------------------*/

/**
* @brief Implementation of mbedtls_mutex_unlock for thread-safety.
*
* @return 0 if successful, MBEDTLS_ERR_THREADING_MUTEX_ERROR if timeout,
* MBEDTLS_ERR_THREADING_BAD_INPUT_DATA if the mutex is not valid.
*/
int aws_mbedtls_mutex_unlock( mbedtls_threading_mutex_t * mutex );

#endif /* _DEMO_HELPER_FUNCTIONS_ */
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,6 @@ void vPKCS11SignVerifyDemo( void )


/********************************* Verify **********************************/

/* Verify the signature created by C_Sign. First we will verify that the
* same Cryptoki library was able to trust itself.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,49 @@
*/

/**
* @file aws_pkcs11_config.h
* @file iot_pkcs11_config.h
* @brief PCKS#11 config options.
*/


#ifndef _AWS_PKCS11_CONFIG_H_
#define _AWS_PKCS11_CONFIG_H_
#ifndef _IOT_PKCS11_CONFIG_H_
#define _IOT_PKCS11_CONFIG_H_

#include "FreeRTOS.h"

/**************************************************/
/******* DO NOT CHANGE the following order ********/
/**************************************************/

/* Include logging header files and define logging macros in the following order:
* 1. Include the header file "logging_levels.h".
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
* the logging configuration for PKCS #11.
* 3. Include the header file "logging_stack.h", if logging is enabled for PKCS #11.
*/

#include "logging_levels.h"

/* Logging configuration for the PKCS #11 library. */
#ifndef LIBRARY_LOG_NAME
#define LIBRARY_LOG_NAME "PKCS11"
#endif

#ifndef LIBRARY_LOG_LEVEL
#define LIBRARY_LOG_LEVEL LOG_ERROR
#endif

#include "logging_stack.h"

/**
* @brief Malloc API used by iot_pkcs11.h
*/
#define PKCS11_MALLOC pvPortMalloc

/**
* @brief Free API used by iot_pkcs11.h
*/
#define PKCS11_FREE vPortFree

/**
* @brief PKCS #11 default user PIN.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* Logging Level Macros
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

/**
* @file logging_levels.h
* @brief Defines the logging level macros.
*/

#ifndef LOGGING_LEVELS_H_
#define LOGGING_LEVELS_H_

/**
* @constantspage{logging,logging library}
*
* @section logging_constants_levels Log levels
* @brief Log levels for the libraries in this SDK.
*
* Each library should specify a log level by setting @ref LIBRARY_LOG_LEVEL.
* All log messages with a level at or below the specified level will be printed
* for that library.
*
* Currently, there are 4 log levels. In the order of lowest to highest, they are:
* - #LOG_NONE <br>
* @copybrief LOG_NONE
* - #LOG_ERROR <br>
* @copybrief LOG_ERROR
* - #LOG_WARN <br>
* @copybrief LOG_WARN
* - #LOG_INFO <br>
* @copybrief LOG_INFO
* - #LOG_DEBUG <br>
* @copybrief LOG_DEBUG
*/

/**
* @brief No log messages.
*
* When @ref LIBRARY_LOG_LEVEL is #LOG_NONE, logging is disabled and no
* logging messages are printed.
*/
#define LOG_NONE 0

/**
* @brief Represents erroneous application state or event.
*
* These messages describe the situations when a library encounters an error from
* which it cannot recover.
*
* These messages are printed when @ref LIBRARY_LOG_LEVEL is defined as either
* of #LOG_ERROR, #LOG_WARN, #LOG_INFO or #LOG_DEBUG.
*/
#define LOG_ERROR 1

/**
* @brief Message about an abnormal event.
*
* These messages describe the situations when a library encounters
* abnormal event that may be indicative of an error. Libraries continue
* execution after logging a warning.
*
* These messages are printed when @ref LIBRARY_LOG_LEVEL is defined as either
* of #LOG_WARN, #LOG_INFO or #LOG_DEBUG.
*/
#define LOG_WARN 2

/**
* @brief A helpful, informational message.
*
* These messages describe normal execution of a library. They provide
* the progress of the program at a coarse-grained level.
*
* These messages are printed when @ref LIBRARY_LOG_LEVEL is defined as either
* of #LOG_INFO or #LOG_DEBUG.
*/
#define LOG_INFO 3

/**
* @brief Detailed and excessive debug information.
*
* Debug log messages are used to provide the
* progress of the program at a fine-grained level. These are mostly used
* for debugging and may contain excessive information such as internal
* variables, buffers, or other specific information.
*
* These messages are only printed when @ref LIBRARY_LOG_LEVEL is defined as
* #LOG_DEBUG.
*/
#define LOG_DEBUG 4

#endif /* ifndef LOGGING_LEVELS_H_ */
Loading

0 comments on commit dc35c61

Please sign in to comment.