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