| @@ -22,27 +22,27 @@ | | | @@ -22,27 +22,27 @@ |
22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | | 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | | 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | | 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
25 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | | 25 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
26 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | | 26 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
27 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | | 27 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
28 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | | 28 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
29 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | 29 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
30 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | 30 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
31 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | | 31 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
32 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | 32 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
33 | */ | | 33 | */ |
34 | | | 34 | |
35 | static char const n8_id[] = "$Id: n8_rsa.c,v 1.1 2008/10/30 12:02:15 darran Exp $"; | | 35 | static char const n8_id[] = "$Id: n8_rsa.c,v 1.2 2016/03/06 19:42:25 christos Exp $"; |
36 | /*****************************************************************************/ | | 36 | /*****************************************************************************/ |
37 | /** @file n8_rsa.c | | 37 | /** @file n8_rsa.c |
38 | * @brief Public RSA functions. | | 38 | * @brief Public RSA functions. |
39 | * | | 39 | * |
40 | * Implementation of all public RSA functions. | | 40 | * Implementation of all public RSA functions. |
41 | * | | 41 | * |
42 | *****************************************************************************/ | | 42 | *****************************************************************************/ |
43 | | | 43 | |
44 | /***************************************************************************** | | 44 | /***************************************************************************** |
45 | * Revision history: | | 45 | * Revision history: |
46 | * DON'T FORGET TO MAKE YOUR CHANGES OPTIMAL! | | 46 | * DON'T FORGET TO MAKE YOUR CHANGES OPTIMAL! |
47 | * 12/17/03 bac Added N8_RSAPublicDecrypt (as written by JPW). | | 47 | * 12/17/03 bac Added N8_RSAPublicDecrypt (as written by JPW). |
48 | * 04/07/03 bac Removed redundant CHECK_RETURN. | | 48 | * 04/07/03 bac Removed redundant CHECK_RETURN. |
| @@ -1077,27 +1077,26 @@ static N8_Status_t initPublicKey(N8_RSAK | | | @@ -1077,27 +1077,26 @@ static N8_Status_t initPublicKey(N8_RSAK |
1077 | | | 1077 | |
1078 | /* | | 1078 | /* |
1079 | * allocate space for the key. it is not a part of the parameter | | 1079 | * allocate space for the key. it is not a part of the parameter |
1080 | * block | | 1080 | * block |
1081 | */ | | 1081 | */ |
1082 | key_p->key = pAddr; | | 1082 | key_p->key = pAddr; |
1083 | | | 1083 | |
1084 | /* copy the public key into the key object. | | 1084 | /* copy the public key into the key object. |
1085 | * this must be zero-filled to the left in order to fill an integral | | 1085 | * this must be zero-filled to the left in order to fill an integral |
1086 | * number of Big Number Cache digits. | | 1086 | * number of Big Number Cache digits. |
1087 | * | | 1087 | * |
1088 | * padding = digit_size - (pub_key_len % digit_size) | | 1088 | * padding = digit_size - (pub_key_len % digit_size) |
1089 | */ | | 1089 | */ |
1090 | memset(vAddr, 0x0, padding); | | | |
1091 | memcpy(&vAddr[padding], | | 1090 | memcpy(&vAddr[padding], |
1092 | material_p->publicKey.value_p, | | 1091 | material_p->publicKey.value_p, |
1093 | material_p->publicKey.lengthBytes); | | 1092 | material_p->publicKey.lengthBytes); |
1094 | | | 1093 | |
1095 | pAddr += NEXT_WORD_SIZE(key_p->publicKeyLength); | | 1094 | pAddr += NEXT_WORD_SIZE(key_p->publicKeyLength); |
1096 | vAddr += NEXT_WORD_SIZE(key_p->publicKeyLength); | | 1095 | vAddr += NEXT_WORD_SIZE(key_p->publicKeyLength); |
1097 | | | 1096 | |
1098 | /* Tasks 2 */ | | 1097 | /* Tasks 2 */ |
1099 | | | 1098 | |
1100 | /* | | 1099 | /* |
1101 | * allocate space for the modulus. it is not a part of the parameter | | 1100 | * allocate space for the modulus. it is not a part of the parameter |
1102 | * block for a private key object. | | 1101 | * block for a private key object. |
1103 | */ | | 1102 | */ |