1 /******************************************************************************
2 *  Filename:       pka_doc.h
3 *  Revised:        2020-09-14 11:11:23 +0200 (Mon, 14 Sep 2020)
4 *  Revision:       58613
5 *
6 *  Copyright (c) 2015 - 2020, Texas Instruments Incorporated
7 *  All rights reserved.
8 *
9 *  Redistribution and use in source and binary forms, with or without
10 *  modification, are permitted provided that the following conditions are met:
11 *
12 *  1) Redistributions of source code must retain the above copyright notice,
13 *     this list of conditions and the following disclaimer.
14 *
15 *  2) Redistributions in binary form must reproduce the above copyright notice,
16 *     this list of conditions and the following disclaimer in the documentation
17 *     and/or other materials provided with the distribution.
18 *
19 *  3) Neither the name of the ORGANIZATION nor the names of its contributors may
20 *     be used to endorse or promote products derived from this software without
21 *     specific prior written permission.
22 *
23 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 *  POSSIBILITY OF SUCH DAMAGE.
34 *
35 ******************************************************************************/
36 //! \addtogroup pka_api
37 //! @{
38 //! \section sec_pka Introduction
39 //!
40 //! The PKA (Public Key Accelerator) API provides access to the Large Number
41 //! Engine (LNME). The LNME allows for efficient math operations on numbers
42 //! larger than those that fit within the ALU of the system CPU. It is significantly faster
43 //! to perform these operations using the LNME than implementing the same
44 //! functionality in software using regular word-wise math operations. While the
45 //! LNME runs in the background, the system CPU may perform other operations
46 //! or be turned off.
47 //!
48 //! The LNME supports both primitive math operations and serialized primitive
49 //! operations (sequencer operations).
50 //!     - Addition
51 //!     - Multiplication
52 //!     - Comparison
53 //!     - Modulo
54 //!     - Inverse Modulo
55 //!     - ECC Point Addition (including point doubling)
56 //!     - ECC Scalar Multiplication
57 //!
58 //! These primitives and sequencer operations can be used to implement various
59 //! public key encryption schemes.
60 //! It is possible to implement the following schemes using the operations mentioned above:
61 //!     - RSA encryption and decryption
62 //!     - RSA sign and verify
63 //!     - DHE (Diffie-Hellman Key Exchange)
64 //!     - ECDH (Elliptic Curve Diffie-Hellman Key Exchange)
65 //!     - ECDSA (Elliptic Curve Digital Signature Algorithm)
66 //!     - ECIES (Elliptic Curve Integrated Encryption Scheme)
67 //!
68 //! The DriverLib PKA functions copy the relevant parameters into the dedicated
69 //! PKA RAM. The LNME requires these parameters be present and correctly
70 //! formatted in the PKA RAM and not system RAM. They are copied word-wise as
71 //! the PKA RAM does not support byte-wise access. The CPU handles the alignment differences
72 //! during the memory copy operation. Forcing buffer alignment in system RAM results
73 //! in a significant speedup of the copy operation compared to unaligned buffers.
74 //!
75 //! When the operation completes, the result is copied back into
76 //! a buffer in system RAM specified by the application. The PKA RAM is then cleared
77 //! to prevent sensitive keying material from remaining in PKA RAM.
78 //!
79 //!
80 //! @}
81