The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 163:e59c8e839560 1 /*
AnnaBridge 163:e59c8e839560 2 * The Clear BSD License
AnnaBridge 163:e59c8e839560 3 * Copyright (c) 2016, Freescale Semiconductor, Inc.
AnnaBridge 163:e59c8e839560 4 * Copyright 2016-2017 NXP
AnnaBridge 163:e59c8e839560 5 * All rights reserved.
AnnaBridge 163:e59c8e839560 6 *
AnnaBridge 163:e59c8e839560 7 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 163:e59c8e839560 8 * are permitted (subject to the limitations in the disclaimer below) provided
AnnaBridge 163:e59c8e839560 9 * that the following conditions are met:
AnnaBridge 163:e59c8e839560 10 *
AnnaBridge 163:e59c8e839560 11 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 163:e59c8e839560 12 * of conditions and the following disclaimer.
AnnaBridge 163:e59c8e839560 13 *
AnnaBridge 163:e59c8e839560 14 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 163:e59c8e839560 15 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 163:e59c8e839560 16 * other materials provided with the distribution.
AnnaBridge 163:e59c8e839560 17 *
AnnaBridge 163:e59c8e839560 18 * o Neither the name of the copyright holder nor the names of its
AnnaBridge 163:e59c8e839560 19 * contributors may be used to endorse or promote products derived from this
AnnaBridge 163:e59c8e839560 20 * software without specific prior written permission.
AnnaBridge 163:e59c8e839560 21 *
AnnaBridge 163:e59c8e839560 22 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
AnnaBridge 163:e59c8e839560 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 163:e59c8e839560 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 163:e59c8e839560 25 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 163:e59c8e839560 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 163:e59c8e839560 27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 163:e59c8e839560 28 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 163:e59c8e839560 29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 163:e59c8e839560 30 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 163:e59c8e839560 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 163:e59c8e839560 32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 163:e59c8e839560 33 */
AnnaBridge 163:e59c8e839560 34 #ifndef _FSL_SHA_H_
AnnaBridge 163:e59c8e839560 35 #define _FSL_SHA_H_
AnnaBridge 163:e59c8e839560 36
AnnaBridge 163:e59c8e839560 37 #include "fsl_common.h"
AnnaBridge 163:e59c8e839560 38
AnnaBridge 163:e59c8e839560 39 /*!
AnnaBridge 163:e59c8e839560 40 * @addtogroup sha
AnnaBridge 163:e59c8e839560 41 * @{
AnnaBridge 163:e59c8e839560 42 */
AnnaBridge 163:e59c8e839560 43
AnnaBridge 163:e59c8e839560 44 /*! @file */
AnnaBridge 163:e59c8e839560 45
AnnaBridge 163:e59c8e839560 46 /*******************************************************************************
AnnaBridge 163:e59c8e839560 47 * Definitions
AnnaBridge 163:e59c8e839560 48 *******************************************************************************/
AnnaBridge 163:e59c8e839560 49
AnnaBridge 163:e59c8e839560 50 /*! @name Driver version */
AnnaBridge 163:e59c8e839560 51 /*@{*/
AnnaBridge 163:e59c8e839560 52 /*! @brief Defines LPC SHA driver version 2.0.0.
AnnaBridge 163:e59c8e839560 53 *
AnnaBridge 163:e59c8e839560 54 * Change log:
AnnaBridge 163:e59c8e839560 55 * - Version 2.0.0
AnnaBridge 163:e59c8e839560 56 * - initial version
AnnaBridge 163:e59c8e839560 57 */
AnnaBridge 163:e59c8e839560 58 #define FSL_SHA_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
AnnaBridge 163:e59c8e839560 59 /*@}*/
AnnaBridge 163:e59c8e839560 60
AnnaBridge 163:e59c8e839560 61 /*! Supported cryptographic block cipher functions for HASH creation */
AnnaBridge 163:e59c8e839560 62 typedef enum _sha_algo_t
AnnaBridge 163:e59c8e839560 63 {
AnnaBridge 163:e59c8e839560 64 kSHA_Sha1, /*!< SHA_1 */
AnnaBridge 163:e59c8e839560 65 kSHA_Sha256, /*!< SHA_256 */
AnnaBridge 163:e59c8e839560 66 } sha_algo_t;
AnnaBridge 163:e59c8e839560 67
AnnaBridge 163:e59c8e839560 68 /*! @brief SHA Context size. */
AnnaBridge 163:e59c8e839560 69 #define SHA_CTX_SIZE 20
AnnaBridge 163:e59c8e839560 70
AnnaBridge 163:e59c8e839560 71 /*! @brief Storage type used to save hash context. */
AnnaBridge 163:e59c8e839560 72 typedef struct _sha_ctx_t
AnnaBridge 163:e59c8e839560 73 {
AnnaBridge 163:e59c8e839560 74 uint32_t x[SHA_CTX_SIZE];
AnnaBridge 163:e59c8e839560 75 } sha_ctx_t;
AnnaBridge 163:e59c8e839560 76
AnnaBridge 163:e59c8e839560 77 /*******************************************************************************
AnnaBridge 163:e59c8e839560 78 * API
AnnaBridge 163:e59c8e839560 79 *******************************************************************************/
AnnaBridge 163:e59c8e839560 80
AnnaBridge 163:e59c8e839560 81 #if defined(__cplusplus)
AnnaBridge 163:e59c8e839560 82 extern "C" {
AnnaBridge 163:e59c8e839560 83 #endif /* __cplusplus */
AnnaBridge 163:e59c8e839560 84
AnnaBridge 163:e59c8e839560 85 /*!
AnnaBridge 163:e59c8e839560 86 * @name SHA Functional Operation
AnnaBridge 163:e59c8e839560 87 * @{
AnnaBridge 163:e59c8e839560 88 */
AnnaBridge 163:e59c8e839560 89
AnnaBridge 163:e59c8e839560 90 /*!
AnnaBridge 163:e59c8e839560 91 * @addtogroup sha_algorithm_level_api
AnnaBridge 163:e59c8e839560 92 * @{
AnnaBridge 163:e59c8e839560 93 */
AnnaBridge 163:e59c8e839560 94 /*!
AnnaBridge 163:e59c8e839560 95 * @brief Initialize HASH context
AnnaBridge 163:e59c8e839560 96 *
AnnaBridge 163:e59c8e839560 97 * This function initializes new hash context.
AnnaBridge 163:e59c8e839560 98 *
AnnaBridge 163:e59c8e839560 99 * @param base SHA peripheral base address
AnnaBridge 163:e59c8e839560 100 * @param[out] ctx Output hash context
AnnaBridge 163:e59c8e839560 101 * @param algo Underlaying algorithm to use for hash computation. Either SHA-1 or SHA-256.
AnnaBridge 163:e59c8e839560 102 * @return Status of initialization
AnnaBridge 163:e59c8e839560 103 */
AnnaBridge 163:e59c8e839560 104 status_t SHA_Init(SHA_Type *base, sha_ctx_t *ctx, sha_algo_t algo);
AnnaBridge 163:e59c8e839560 105
AnnaBridge 163:e59c8e839560 106 /*!
AnnaBridge 163:e59c8e839560 107 * @brief Add data to current HASH
AnnaBridge 163:e59c8e839560 108 *
AnnaBridge 163:e59c8e839560 109 * Add data to current HASH. This can be called repeatedly with an arbitrary amount of data to be
AnnaBridge 163:e59c8e839560 110 * hashed.
AnnaBridge 163:e59c8e839560 111 *
AnnaBridge 163:e59c8e839560 112 * @param base SHA peripheral base address
AnnaBridge 163:e59c8e839560 113 * @param[in,out] ctx HASH context
AnnaBridge 163:e59c8e839560 114 * @param message Input message
AnnaBridge 163:e59c8e839560 115 * @param messageSize Size of input message in bytes
AnnaBridge 163:e59c8e839560 116 * @return Status of the hash update operation
AnnaBridge 163:e59c8e839560 117 */
AnnaBridge 163:e59c8e839560 118 status_t SHA_Update(SHA_Type *base, sha_ctx_t *ctx, const uint8_t *message, size_t messageSize);
AnnaBridge 163:e59c8e839560 119
AnnaBridge 163:e59c8e839560 120 /*!
AnnaBridge 163:e59c8e839560 121 * @brief Finalize hashing
AnnaBridge 163:e59c8e839560 122 *
AnnaBridge 163:e59c8e839560 123 * Outputs the final hash and erases the context. SHA-1 or SHA-256 padding bits are automatically added by this
AnnaBridge 163:e59c8e839560 124 * function.
AnnaBridge 163:e59c8e839560 125 *
AnnaBridge 163:e59c8e839560 126 * @param base SHA peripheral base address
AnnaBridge 163:e59c8e839560 127 * @param[in,out] ctx HASH context
AnnaBridge 163:e59c8e839560 128 * @param[out] output Output hash data
AnnaBridge 163:e59c8e839560 129 * @param[in,out] outputSize On input, determines the size of bytes of the output array. On output, tells how many bytes
AnnaBridge 163:e59c8e839560 130 * have been written to output.
AnnaBridge 163:e59c8e839560 131 * @return Status of the hash finish operation
AnnaBridge 163:e59c8e839560 132 */
AnnaBridge 163:e59c8e839560 133 status_t SHA_Finish(SHA_Type *base, sha_ctx_t *ctx, uint8_t *output, size_t *outputSize);
AnnaBridge 163:e59c8e839560 134 /*!
AnnaBridge 163:e59c8e839560 135 *@}
AnnaBridge 163:e59c8e839560 136 */ /* sha_algorithm_level_api */
AnnaBridge 163:e59c8e839560 137
AnnaBridge 163:e59c8e839560 138 #if defined(__cplusplus)
AnnaBridge 163:e59c8e839560 139 }
AnnaBridge 163:e59c8e839560 140 #endif /* __cplusplus */
AnnaBridge 163:e59c8e839560 141
AnnaBridge 163:e59c8e839560 142 /*! @}*/
AnnaBridge 163:e59c8e839560 143 /*! @}*/ /* end of group sha */
AnnaBridge 163:e59c8e839560 144
AnnaBridge 163:e59c8e839560 145 #endif /* _FSL_SHA_H_ */