]> code.ossystems Code Review - meta-freescale.git/blob
c9ff5aa8ca16dbb27bd0ba62ad5cebcc808cf2b3
[meta-freescale.git] /
1 From 15abbcd740eafbf2a46b5da24be76acf4982743d Mon Sep 17 00:00:00 2001
2 From: Yashpal Dutta <yashpal.dutta@freescale.com>
3 Date: Tue, 11 Mar 2014 05:56:54 +0545
4 Subject: [PATCH 05/26] ECC Support header for Cryptodev Engine
5
6 Upstream-status: Pending
7
8 Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
9 ---
10  crypto/engine/eng_cryptodev_ec.h | 296 +++++++++++++++++++++++++++++++++++++++
11  1 file changed, 296 insertions(+)
12  create mode 100644 crypto/engine/eng_cryptodev_ec.h
13
14 diff --git a/crypto/engine/eng_cryptodev_ec.h b/crypto/engine/eng_cryptodev_ec.h
15 new file mode 100644
16 index 0000000..77aee71
17 --- /dev/null
18 +++ b/crypto/engine/eng_cryptodev_ec.h
19 @@ -0,0 +1,296 @@
20 +/*
21 + * Copyright (C) 2012 Freescale Semiconductor, Inc.
22 + *
23 + * Redistribution and use in source and binary forms, with or without
24 + * modification, are permitted provided that the following conditions
25 + * are met:
26 + * 1. Redistributions of source code must retain the above copyright
27 + *    notice, this list of conditions and the following disclaimer.
28 + * 2. Redistributions in binary form must reproduce the above copyright
29 + *    notice, this list of conditions and the following disclaimer in the
30 + *    documentation and/or other materials provided with the distribution.
31 + *
32 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
33 + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34 + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
35 + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36 + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
37 + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
38 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
39 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
40 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 + */
43 +#ifndef __ENG_EC_H
44 +#define __ENG_EC_H
45 +
46 +#define SPCF_CPARAM_INIT(X,...) \
47 +static unsigned char X##_c[] = {__VA_ARGS__} \
48 +
49 +#define SPCF_FREE_BN(X) do { if(X) { BN_clear_free(X); X = NULL; } } while (0)
50 +
51 +#define SPCF_COPY_CPARAMS(NIDBUF) \
52 +  do { \
53 +      memcpy (buf, NIDBUF, buf_len); \
54 +    } while (0)
55 +
56 +#define SPCF_CPARAM_CASE(X) \
57 +  case NID_##X: \
58 +      SPCF_COPY_CPARAMS(X##_c); \
59 +      break
60 +
61 +SPCF_CPARAM_INIT(sect113r1, 0x01, 0x73, 0xE8, 0x34, 0xAF, 0x28, 0xEC, 0x76,
62 +                0xCB, 0x83, 0xBD, 0x8D, 0xFE, 0xB2, 0xD5);
63 +SPCF_CPARAM_INIT(sect113r2, 0x00, 0x54, 0xD9, 0xF0, 0x39, 0x57, 0x17, 0x4A,
64 +                0x32, 0x32, 0x91, 0x67, 0xD7, 0xFE, 0x71);
65 +SPCF_CPARAM_INIT(sect131r1, 0x03, 0xDB, 0x89, 0xB4, 0x05, 0xE4, 0x91, 0x16,
66 +                0x0E, 0x3B, 0x2F, 0x07, 0xB0, 0xCE, 0x20, 0xB3, 0x7E);
67 +SPCF_CPARAM_INIT(sect131r2, 0x07, 0xCB, 0xB9, 0x92, 0x0D, 0x71, 0xA4, 0x8E,
68 +                0x09, 0x9C, 0x38, 0xD7, 0x1D, 0xA6, 0x49, 0x0E, 0xB1);
69 +SPCF_CPARAM_INIT(sect163k1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71 +                0x00, 0x00, 0x01);
72 +SPCF_CPARAM_INIT(sect163r1, 0x05, 0xED, 0x40, 0x3E, 0xD5, 0x8E, 0xB4, 0x5B,
73 +                0x1C, 0xCE, 0xCA, 0x0F, 0x4F, 0x61, 0x65, 0x55, 0x49, 0x86,
74 +                0x1B, 0xE0, 0x52);
75 +SPCF_CPARAM_INIT(sect163r2, 0x07, 0x2C, 0x4E, 0x1E, 0xF7, 0xCB, 0x2F, 0x3A,
76 +                0x03, 0x5D, 0x33, 0x10, 0x42, 0x94, 0x15, 0x96, 0x09, 0x13,
77 +                0x8B, 0xB4, 0x04);
78 +SPCF_CPARAM_INIT(sect193r1, 0x01, 0x67, 0xB3, 0x5E, 0xB4, 0x31, 0x3F, 0x26,
79 +                0x3D, 0x0F, 0x7A, 0x3D, 0x50, 0x36, 0xF0, 0xA0, 0xA3, 0xC9,
80 +                0x80, 0xD4, 0x0E, 0x5A, 0x05, 0x3E, 0xD2);
81 +SPCF_CPARAM_INIT(sect193r2, 0x00, 0x69, 0x89, 0xFE, 0x6B, 0xFE, 0x30, 0xED,
82 +                0xDC, 0x32, 0x44, 0x26, 0x9F, 0x3A, 0xAD, 0x18, 0xD6, 0x6C,
83 +                0xF3, 0xDB, 0x3E, 0x33, 0x02, 0xFA, 0xA8);
84 +SPCF_CPARAM_INIT(sect233k1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
85 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
86 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87 +                0x00, 0x01);
88 +SPCF_CPARAM_INIT(sect233r1, 0x00, 0x07, 0xD5, 0xEF, 0x43, 0x89, 0xDF, 0xF1,
89 +                0x1E, 0xCD, 0xBA, 0x39, 0xC3, 0x09, 0x70, 0xD3, 0xCE, 0x35,
90 +                0xCE, 0xBB, 0xA5, 0x84, 0x73, 0xF6, 0x4B, 0x4D, 0xC0, 0xF2,
91 +                0x68, 0x6C);
92 +SPCF_CPARAM_INIT(sect239k1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95 +                0x00, 0x01);
96 +SPCF_CPARAM_INIT(sect283k1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01);
100 +SPCF_CPARAM_INIT(sect283r1, 0x03, 0xD8, 0xC9, 0x3D, 0x3B, 0x0E, 0xA8, 0x1D,
101 +                0x92, 0x94, 0x03, 0x4D, 0x7E, 0xE3, 0x13, 0x5D, 0x0A, 0xC5,
102 +                0xFC, 0x8D, 0x9C, 0xB0, 0x27, 0x6F, 0x72, 0x11, 0xF8, 0x80,
103 +                0xF0, 0xD8, 0x1C, 0xA4, 0xC6, 0xE8, 0x7B, 0x38);
104 +SPCF_CPARAM_INIT(sect409k1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
105 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
106 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
109 +                0x00, 0x00, 0x00, 0x01);
110 +SPCF_CPARAM_INIT(sect409r1, 0x01, 0x49, 0xB8, 0xB7, 0xBE, 0xBD, 0x9B, 0x63,
111 +                0x65, 0x3E, 0xF1, 0xCD, 0x8C, 0x6A, 0x5D, 0xD1, 0x05, 0xA2,
112 +                0xAA, 0xAC, 0x36, 0xFE, 0x2E, 0xAE, 0x43, 0xCF, 0x28, 0xCE,
113 +                0x1C, 0xB7, 0xC8, 0x30, 0xC1, 0xEC, 0xDB, 0xFA, 0x41, 0x3A,
114 +                0xB0, 0x7F, 0xE3, 0x5A, 0x57, 0x81, 0x1A, 0xE4, 0xF8, 0x8D,
115 +                0x30, 0xAC, 0x63, 0xFB);
116 +SPCF_CPARAM_INIT(sect571k1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
118 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
119 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
120 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
122 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
123 +                0x00, 0x00, 0x00, 0x01);
124 +SPCF_CPARAM_INIT(sect571r1, 0x06, 0x39, 0x5D, 0xB2, 0x2A, 0xB5, 0x94, 0xB1,
125 +                0x86, 0x8C, 0xED, 0x95, 0x25, 0x78, 0xB6, 0x53, 0x9F, 0xAB,
126 +                0xA6, 0x94, 0x06, 0xD9, 0xB2, 0x98, 0x61, 0x23, 0xA1, 0x85,
127 +                0xC8, 0x58, 0x32, 0xE2, 0x5F, 0xD5, 0xB6, 0x38, 0x33, 0xD5,
128 +                0x14, 0x42, 0xAB, 0xF1, 0xA9, 0xC0, 0x5F, 0xF0, 0xEC, 0xBD,
129 +                0x88, 0xD7, 0xF7, 0x79, 0x97, 0xF4, 0xDC, 0x91, 0x56, 0xAA,
130 +                0xF1, 0xCE, 0x08, 0x16, 0x46, 0x86, 0xDD, 0xFF, 0x75, 0x11,
131 +                0x6F, 0xBC, 0x9A, 0x7A);
132 +SPCF_CPARAM_INIT(X9_62_c2pnb163v1, 0x04, 0x53, 0xE1, 0xE4, 0xB7, 0x29, 0x1F,
133 +                0x5C, 0x2D, 0x53, 0xCE, 0x18, 0x48, 0x3F, 0x00, 0x70, 0x81,
134 +                0xE7, 0xEA, 0x26, 0xEC);
135 +SPCF_CPARAM_INIT(X9_62_c2pnb163v2, 0x04, 0x35, 0xC0, 0x19, 0x66, 0x0E, 0x01,
136 +                0x01, 0xBA, 0x87, 0x0C, 0xA3, 0x9F, 0xD9, 0xA7, 0x76, 0x86,
137 +                0x50, 0x9D, 0x28, 0x13);
138 +SPCF_CPARAM_INIT(X9_62_c2pnb163v3, 0x06, 0x55, 0xC4, 0x54, 0xE4, 0x1E, 0x38,
139 +                0x0C, 0x7A, 0x60, 0xB6, 0x67, 0x9A, 0x5B, 0x7A, 0x3F, 0x3A,
140 +                0xF6, 0x8E, 0x22, 0xC5);
141 +SPCF_CPARAM_INIT(X9_62_c2pnb176v1, 0x00, 0x69, 0xF7, 0xDA, 0x36, 0x19, 0xA7,
142 +                0x42, 0xA3, 0x82, 0xFF, 0x05, 0x08, 0x8F, 0xD3, 0x99, 0x42,
143 +                0xCA, 0x0F, 0x1D, 0x90, 0xB6, 0x5B);
144 +SPCF_CPARAM_INIT(X9_62_c2tnb191v1, 0x4C, 0x45, 0x25, 0xAB, 0x0B, 0x68, 0x4A,
145 +                0x64, 0x44, 0x62, 0x0A, 0x86, 0x45, 0xEF, 0x54, 0x6D, 0x54,
146 +                0x69, 0x39, 0x68, 0xC2, 0xAE, 0x84, 0xAC);
147 +SPCF_CPARAM_INIT(X9_62_c2tnb191v2, 0x03, 0x7C, 0x8F, 0x57, 0xA2, 0x25, 0xC7,
148 +                0xB3, 0xD4, 0xED, 0xD5, 0x88, 0x0F, 0x38, 0x0A, 0xCC, 0x55,
149 +                0x74, 0xEC, 0xB3, 0x6C, 0x9F, 0x51, 0x21);
150 +SPCF_CPARAM_INIT(X9_62_c2tnb191v3, 0x37, 0x39, 0xFF, 0x98, 0xB4, 0xD1, 0x69,
151 +                0x3E, 0xCF, 0x52, 0x7A, 0x98, 0x51, 0xED, 0xCF, 0x99, 0x9D,
152 +                0x9E, 0x75, 0x05, 0x43, 0x33, 0x43, 0x24);
153 +SPCF_CPARAM_INIT(X9_62_c2pnb208w1, 0x00, 0xDB, 0x05, 0x3C, 0x41, 0x76, 0xCC,
154 +                0x1D, 0xA1, 0x27, 0x85, 0x2C, 0xA6, 0xD9, 0x88, 0xBE, 0x1A,
155 +                0xCC, 0xD1, 0x5B, 0x2A, 0xC1, 0xC1, 0x07, 0x42, 0x57, 0x34);
156 +SPCF_CPARAM_INIT(X9_62_c2tnb239v1, 0x24, 0x59, 0xFC, 0xF4, 0x51, 0x7B, 0xC5,
157 +                0xA6, 0xB9, 0x9B, 0xE5, 0xC6, 0xC5, 0x62, 0x85, 0xC0, 0x21,
158 +                0xFE, 0x32, 0xEE, 0x2B, 0x6F, 0x1C, 0x22, 0xEA, 0x5B, 0xE1,
159 +                0xB8, 0x4B, 0x93);
160 +SPCF_CPARAM_INIT(X9_62_c2tnb239v2, 0x64, 0x98, 0x84, 0x19, 0x3B, 0x56, 0x2D,
161 +                0x4A, 0x50, 0xB4, 0xFA, 0x56, 0x34, 0xE0, 0x34, 0x41, 0x3F,
162 +                0x94, 0xC4, 0x59, 0xDA, 0x7C, 0xDB, 0x16, 0x64, 0x9D, 0xDD,
163 +                0xF7, 0xE6, 0x0A);
164 +SPCF_CPARAM_INIT(X9_62_c2tnb239v3, 0x32, 0x63, 0x2E, 0x65, 0x2B, 0xEE, 0x91,
165 +                0xC2, 0xE4, 0xA2, 0xF5, 0x42, 0xA3, 0x2D, 0x67, 0xA8, 0xB5,
166 +                0xB4, 0x5F, 0x21, 0xA0, 0x81, 0x02, 0xFB, 0x1F, 0x2A, 0xFB,
167 +                0xB6, 0xAC, 0xDA);
168 +SPCF_CPARAM_INIT(X9_62_c2pnb272w1, 0x00, 0xDA, 0x7B, 0x60, 0x28, 0xF4, 0xC8,
169 +                0x09, 0xA0, 0xB9, 0x78, 0x81, 0xC3, 0xA5, 0x7E, 0x4D, 0x71,
170 +                0x81, 0x34, 0xD1, 0x3F, 0xEC, 0xE0, 0x90, 0x85, 0x8A, 0xC3,
171 +                0x1A, 0xE2, 0xDC, 0x2E, 0xDF, 0x8E, 0x3C, 0x8B);
172 +SPCF_CPARAM_INIT(X9_62_c2pnb304w1, 0x00, 0x3C, 0x67, 0xB4, 0x07, 0xC6, 0xF3,
173 +                0x3F, 0x81, 0x0B, 0x17, 0xDC, 0x16, 0xE2, 0x14, 0x8A, 0x2C,
174 +                0x9C, 0xE2, 0x9D, 0x56, 0x05, 0x23, 0x69, 0x6A, 0x55, 0x93,
175 +                0x8A, 0x15, 0x40, 0x81, 0xE3, 0xE3, 0xAE, 0xFB, 0xCE, 0x45,
176 +                0x70, 0xC9);
177 +SPCF_CPARAM_INIT(X9_62_c2tnb359v1, 0x22, 0x39, 0xAA, 0x58, 0x4A, 0xC5, 0x9A,
178 +                0xF9, 0x61, 0xD0, 0xFA, 0x2D, 0x52, 0x85, 0xB6, 0xFD, 0xF7,
179 +                0x34, 0x9B, 0xC6, 0x0E, 0x91, 0xE3, 0x20, 0xF4, 0x71, 0x64,
180 +                0xCE, 0x11, 0xF5, 0x18, 0xEF, 0xB4, 0xC0, 0x8B, 0x9B, 0xDA,
181 +                0x99, 0x9A, 0x8A, 0x37, 0xF8, 0x2A, 0x22, 0x61);
182 +SPCF_CPARAM_INIT(X9_62_c2pnb368w1, 0x00, 0xC0, 0x6C, 0xCF, 0x42, 0x89, 0x3A,
183 +                0x8A, 0xAA, 0x00, 0x1E, 0x0B, 0xC0, 0xD2, 0xA2, 0x27, 0x66,
184 +                0xEF, 0x3E, 0x41, 0x88, 0x7C, 0xC6, 0x77, 0x6F, 0x4A, 0x04,
185 +                0x1E, 0xE4, 0x45, 0x14, 0xB2, 0x0A, 0xFC, 0x4E, 0x5C, 0x30,
186 +                0x40, 0x60, 0x06, 0x5B, 0xC8, 0xD6, 0xCF, 0x04, 0xD3, 0x25);
187 +SPCF_CPARAM_INIT(X9_62_c2tnb431r1, 0x64, 0xF5, 0xBB, 0xE9, 0xBB, 0x31, 0x66,
188 +                0xA3, 0xA0, 0x2F, 0x2F, 0x22, 0xBF, 0x05, 0xD9, 0xF7, 0xDA,
189 +                0x43, 0xEE, 0x70, 0xC1, 0x79, 0x03, 0x15, 0x2B, 0x70, 0xA0,
190 +                0xB4, 0x25, 0x9B, 0xD2, 0xFC, 0xB2, 0x20, 0x3B, 0x7F, 0xB8,
191 +                0xD3, 0x39, 0x4E, 0x20, 0xEB, 0x0E, 0xA9, 0x84, 0xDD, 0xB1,
192 +                0xE1, 0xF1, 0x4C, 0x67, 0xB1, 0x36, 0x2B);
193 +SPCF_CPARAM_INIT(wap_wsg_idm_ecid_wtls1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
194 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01);
195 +SPCF_CPARAM_INIT(wap_wsg_idm_ecid_wtls3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 +                0x00, 0x00, 0x00, 0x00, 0x01);
198 +SPCF_CPARAM_INIT(wap_wsg_idm_ecid_wtls4, 0x01, 0x73, 0xE8, 0x34, 0xAF, 0x28,
199 +                0xEC, 0x76, 0xCB, 0x83, 0xBD, 0x8D, 0xFE, 0xB2, 0xD5);
200 +SPCF_CPARAM_INIT(wap_wsg_idm_ecid_wtls5, 0x04, 0x53, 0xE1, 0xE4, 0xB7, 0x29,
201 +                0x1F, 0x5C, 0x2D, 0x53, 0xCE, 0x18, 0x48, 0x3F, 0x00, 0x70,
202 +                0x81, 0xE7, 0xEA, 0x26, 0xEC);
203 +SPCF_CPARAM_INIT(wap_wsg_idm_ecid_wtls10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
204 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205 +                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
206 +                0x00, 0x00, 0x00, 0x01);
207 +SPCF_CPARAM_INIT(wap_wsg_idm_ecid_wtls11, 0x00, 0x07, 0xD5, 0xEF, 0x43, 0x89,
208 +                0xDF, 0xF1, 0x1E, 0xCD, 0xBA, 0x39, 0xC3, 0x09, 0x70, 0xD3,
209 +                0xCE, 0x35, 0xCE, 0xBB, 0xA5, 0x84, 0x73, 0xF6, 0x4B, 0x4D,
210 +                0xC0, 0xF2, 0x68, 0x6C);
211 +/* Oakley curve #3 over 155 bit binary filed */
212 +SPCF_CPARAM_INIT(ipsec3, 0x00, 0x31, 0x10, 0x00, 0x00, 0x02, 0x23, 0xA0, 0x00,
213 +                0xC4, 0x47, 0x40, 0x00, 0x08, 0x8E, 0x80, 0x00, 0x11, 0x1D,
214 +                0x1D);
215 +/* Oakley curve #4 over 185 bit binary filed */
216 +SPCF_CPARAM_INIT(ipsec4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
217 +                0x01, 0x80, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x63, 0x80,
218 +                0x30, 0x00, 0x1C, 0x00, 0x09);
219 +
220 +static inline int
221 +eng_ec_get_cparam(int nid, unsigned char *buf, unsigned int buf_len)
222 +{
223 +       int ret = 0;
224 +       switch (nid) {
225 +               SPCF_CPARAM_CASE(sect113r1);
226 +               SPCF_CPARAM_CASE(sect113r2);
227 +               SPCF_CPARAM_CASE(sect131r1);
228 +               SPCF_CPARAM_CASE(sect131r2);
229 +               SPCF_CPARAM_CASE(sect163k1);
230 +               SPCF_CPARAM_CASE(sect163r1);
231 +               SPCF_CPARAM_CASE(sect163r2);
232 +               SPCF_CPARAM_CASE(sect193r1);
233 +               SPCF_CPARAM_CASE(sect193r2);
234 +               SPCF_CPARAM_CASE(sect233k1);
235 +               SPCF_CPARAM_CASE(sect233r1);
236 +               SPCF_CPARAM_CASE(sect239k1);
237 +               SPCF_CPARAM_CASE(sect283k1);
238 +               SPCF_CPARAM_CASE(sect283r1);
239 +               SPCF_CPARAM_CASE(sect409k1);
240 +               SPCF_CPARAM_CASE(sect409r1);
241 +               SPCF_CPARAM_CASE(sect571k1);
242 +               SPCF_CPARAM_CASE(sect571r1);
243 +               SPCF_CPARAM_CASE(X9_62_c2pnb163v1);
244 +               SPCF_CPARAM_CASE(X9_62_c2pnb163v2);
245 +               SPCF_CPARAM_CASE(X9_62_c2pnb163v3);
246 +               SPCF_CPARAM_CASE(X9_62_c2pnb176v1);
247 +               SPCF_CPARAM_CASE(X9_62_c2tnb191v1);
248 +               SPCF_CPARAM_CASE(X9_62_c2tnb191v2);
249 +               SPCF_CPARAM_CASE(X9_62_c2tnb191v3);
250 +               SPCF_CPARAM_CASE(X9_62_c2pnb208w1);
251 +               SPCF_CPARAM_CASE(X9_62_c2tnb239v1);
252 +               SPCF_CPARAM_CASE(X9_62_c2tnb239v2);
253 +               SPCF_CPARAM_CASE(X9_62_c2tnb239v3);
254 +               SPCF_CPARAM_CASE(X9_62_c2pnb272w1);
255 +               SPCF_CPARAM_CASE(X9_62_c2pnb304w1);
256 +               SPCF_CPARAM_CASE(X9_62_c2tnb359v1);
257 +               SPCF_CPARAM_CASE(X9_62_c2pnb368w1);
258 +               SPCF_CPARAM_CASE(X9_62_c2tnb431r1);
259 +               SPCF_CPARAM_CASE(wap_wsg_idm_ecid_wtls1);
260 +               SPCF_CPARAM_CASE(wap_wsg_idm_ecid_wtls3);
261 +               SPCF_CPARAM_CASE(wap_wsg_idm_ecid_wtls4);
262 +               SPCF_CPARAM_CASE(wap_wsg_idm_ecid_wtls5);
263 +               SPCF_CPARAM_CASE(wap_wsg_idm_ecid_wtls10);
264 +               SPCF_CPARAM_CASE(wap_wsg_idm_ecid_wtls11);
265 +               /* Oakley curve #3 over 155 bit binary filed */
266 +               SPCF_CPARAM_CASE(ipsec3);
267 +               /* Oakley curve #4 over 185 bit binary filed */
268 +               SPCF_CPARAM_CASE(ipsec4);
269 +       default:
270 +               ret = -EINVAL;
271 +               break;
272 +       }
273 +       return ret;
274 +}
275 +
276 +/* Copies the curve points to a flat buffer with appropriate padding */
277 +static inline unsigned char *eng_copy_curve_points(BIGNUM * x, BIGNUM * y,
278 +                                                  int xy_len, int crv_len)
279 +{
280 +       unsigned char *xy = NULL;
281 +       int len1 = 0, len2 = 0;
282 +
283 +       len1 = BN_num_bytes(x);
284 +       len2 = BN_num_bytes(y);
285 +
286 +       if (!(xy = malloc(xy_len))) {
287 +               return NULL;
288 +       }
289 +
290 +       memset(xy, 0, xy_len);
291 +
292 +       if (len1 < crv_len) {
293 +               if (!BN_is_zero(x))
294 +                       BN_bn2bin(x, xy + (crv_len - len1));
295 +       }  else {
296 +               BN_bn2bin(x, xy);
297 +       }
298 +
299 +       if (len2 < crv_len) {
300 +               if (!BN_is_zero(y))
301 +                       BN_bn2bin(y, xy+crv_len+(crv_len-len2));
302 +       } else {
303 +               BN_bn2bin(y, xy+crv_len);
304 +       }
305 +
306 +       return xy;
307 +}
308 +
309 +enum curve_t {
310 +       DISCRETE_LOG,
311 +       ECC_PRIME,
312 +       ECC_BINARY,
313 +       MAX_ECC_TYPE
314 +};
315 +#endif
316 -- 
317 2.3.5
318