1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
|
/*******************************************************************************
* Copyright 2002-2018 Intel Corporation
* All Rights Reserved.
*
* If this software was obtained under the Intel Simplified Software License,
* the following terms apply:
*
* The source code, information and material ("Material") contained herein is
* owned by Intel Corporation or its suppliers or licensors, and title to such
* Material remains with Intel Corporation or its suppliers or licensors. The
* Material contains proprietary information of Intel or its suppliers and
* licensors. The Material is protected by worldwide copyright laws and treaty
* provisions. No part of the Material may be used, copied, reproduced,
* modified, published, uploaded, posted, transmitted, distributed or disclosed
* in any way without Intel's prior express written permission. No license under
* any patent, copyright or other intellectual property rights in the Material
* is granted to or conferred upon you, either expressly, by implication,
* inducement, estoppel or otherwise. Any license under such intellectual
* property rights must be express and approved by Intel in writing.
*
* Unless otherwise agreed by Intel in writing, you may not remove or alter this
* notice or any other notice embedded in Materials by Intel or Intel's
* suppliers or licensors in any way.
*
*
* If this software was obtained under the Apache License, Version 2.0 (the
* "License"), the following terms apply:
*
* You may not use this file except in compliance with the License. You may
* obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
/******* FILE MODIFIED FROM ORIGINAL 2019u1 RELEASE TO AVOID WARNINGS *********/
/*
// Intel(R) Integrated Performance Primitives
// Cryptographic Primitives (ippcp)
*/
#ifndef __OWNCP_H__
#define __OWNCP_H__
#ifndef __OWNDEFS_H__
#include "owndefs.h"
#endif
#ifndef IPPCP_H__
#define ippcpGetLibVersion OWNAPI(ippcpGetLibVersion)
#define ippsDESGetSize OWNAPI(ippsDESGetSize)
#define ippsDESInit OWNAPI(ippsDESInit)
#define ippsDESPack OWNAPI(ippsDESPack)
#define ippsDESUnpack OWNAPI(ippsDESUnpack)
#define ippsTDESEncryptECB OWNAPI(ippsTDESEncryptECB)
#define ippsTDESDecryptECB OWNAPI(ippsTDESDecryptECB)
#define ippsTDESEncryptCBC OWNAPI(ippsTDESEncryptCBC)
#define ippsTDESDecryptCBC OWNAPI(ippsTDESDecryptCBC)
#define ippsTDESEncryptCFB OWNAPI(ippsTDESEncryptCFB)
#define ippsTDESDecryptCFB OWNAPI(ippsTDESDecryptCFB)
#define ippsTDESEncryptOFB OWNAPI(ippsTDESEncryptOFB)
#define ippsTDESDecryptOFB OWNAPI(ippsTDESDecryptOFB)
#define ippsTDESEncryptCTR OWNAPI(ippsTDESEncryptCTR)
#define ippsTDESDecryptCTR OWNAPI(ippsTDESDecryptCTR)
#define ippsAESGetSize OWNAPI(ippsAESGetSize)
#define ippsAESInit OWNAPI(ippsAESInit)
#define ippsAESSetKey OWNAPI(ippsAESSetKey)
#define ippsAESPack OWNAPI(ippsAESPack)
#define ippsAESUnpack OWNAPI(ippsAESUnpack)
#define ippsAESEncryptECB OWNAPI(ippsAESEncryptECB)
#define ippsAESDecryptECB OWNAPI(ippsAESDecryptECB)
#define ippsAESEncryptCBC OWNAPI(ippsAESEncryptCBC)
#define ippsAESEncryptCBC_CS1 OWNAPI(ippsAESEncryptCBC_CS1)
#define ippsAESEncryptCBC_CS2 OWNAPI(ippsAESEncryptCBC_CS2)
#define ippsAESEncryptCBC_CS3 OWNAPI(ippsAESEncryptCBC_CS3)
#define ippsAESDecryptCBC OWNAPI(ippsAESDecryptCBC)
#define ippsAESDecryptCBC_CS1 OWNAPI(ippsAESDecryptCBC_CS1)
#define ippsAESDecryptCBC_CS2 OWNAPI(ippsAESDecryptCBC_CS2)
#define ippsAESDecryptCBC_CS3 OWNAPI(ippsAESDecryptCBC_CS3)
#define ippsAESEncryptCFB OWNAPI(ippsAESEncryptCFB)
#define ippsAESDecryptCFB OWNAPI(ippsAESDecryptCFB)
#define ippsAESEncryptOFB OWNAPI(ippsAESEncryptOFB)
#define ippsAESDecryptOFB OWNAPI(ippsAESDecryptOFB)
#define ippsAESEncryptCTR OWNAPI(ippsAESEncryptCTR)
#define ippsAESDecryptCTR OWNAPI(ippsAESDecryptCTR)
#define ippsAESEncryptXTS_Direct OWNAPI(ippsAESEncryptXTS_Direct)
#define ippsAESDecryptXTS_Direct OWNAPI(ippsAESDecryptXTS_Direct)
#define ippsSMS4GetSize OWNAPI(ippsSMS4GetSize)
#define ippsSMS4Init OWNAPI(ippsSMS4Init)
#define ippsSMS4SetKey OWNAPI(ippsSMS4SetKey)
#define ippsSMS4EncryptECB OWNAPI(ippsSMS4EncryptECB)
#define ippsSMS4DecryptECB OWNAPI(ippsSMS4DecryptECB)
#define ippsSMS4EncryptCBC OWNAPI(ippsSMS4EncryptCBC)
#define ippsSMS4EncryptCBC_CS1 OWNAPI(ippsSMS4EncryptCBC_CS1)
#define ippsSMS4EncryptCBC_CS2 OWNAPI(ippsSMS4EncryptCBC_CS2)
#define ippsSMS4EncryptCBC_CS3 OWNAPI(ippsSMS4EncryptCBC_CS3)
#define ippsSMS4DecryptCBC OWNAPI(ippsSMS4DecryptCBC)
#define ippsSMS4DecryptCBC_CS1 OWNAPI(ippsSMS4DecryptCBC_CS1)
#define ippsSMS4DecryptCBC_CS2 OWNAPI(ippsSMS4DecryptCBC_CS2)
#define ippsSMS4DecryptCBC_CS3 OWNAPI(ippsSMS4DecryptCBC_CS3)
#define ippsSMS4EncryptCFB OWNAPI(ippsSMS4EncryptCFB)
#define ippsSMS4DecryptCFB OWNAPI(ippsSMS4DecryptCFB)
#define ippsSMS4EncryptOFB OWNAPI(ippsSMS4EncryptOFB)
#define ippsSMS4DecryptOFB OWNAPI(ippsSMS4DecryptOFB)
#define ippsSMS4EncryptCTR OWNAPI(ippsSMS4EncryptCTR)
#define ippsSMS4DecryptCTR OWNAPI(ippsSMS4DecryptCTR)
#define ippsSMS4_CCMGetSize OWNAPI(ippsSMS4_CCMGetSize)
#define ippsSMS4_CCMInit OWNAPI(ippsSMS4_CCMInit)
#define ippsSMS4_CCMMessageLen OWNAPI(ippsSMS4_CCMMessageLen)
#define ippsSMS4_CCMTagLen OWNAPI(ippsSMS4_CCMTagLen)
#define ippsSMS4_CCMStart OWNAPI(ippsSMS4_CCMStart)
#define ippsSMS4_CCMEncrypt OWNAPI(ippsSMS4_CCMEncrypt)
#define ippsSMS4_CCMDecrypt OWNAPI(ippsSMS4_CCMDecrypt)
#define ippsSMS4_CCMGetTag OWNAPI(ippsSMS4_CCMGetTag)
#define ippsAES_CCMGetSize OWNAPI(ippsAES_CCMGetSize)
#define ippsAES_CCMInit OWNAPI(ippsAES_CCMInit)
#define ippsAES_CCMMessageLen OWNAPI(ippsAES_CCMMessageLen)
#define ippsAES_CCMTagLen OWNAPI(ippsAES_CCMTagLen)
#define ippsAES_CCMStart OWNAPI(ippsAES_CCMStart)
#define ippsAES_CCMEncrypt OWNAPI(ippsAES_CCMEncrypt)
#define ippsAES_CCMDecrypt OWNAPI(ippsAES_CCMDecrypt)
#define ippsAES_CCMGetTag OWNAPI(ippsAES_CCMGetTag)
#define ippsAES_GCMGetSize OWNAPI(ippsAES_GCMGetSize)
#define ippsAES_GCMInit OWNAPI(ippsAES_GCMInit)
#define ippsAES_GCMReset OWNAPI(ippsAES_GCMReset)
#define ippsAES_GCMProcessIV OWNAPI(ippsAES_GCMProcessIV)
#define ippsAES_GCMProcessAAD OWNAPI(ippsAES_GCMProcessAAD)
#define ippsAES_GCMStart OWNAPI(ippsAES_GCMStart)
#define ippsAES_GCMEncrypt OWNAPI(ippsAES_GCMEncrypt)
#define ippsAES_GCMDecrypt OWNAPI(ippsAES_GCMDecrypt)
#define ippsAES_GCMGetTag OWNAPI(ippsAES_GCMGetTag)
#define ippsAES_XTSGetSize OWNAPI(ippsAES_XTSGetSize)
#define ippsAES_XTSInit OWNAPI(ippsAES_XTSInit)
#define ippsAES_XTSEncrypt OWNAPI(ippsAES_XTSEncrypt)
#define ippsAES_XTSDecrypt OWNAPI(ippsAES_XTSDecrypt)
#define ippsAES_S2V_CMAC OWNAPI(ippsAES_S2V_CMAC)
#define ippsAES_SIVEncrypt OWNAPI(ippsAES_SIVEncrypt)
#define ippsAES_SIVDecrypt OWNAPI(ippsAES_SIVDecrypt)
#define ippsAES_CMACGetSize OWNAPI(ippsAES_CMACGetSize)
#define ippsAES_CMACInit OWNAPI(ippsAES_CMACInit)
#define ippsAES_CMACUpdate OWNAPI(ippsAES_CMACUpdate)
#define ippsAES_CMACFinal OWNAPI(ippsAES_CMACFinal)
#define ippsAES_CMACGetTag OWNAPI(ippsAES_CMACGetTag)
#define ippsARCFourCheckKey OWNAPI(ippsARCFourCheckKey)
#define ippsARCFourGetSize OWNAPI(ippsARCFourGetSize)
#define ippsARCFourInit OWNAPI(ippsARCFourInit)
#define ippsARCFourReset OWNAPI(ippsARCFourReset)
#define ippsARCFourPack OWNAPI(ippsARCFourPack)
#define ippsARCFourUnpack OWNAPI(ippsARCFourUnpack)
#define ippsARCFourEncrypt OWNAPI(ippsARCFourEncrypt)
#define ippsARCFourDecrypt OWNAPI(ippsARCFourDecrypt)
#define ippsSHA1GetSize OWNAPI(ippsSHA1GetSize)
#define ippsSHA1Init OWNAPI(ippsSHA1Init)
#define ippsSHA1Duplicate OWNAPI(ippsSHA1Duplicate)
#define ippsSHA1Pack OWNAPI(ippsSHA1Pack)
#define ippsSHA1Unpack OWNAPI(ippsSHA1Unpack)
#define ippsSHA1Update OWNAPI(ippsSHA1Update)
#define ippsSHA1GetTag OWNAPI(ippsSHA1GetTag)
#define ippsSHA1Final OWNAPI(ippsSHA1Final)
#define ippsSHA1MessageDigest OWNAPI(ippsSHA1MessageDigest)
#define ippsSHA224GetSize OWNAPI(ippsSHA224GetSize)
#define ippsSHA224Init OWNAPI(ippsSHA224Init)
#define ippsSHA224Duplicate OWNAPI(ippsSHA224Duplicate)
#define ippsSHA224Pack OWNAPI(ippsSHA224Pack)
#define ippsSHA224Unpack OWNAPI(ippsSHA224Unpack)
#define ippsSHA224Update OWNAPI(ippsSHA224Update)
#define ippsSHA224GetTag OWNAPI(ippsSHA224GetTag)
#define ippsSHA224Final OWNAPI(ippsSHA224Final)
#define ippsSHA224MessageDigest OWNAPI(ippsSHA224MessageDigest)
#define ippsSHA256GetSize OWNAPI(ippsSHA256GetSize)
#define ippsSHA256Init OWNAPI(ippsSHA256Init)
#define ippsSHA256Duplicate OWNAPI(ippsSHA256Duplicate)
#define ippsSHA256Pack OWNAPI(ippsSHA256Pack)
#define ippsSHA256Unpack OWNAPI(ippsSHA256Unpack)
#define ippsSHA256Update OWNAPI(ippsSHA256Update)
#define ippsSHA256GetTag OWNAPI(ippsSHA256GetTag)
#define ippsSHA256Final OWNAPI(ippsSHA256Final)
#define ippsSHA256MessageDigest OWNAPI(ippsSHA256MessageDigest)
#define ippsSHA384GetSize OWNAPI(ippsSHA384GetSize)
#define ippsSHA384Init OWNAPI(ippsSHA384Init)
#define ippsSHA384Duplicate OWNAPI(ippsSHA384Duplicate)
#define ippsSHA384Pack OWNAPI(ippsSHA384Pack)
#define ippsSHA384Unpack OWNAPI(ippsSHA384Unpack)
#define ippsSHA384Update OWNAPI(ippsSHA384Update)
#define ippsSHA384GetTag OWNAPI(ippsSHA384GetTag)
#define ippsSHA384Final OWNAPI(ippsSHA384Final)
#define ippsSHA384MessageDigest OWNAPI(ippsSHA384MessageDigest)
#define ippsSHA512GetSize OWNAPI(ippsSHA512GetSize)
#define ippsSHA512Init OWNAPI(ippsSHA512Init)
#define ippsSHA512Duplicate OWNAPI(ippsSHA512Duplicate)
#define ippsSHA512Pack OWNAPI(ippsSHA512Pack)
#define ippsSHA512Unpack OWNAPI(ippsSHA512Unpack)
#define ippsSHA512Update OWNAPI(ippsSHA512Update)
#define ippsSHA512GetTag OWNAPI(ippsSHA512GetTag)
#define ippsSHA512Final OWNAPI(ippsSHA512Final)
#define ippsSHA512MessageDigest OWNAPI(ippsSHA512MessageDigest)
#define ippsMD5GetSize OWNAPI(ippsMD5GetSize)
#define ippsMD5Init OWNAPI(ippsMD5Init)
#define ippsMD5Duplicate OWNAPI(ippsMD5Duplicate)
#define ippsMD5Pack OWNAPI(ippsMD5Pack)
#define ippsMD5Unpack OWNAPI(ippsMD5Unpack)
#define ippsMD5Update OWNAPI(ippsMD5Update)
#define ippsMD5GetTag OWNAPI(ippsMD5GetTag)
#define ippsMD5Final OWNAPI(ippsMD5Final)
#define ippsMD5MessageDigest OWNAPI(ippsMD5MessageDigest)
#define ippsSM3GetSize OWNAPI(ippsSM3GetSize)
#define ippsSM3Init OWNAPI(ippsSM3Init)
#define ippsSM3Duplicate OWNAPI(ippsSM3Duplicate)
#define ippsSM3Pack OWNAPI(ippsSM3Pack)
#define ippsSM3Unpack OWNAPI(ippsSM3Unpack)
#define ippsSM3Update OWNAPI(ippsSM3Update)
#define ippsSM3GetTag OWNAPI(ippsSM3GetTag)
#define ippsSM3Final OWNAPI(ippsSM3Final)
#define ippsSM3MessageDigest OWNAPI(ippsSM3MessageDigest)
#define ippsHashGetSize OWNAPI(ippsHashGetSize)
#define ippsHashInit OWNAPI(ippsHashInit)
#define ippsHashPack OWNAPI(ippsHashPack)
#define ippsHashUnpack OWNAPI(ippsHashUnpack)
#define ippsHashDuplicate OWNAPI(ippsHashDuplicate)
#define ippsHashUpdate OWNAPI(ippsHashUpdate)
#define ippsHashGetTag OWNAPI(ippsHashGetTag)
#define ippsHashFinal OWNAPI(ippsHashFinal)
#define ippsHashMessage OWNAPI(ippsHashMessage)
#define ippsHashMethod_MD5 OWNAPI(ippsHashMethod_MD5)
#define ippsHashMethod_SM3 OWNAPI(ippsHashMethod_SM3)
#define ippsHashMethod_SHA1 OWNAPI(ippsHashMethod_SHA1)
#define ippsHashMethod_SHA1_NI OWNAPI(ippsHashMethod_SHA1_NI)
#define ippsHashMethod_SHA1_TT OWNAPI(ippsHashMethod_SHA1_TT)
#define ippsHashMethod_SHA256 OWNAPI(ippsHashMethod_SHA256)
#define ippsHashMethod_SHA256_NI OWNAPI(ippsHashMethod_SHA256_NI)
#define ippsHashMethod_SHA256_TT OWNAPI(ippsHashMethod_SHA256_TT)
#define ippsHashMethod_SHA224 OWNAPI(ippsHashMethod_SHA224)
#define ippsHashMethod_SHA224_NI OWNAPI(ippsHashMethod_SHA224_NI)
#define ippsHashMethod_SHA224_TT OWNAPI(ippsHashMethod_SHA224_TT)
#define ippsHashMethod_SHA512 OWNAPI(ippsHashMethod_SHA512)
#define ippsHashMethod_SHA384 OWNAPI(ippsHashMethod_SHA384)
#define ippsHashMethod_SHA512_256 OWNAPI(ippsHashMethod_SHA512_256)
#define ippsHashMethod_SHA512_224 OWNAPI(ippsHashMethod_SHA512_224)
#define ippsHashGetSize_rmf OWNAPI(ippsHashGetSize_rmf)
#define ippsHashInit_rmf OWNAPI(ippsHashInit_rmf)
#define ippsHashPack_rmf OWNAPI(ippsHashPack_rmf)
#define ippsHashUnpack_rmf OWNAPI(ippsHashUnpack_rmf)
#define ippsHashDuplicate_rmf OWNAPI(ippsHashDuplicate_rmf)
#define ippsHashUpdate_rmf OWNAPI(ippsHashUpdate_rmf)
#define ippsHashGetTag_rmf OWNAPI(ippsHashGetTag_rmf)
#define ippsHashFinal_rmf OWNAPI(ippsHashFinal_rmf)
#define ippsHashMessage_rmf OWNAPI(ippsHashMessage_rmf)
#define ippsMGF OWNAPI(ippsMGF)
#define ippsMGF1_rmf OWNAPI(ippsMGF1_rmf)
#define ippsMGF2_rmf OWNAPI(ippsMGF2_rmf)
#define ippsHMAC_GetSize OWNAPI(ippsHMAC_GetSize)
#define ippsHMAC_Init OWNAPI(ippsHMAC_Init)
#define ippsHMAC_Pack OWNAPI(ippsHMAC_Pack)
#define ippsHMAC_Unpack OWNAPI(ippsHMAC_Unpack)
#define ippsHMAC_Duplicate OWNAPI(ippsHMAC_Duplicate)
#define ippsHMAC_Update OWNAPI(ippsHMAC_Update)
#define ippsHMAC_Final OWNAPI(ippsHMAC_Final)
#define ippsHMAC_GetTag OWNAPI(ippsHMAC_GetTag)
#define ippsHMAC_Message OWNAPI(ippsHMAC_Message)
#define ippsHMACGetSize_rmf OWNAPI(ippsHMACGetSize_rmf)
#define ippsHMACInit_rmf OWNAPI(ippsHMACInit_rmf)
#define ippsHMACPack_rmf OWNAPI(ippsHMACPack_rmf)
#define ippsHMACUnpack_rmf OWNAPI(ippsHMACUnpack_rmf)
#define ippsHMACDuplicate_rmf OWNAPI(ippsHMACDuplicate_rmf)
#define ippsHMACUpdate_rmf OWNAPI(ippsHMACUpdate_rmf)
#define ippsHMACFinal_rmf OWNAPI(ippsHMACFinal_rmf)
#define ippsHMACGetTag_rmf OWNAPI(ippsHMACGetTag_rmf)
#define ippsHMACMessage_rmf OWNAPI(ippsHMACMessage_rmf)
#define ippsBigNumGetSize OWNAPI(ippsBigNumGetSize)
#define ippsBigNumInit OWNAPI(ippsBigNumInit)
#define ippsCmpZero_BN OWNAPI(ippsCmpZero_BN)
#define ippsCmp_BN OWNAPI(ippsCmp_BN)
#define ippsGetSize_BN OWNAPI(ippsGetSize_BN)
#define ippsSet_BN OWNAPI(ippsSet_BN)
#define ippsGet_BN OWNAPI(ippsGet_BN)
#define ippsRef_BN OWNAPI(ippsRef_BN)
#define ippsExtGet_BN OWNAPI(ippsExtGet_BN)
#define ippsAdd_BN OWNAPI(ippsAdd_BN)
#define ippsSub_BN OWNAPI(ippsSub_BN)
#define ippsMul_BN OWNAPI(ippsMul_BN)
#define ippsMAC_BN_I OWNAPI(ippsMAC_BN_I)
#define ippsDiv_BN OWNAPI(ippsDiv_BN)
#define ippsMod_BN OWNAPI(ippsMod_BN)
#define ippsGcd_BN OWNAPI(ippsGcd_BN)
#define ippsModInv_BN OWNAPI(ippsModInv_BN)
#define ippsSetOctString_BN OWNAPI(ippsSetOctString_BN)
#define ippsGetOctString_BN OWNAPI(ippsGetOctString_BN)
#define ippsMontGetSize OWNAPI(ippsMontGetSize)
#define ippsMontInit OWNAPI(ippsMontInit)
#define ippsMontSet OWNAPI(ippsMontSet)
#define ippsMontGet OWNAPI(ippsMontGet)
#define ippsMontForm OWNAPI(ippsMontForm)
#define ippsMontMul OWNAPI(ippsMontMul)
#define ippsMontExp OWNAPI(ippsMontExp)
#define ippsPRNGGetSize OWNAPI(ippsPRNGGetSize)
#define ippsPRNGInit OWNAPI(ippsPRNGInit)
#define ippsPRNGSetModulus OWNAPI(ippsPRNGSetModulus)
#define ippsPRNGSetH0 OWNAPI(ippsPRNGSetH0)
#define ippsPRNGSetAugment OWNAPI(ippsPRNGSetAugment)
#define ippsPRNGSetSeed OWNAPI(ippsPRNGSetSeed)
#define ippsPRNGGetSeed OWNAPI(ippsPRNGGetSeed)
#define ippsPRNGen OWNAPI(ippsPRNGen)
#define ippsPRNGen_BN OWNAPI(ippsPRNGen_BN)
#define ippsPRNGenRDRAND OWNAPI(ippsPRNGenRDRAND)
#define ippsPRNGenRDRAND_BN OWNAPI(ippsPRNGenRDRAND_BN)
#define ippsTRNGenRDSEED OWNAPI(ippsTRNGenRDSEED)
#define ippsTRNGenRDSEED_BN OWNAPI(ippsTRNGenRDSEED_BN)
#define ippsPrimeGetSize OWNAPI(ippsPrimeGetSize)
#define ippsPrimeInit OWNAPI(ippsPrimeInit)
#define ippsPrimeGen OWNAPI(ippsPrimeGen)
#define ippsPrimeTest OWNAPI(ippsPrimeTest)
#define ippsPrimeGen_BN OWNAPI(ippsPrimeGen_BN)
#define ippsPrimeTest_BN OWNAPI(ippsPrimeTest_BN)
#define ippsPrimeGet OWNAPI(ippsPrimeGet)
#define ippsPrimeGet_BN OWNAPI(ippsPrimeGet_BN)
#define ippsPrimeSet OWNAPI(ippsPrimeSet)
#define ippsPrimeSet_BN OWNAPI(ippsPrimeSet_BN)
#define ippsRSA_GetSizePublicKey OWNAPI(ippsRSA_GetSizePublicKey)
#define ippsRSA_InitPublicKey OWNAPI(ippsRSA_InitPublicKey)
#define ippsRSA_SetPublicKey OWNAPI(ippsRSA_SetPublicKey)
#define ippsRSA_GetPublicKey OWNAPI(ippsRSA_GetPublicKey)
#define ippsRSA_GetSizePrivateKeyType1 OWNAPI(ippsRSA_GetSizePrivateKeyType1)
#define ippsRSA_InitPrivateKeyType1 OWNAPI(ippsRSA_InitPrivateKeyType1)
#define ippsRSA_SetPrivateKeyType1 OWNAPI(ippsRSA_SetPrivateKeyType1)
#define ippsRSA_GetPrivateKeyType1 OWNAPI(ippsRSA_GetPrivateKeyType1)
#define ippsRSA_GetSizePrivateKeyType2 OWNAPI(ippsRSA_GetSizePrivateKeyType2)
#define ippsRSA_InitPrivateKeyType2 OWNAPI(ippsRSA_InitPrivateKeyType2)
#define ippsRSA_SetPrivateKeyType2 OWNAPI(ippsRSA_SetPrivateKeyType2)
#define ippsRSA_GetPrivateKeyType2 OWNAPI(ippsRSA_GetPrivateKeyType2)
#define ippsRSA_GetBufferSizePublicKey OWNAPI(ippsRSA_GetBufferSizePublicKey)
#define ippsRSA_GetBufferSizePrivateKey OWNAPI(ippsRSA_GetBufferSizePrivateKey)
#define ippsRSA_Encrypt OWNAPI(ippsRSA_Encrypt)
#define ippsRSA_Decrypt OWNAPI(ippsRSA_Decrypt)
#define ippsRSA_GenerateKeys OWNAPI(ippsRSA_GenerateKeys)
#define ippsRSA_ValidateKeys OWNAPI(ippsRSA_ValidateKeys)
#define ippsRSAEncrypt_OAEP OWNAPI(ippsRSAEncrypt_OAEP)
#define ippsRSADecrypt_OAEP OWNAPI(ippsRSADecrypt_OAEP)
#define ippsRSAEncrypt_OAEP_rmf OWNAPI(ippsRSAEncrypt_OAEP_rmf)
#define ippsRSADecrypt_OAEP_rmf OWNAPI(ippsRSADecrypt_OAEP_rmf)
#define ippsRSAEncrypt_PKCSv15 OWNAPI(ippsRSAEncrypt_PKCSv15)
#define ippsRSADecrypt_PKCSv15 OWNAPI(ippsRSADecrypt_PKCSv15)
#define ippsRSASign_PSS OWNAPI(ippsRSASign_PSS)
#define ippsRSAVerify_PSS OWNAPI(ippsRSAVerify_PSS)
#define ippsRSASign_PSS_rmf OWNAPI(ippsRSASign_PSS_rmf)
#define ippsRSAVerify_PSS_rmf OWNAPI(ippsRSAVerify_PSS_rmf)
#define ippsRSASign_PKCS1v15 OWNAPI(ippsRSASign_PKCS1v15)
#define ippsRSAVerify_PKCS1v15 OWNAPI(ippsRSAVerify_PKCS1v15)
#define ippsRSASign_PKCS1v15_rmf OWNAPI(ippsRSASign_PKCS1v15_rmf)
#define ippsRSAVerify_PKCS1v15_rmf OWNAPI(ippsRSAVerify_PKCS1v15_rmf)
#define ippsDLGetResultString OWNAPI(ippsDLGetResultString)
#define ippsDLPGetSize OWNAPI(ippsDLPGetSize)
#define ippsDLPInit OWNAPI(ippsDLPInit)
#define ippsDLPPack OWNAPI(ippsDLPPack)
#define ippsDLPUnpack OWNAPI(ippsDLPUnpack)
#define ippsDLPSet OWNAPI(ippsDLPSet)
#define ippsDLPGet OWNAPI(ippsDLPGet)
#define ippsDLPSetDP OWNAPI(ippsDLPSetDP)
#define ippsDLPGetDP OWNAPI(ippsDLPGetDP)
#define ippsDLPGenKeyPair OWNAPI(ippsDLPGenKeyPair)
#define ippsDLPPublicKey OWNAPI(ippsDLPPublicKey)
#define ippsDLPValidateKeyPair OWNAPI(ippsDLPValidateKeyPair)
#define ippsDLPSetKeyPair OWNAPI(ippsDLPSetKeyPair)
#define ippsDLPSignDSA OWNAPI(ippsDLPSignDSA)
#define ippsDLPVerifyDSA OWNAPI(ippsDLPVerifyDSA)
#define ippsDLPSharedSecretDH OWNAPI(ippsDLPSharedSecretDH)
#define ippsDLPGenerateDSA OWNAPI(ippsDLPGenerateDSA)
#define ippsDLPValidateDSA OWNAPI(ippsDLPValidateDSA)
#define ippsDLPGenerateDH OWNAPI(ippsDLPGenerateDH)
#define ippsDLPValidateDH OWNAPI(ippsDLPValidateDH)
#define ippsECCGetResultString OWNAPI(ippsECCGetResultString)
#define ippsECCPGetSize OWNAPI(ippsECCPGetSize)
#define ippsECCPGetSizeStd128r1 OWNAPI(ippsECCPGetSizeStd128r1)
#define ippsECCPGetSizeStd128r2 OWNAPI(ippsECCPGetSizeStd128r2)
#define ippsECCPGetSizeStd192r1 OWNAPI(ippsECCPGetSizeStd192r1)
#define ippsECCPGetSizeStd224r1 OWNAPI(ippsECCPGetSizeStd224r1)
#define ippsECCPGetSizeStd256r1 OWNAPI(ippsECCPGetSizeStd256r1)
#define ippsECCPGetSizeStd384r1 OWNAPI(ippsECCPGetSizeStd384r1)
#define ippsECCPGetSizeStd521r1 OWNAPI(ippsECCPGetSizeStd521r1)
#define ippsECCPGetSizeStdSM2 OWNAPI(ippsECCPGetSizeStdSM2)
#define ippsECCPInit OWNAPI(ippsECCPInit)
#define ippsECCPInitStd128r1 OWNAPI(ippsECCPInitStd128r1)
#define ippsECCPInitStd128r2 OWNAPI(ippsECCPInitStd128r2)
#define ippsECCPInitStd192r1 OWNAPI(ippsECCPInitStd192r1)
#define ippsECCPInitStd224r1 OWNAPI(ippsECCPInitStd224r1)
#define ippsECCPInitStd256r1 OWNAPI(ippsECCPInitStd256r1)
#define ippsECCPInitStd384r1 OWNAPI(ippsECCPInitStd384r1)
#define ippsECCPInitStd521r1 OWNAPI(ippsECCPInitStd521r1)
#define ippsECCPInitStdSM2 OWNAPI(ippsECCPInitStdSM2)
#define ippsECCPSet OWNAPI(ippsECCPSet)
#define ippsECCPSetStd OWNAPI(ippsECCPSetStd)
#define ippsECCPSetStd128r1 OWNAPI(ippsECCPSetStd128r1)
#define ippsECCPSetStd128r2 OWNAPI(ippsECCPSetStd128r2)
#define ippsECCPSetStd192r1 OWNAPI(ippsECCPSetStd192r1)
#define ippsECCPSetStd224r1 OWNAPI(ippsECCPSetStd224r1)
#define ippsECCPSetStd256r1 OWNAPI(ippsECCPSetStd256r1)
#define ippsECCPSetStd384r1 OWNAPI(ippsECCPSetStd384r1)
#define ippsECCPSetStd521r1 OWNAPI(ippsECCPSetStd521r1)
#define ippsECCPSetStdSM2 OWNAPI(ippsECCPSetStdSM2)
#define ippsECCPBindGxyTblStd192r1 OWNAPI(ippsECCPBindGxyTblStd192r1)
#define ippsECCPBindGxyTblStd224r1 OWNAPI(ippsECCPBindGxyTblStd224r1)
#define ippsECCPBindGxyTblStd256r1 OWNAPI(ippsECCPBindGxyTblStd256r1)
#define ippsECCPBindGxyTblStd384r1 OWNAPI(ippsECCPBindGxyTblStd384r1)
#define ippsECCPBindGxyTblStd521r1 OWNAPI(ippsECCPBindGxyTblStd521r1)
#define ippsECCPBindGxyTblStdSM2 OWNAPI(ippsECCPBindGxyTblStdSM2)
#define ippsECCPGet OWNAPI(ippsECCPGet)
#define ippsECCPGetOrderBitSize OWNAPI(ippsECCPGetOrderBitSize)
#define ippsECCPValidate OWNAPI(ippsECCPValidate)
#define ippsECCPPointGetSize OWNAPI(ippsECCPPointGetSize)
#define ippsECCPPointInit OWNAPI(ippsECCPPointInit)
#define ippsECCPSetPoint OWNAPI(ippsECCPSetPoint)
#define ippsECCPSetPointAtInfinity OWNAPI(ippsECCPSetPointAtInfinity)
#define ippsECCPGetPoint OWNAPI(ippsECCPGetPoint)
#define ippsECCPCheckPoint OWNAPI(ippsECCPCheckPoint)
#define ippsECCPComparePoint OWNAPI(ippsECCPComparePoint)
#define ippsECCPNegativePoint OWNAPI(ippsECCPNegativePoint)
#define ippsECCPAddPoint OWNAPI(ippsECCPAddPoint)
#define ippsECCPMulPointScalar OWNAPI(ippsECCPMulPointScalar)
#define ippsECCPGenKeyPair OWNAPI(ippsECCPGenKeyPair)
#define ippsECCPPublicKey OWNAPI(ippsECCPPublicKey)
#define ippsECCPValidateKeyPair OWNAPI(ippsECCPValidateKeyPair)
#define ippsECCPSetKeyPair OWNAPI(ippsECCPSetKeyPair)
#define ippsECCPSharedSecretDH OWNAPI(ippsECCPSharedSecretDH)
#define ippsECCPSharedSecretDHC OWNAPI(ippsECCPSharedSecretDHC)
#define ippsECCPSignDSA OWNAPI(ippsECCPSignDSA)
#define ippsECCPVerifyDSA OWNAPI(ippsECCPVerifyDSA)
#define ippsECCPSignNR OWNAPI(ippsECCPSignNR)
#define ippsECCPVerifyNR OWNAPI(ippsECCPVerifyNR)
#define ippsECCPSignSM2 OWNAPI(ippsECCPSignSM2)
#define ippsECCPVerifySM2 OWNAPI(ippsECCPVerifySM2)
#define ippsGFpGetSize OWNAPI(ippsGFpGetSize)
#define ippsGFpInitArbitrary OWNAPI(ippsGFpInitArbitrary)
#define ippsGFpInitFixed OWNAPI(ippsGFpInitFixed)
#define ippsGFpInit OWNAPI(ippsGFpInit)
#define ippsGFpMethod_p192r1 OWNAPI(ippsGFpMethod_p192r1)
#define ippsGFpMethod_p224r1 OWNAPI(ippsGFpMethod_p224r1)
#define ippsGFpMethod_p256r1 OWNAPI(ippsGFpMethod_p256r1)
#define ippsGFpMethod_p384r1 OWNAPI(ippsGFpMethod_p384r1)
#define ippsGFpMethod_p521r1 OWNAPI(ippsGFpMethod_p521r1)
#define ippsGFpMethod_p256sm2 OWNAPI(ippsGFpMethod_p256sm2)
#define ippsGFpMethod_p256bn OWNAPI(ippsGFpMethod_p256bn)
#define ippsGFpMethod_p256 OWNAPI(ippsGFpMethod_p256)
#define ippsGFpMethod_pArb OWNAPI(ippsGFpMethod_pArb)
#define ippsGFpxGetSize OWNAPI(ippsGFpxGetSize)
#define ippsGFpxInit OWNAPI(ippsGFpxInit)
#define ippsGFpxInitBinomial OWNAPI(ippsGFpxInitBinomial)
#define ippsGFpxMethod_binom2_epid2 OWNAPI(ippsGFpxMethod_binom2_epid2)
#define ippsGFpxMethod_binom3_epid2 OWNAPI(ippsGFpxMethod_binom3_epid2)
#define ippsGFpxMethod_binom2 OWNAPI(ippsGFpxMethod_binom2)
#define ippsGFpxMethod_binom3 OWNAPI(ippsGFpxMethod_binom3)
#define ippsGFpxMethod_binom OWNAPI(ippsGFpxMethod_binom)
#define ippsGFpxMethod_com OWNAPI(ippsGFpxMethod_com)
#define ippsGFpScratchBufferSize OWNAPI(ippsGFpScratchBufferSize)
#define ippsGFpElementGetSize OWNAPI(ippsGFpElementGetSize)
#define ippsGFpElementInit OWNAPI(ippsGFpElementInit)
#define ippsGFpSetElement OWNAPI(ippsGFpSetElement)
#define ippsGFpSetElementRegular OWNAPI(ippsGFpSetElementRegular)
#define ippsGFpSetElementOctString OWNAPI(ippsGFpSetElementOctString)
#define ippsGFpSetElementRandom OWNAPI(ippsGFpSetElementRandom)
#define ippsGFpSetElementHash OWNAPI(ippsGFpSetElementHash)
#define ippsGFpSetElementHash_rmf OWNAPI(ippsGFpSetElementHash_rmf)
#define ippsGFpCpyElement OWNAPI(ippsGFpCpyElement)
#define ippsGFpGetElement OWNAPI(ippsGFpGetElement)
#define ippsGFpGetElementOctString OWNAPI(ippsGFpGetElementOctString)
#define ippsGFpCmpElement OWNAPI(ippsGFpCmpElement)
#define ippsGFpIsZeroElement OWNAPI(ippsGFpIsZeroElement)
#define ippsGFpIsUnityElement OWNAPI(ippsGFpIsUnityElement)
#define ippsGFpConj OWNAPI(ippsGFpConj)
#define ippsGFpNeg OWNAPI(ippsGFpNeg)
#define ippsGFpInv OWNAPI(ippsGFpInv)
#define ippsGFpSqrt OWNAPI(ippsGFpSqrt)
#define ippsGFpSqr OWNAPI(ippsGFpSqr)
#define ippsGFpAdd OWNAPI(ippsGFpAdd)
#define ippsGFpSub OWNAPI(ippsGFpSub)
#define ippsGFpMul OWNAPI(ippsGFpMul)
#define ippsGFpExp OWNAPI(ippsGFpExp)
#define ippsGFpMultiExp OWNAPI(ippsGFpMultiExp)
#define ippsGFpAdd_PE OWNAPI(ippsGFpAdd_PE)
#define ippsGFpSub_PE OWNAPI(ippsGFpSub_PE)
#define ippsGFpMul_PE OWNAPI(ippsGFpMul_PE)
#define ippsGFpECGetSize OWNAPI(ippsGFpECGetSize)
#define ippsGFpECInit OWNAPI(ippsGFpECInit)
#define ippsGFpECSet OWNAPI(ippsGFpECSet)
#define ippsGFpECSetSubgroup OWNAPI(ippsGFpECSetSubgroup)
#define ippsGFpECInitStd128r1 OWNAPI(ippsGFpECInitStd128r1)
#define ippsGFpECInitStd128r2 OWNAPI(ippsGFpECInitStd128r2)
#define ippsGFpECInitStd192r1 OWNAPI(ippsGFpECInitStd192r1)
#define ippsGFpECInitStd224r1 OWNAPI(ippsGFpECInitStd224r1)
#define ippsGFpECInitStd256r1 OWNAPI(ippsGFpECInitStd256r1)
#define ippsGFpECInitStd384r1 OWNAPI(ippsGFpECInitStd384r1)
#define ippsGFpECInitStd521r1 OWNAPI(ippsGFpECInitStd521r1)
#define ippsGFpECInitStdSM2 OWNAPI(ippsGFpECInitStdSM2)
#define ippsGFpECInitStdBN256 OWNAPI(ippsGFpECInitStdBN256)
#define ippsGFpECBindGxyTblStd192r1 OWNAPI(ippsGFpECBindGxyTblStd192r1)
#define ippsGFpECBindGxyTblStd224r1 OWNAPI(ippsGFpECBindGxyTblStd224r1)
#define ippsGFpECBindGxyTblStd256r1 OWNAPI(ippsGFpECBindGxyTblStd256r1)
#define ippsGFpECBindGxyTblStd384r1 OWNAPI(ippsGFpECBindGxyTblStd384r1)
#define ippsGFpECBindGxyTblStd521r1 OWNAPI(ippsGFpECBindGxyTblStd521r1)
#define ippsGFpECBindGxyTblStdSM2 OWNAPI(ippsGFpECBindGxyTblStdSM2)
#define ippsGFpECGet OWNAPI(ippsGFpECGet)
#define ippsGFpECGetSubgroup OWNAPI(ippsGFpECGetSubgroup)
#define ippsGFpECScratchBufferSize OWNAPI(ippsGFpECScratchBufferSize)
#define ippsGFpECVerify OWNAPI(ippsGFpECVerify)
#define ippsGFpECPointGetSize OWNAPI(ippsGFpECPointGetSize)
#define ippsGFpECPointInit OWNAPI(ippsGFpECPointInit)
#define ippsGFpECSetPointAtInfinity OWNAPI(ippsGFpECSetPointAtInfinity)
#define ippsGFpECSetPoint OWNAPI(ippsGFpECSetPoint)
#define ippsGFpECSetPointRegular OWNAPI(ippsGFpECSetPointRegular)
#define ippsGFpECSetPointRandom OWNAPI(ippsGFpECSetPointRandom)
#define ippsGFpECMakePoint OWNAPI(ippsGFpECMakePoint)
#define ippsGFpECSetPointHash OWNAPI(ippsGFpECSetPointHash)
#define ippsGFpECSetPointHash_rmf OWNAPI(ippsGFpECSetPointHash_rmf)
#define ippsGFpECGetPoint OWNAPI(ippsGFpECGetPoint)
#define ippsGFpECGetPointRegular OWNAPI(ippsGFpECGetPointRegular)
#define ippsGFpECSetPointOctString OWNAPI(ippsGFpECSetPointOctString)
#define ippsGFpECGetPointOctString OWNAPI(ippsGFpECGetPointOctString)
#define ippsGFpECTstPoint OWNAPI(ippsGFpECTstPoint)
#define ippsGFpECTstPointInSubgroup OWNAPI(ippsGFpECTstPointInSubgroup)
#define ippsGFpECCpyPoint OWNAPI(ippsGFpECCpyPoint)
#define ippsGFpECCmpPoint OWNAPI(ippsGFpECCmpPoint)
#define ippsGFpECNegPoint OWNAPI(ippsGFpECNegPoint)
#define ippsGFpECAddPoint OWNAPI(ippsGFpECAddPoint)
#define ippsGFpECMulPoint OWNAPI(ippsGFpECMulPoint)
#define ippsGFpECPrivateKey OWNAPI(ippsGFpECPrivateKey)
#define ippsGFpECPublicKey OWNAPI(ippsGFpECPublicKey)
#define ippsGFpECTstKeyPair OWNAPI(ippsGFpECTstKeyPair)
#define ippsGFpECSharedSecretDH OWNAPI(ippsGFpECSharedSecretDH)
#define ippsGFpECSharedSecretDHC OWNAPI(ippsGFpECSharedSecretDHC)
#define ippsGFpECSignDSA OWNAPI(ippsGFpECSignDSA)
#define ippsGFpECVerifyDSA OWNAPI(ippsGFpECVerifyDSA)
#define ippsGFpECSignNR OWNAPI(ippsGFpECSignNR)
#define ippsGFpECVerifyNR OWNAPI(ippsGFpECVerifyNR)
#define ippsGFpECSignSM2 OWNAPI(ippsGFpECSignSM2)
#define ippsGFpECVerifySM2 OWNAPI(ippsGFpECVerifySM2)
#define ippsGFpECESGetSize_SM2 OWNAPI(ippsGFpECESGetSize_SM2)
#define ippsGFpECESInit_SM2 OWNAPI(ippsGFpECESInit_SM2)
#define ippsGFpECESSetKey_SM2 OWNAPI(ippsGFpECESSetKey_SM2)
#define ippsGFpECESStart_SM2 OWNAPI(ippsGFpECESStart_SM2)
#define ippsGFpECESEncrypt_SM2 OWNAPI(ippsGFpECESEncrypt_SM2)
#define ippsGFpECESDecrypt_SM2 OWNAPI(ippsGFpECESDecrypt_SM2)
#define ippsGFpECESFinal_SM2 OWNAPI(ippsGFpECESFinal_SM2)
#define ippsGFpECESGetBuffersSize_SM2 OWNAPI(ippsGFpECESGetBuffersSize_SM2)
#include "ippcp.h"
#endif
/*
// modes of the CPU feature
*/
#define _FEATURE_OFF_ (0) /* feature is OFF a priori */
#define _FEATURE_ON_ (1) /* feature is ON a priori */
#define _FEATURE_TICKTOCK_ (2) /* dectect is feature OFF/ON */
#include "pcpvariant.h"
#pragma warning( disable : 4996 4324 4206)
/* ippCP length */
typedef int cpSize;
/*
// Common ippCP Macros
*/
/* size of cache line (bytes) */
#if (_IPP==_IPP_M5)
#define CACHE_LINE_SIZE (16)
#define LOG_CACHE_LINE_SIZE (4)
#else
#define CACHE_LINE_SIZE (64)
#define LOG_CACHE_LINE_SIZE (6)
#endif
/* swap data & pointers */
#define SWAP_PTR(ATYPE, pX,pY) { ATYPE* aPtr=(pX); (pX)=(pY); (pY)=aPtr; }
#define SWAP(x,y) {(x)^=(y); (y)^=(x); (x)^=(y);}
/* alignment value */
#define ALIGN_VAL ((int)sizeof(void*))
/* bitsize */
#define BYTESIZE (8)
#define BITSIZE(x) ((int)(sizeof(x)*BYTESIZE))
/* bit length -> byte/word length conversion */
#define BITS2WORD8_SIZE(x) (((x)+ 7)>>3)
#define BITS2WORD16_SIZE(x) (((x)+15)>>4)
#define BITS2WORD32_SIZE(x) (((x)+31)>>5)
#define BITS2WORD64_SIZE(x) (((x)+63)>>6)
/* WORD and DWORD manipulators */
#define LODWORD(x) ((Ipp32u)(x))
#define HIDWORD(x) ((Ipp32u)(((Ipp64u)(x) >>32) & 0xFFFFFFFF))
#define MAKEHWORD(bLo,bHi) ((Ipp16u)(((Ipp8u)(bLo)) | ((Ipp16u)((Ipp8u)(bHi))) << 8))
#define MAKEWORD(hLo,hHi) ((Ipp32u)(((Ipp16u)(hLo)) | ((Ipp32u)((Ipp16u)(hHi))) << 16))
#define MAKEDWORD(wLo,wHi) ((Ipp64u)(((Ipp32u)(wLo)) | ((Ipp64u)((Ipp32u)(wHi))) << 32))
/* extract byte */
#define EBYTE(w,n) ((Ipp8u)((w) >> (8 * (n))))
/* hexString <-> Ipp32u conversion */
#define HSTRING_TO_U32(ptrByte) \
((((ptrByte)[0]) <<24) \
+(((ptrByte)[1]) <<16) \
+(((ptrByte)[2]) <<8) \
+((ptrByte)[3]))
#define U32_TO_HSTRING(ptrByte, x) \
(ptrByte)[0] = (Ipp8u)((x)>>24); \
(ptrByte)[1] = (Ipp8u)((x)>>16); \
(ptrByte)[2] = (Ipp8u)((x)>>8); \
(ptrByte)[3] = (Ipp8u)(x)
/* 32- and 64-bit masks for MSB of nbits-sequence */
#define MAKEMASK32(nbits) (0xFFFFFFFF >>((32 - ((nbits)&0x1F)) &0x1F))
#define MAKEMASK64(nbits) (0xFFFFFFFFFFFFFFFF >>((64 - ((nbits)&0x3F)) &0x3F))
/* Logical Shifts (right and left) of WORD */
#define LSR32(x,nBits) ((x)>>(nBits))
#define LSL32(x,nBits) ((x)<<(nBits))
/* Rorate (right and left) of WORD */
#if defined(_MSC_VER) && !defined( __ICL )
# include <stdlib.h>
# define ROR32(x, nBits) _lrotr((x),(nBits))
# define ROL32(x, nBits) _lrotl((x),(nBits))
#else
# define ROR32(x, nBits) (LSR32((x),(nBits)) | LSL32((x),32-(nBits)))
# define ROL32(x, nBits) ROR32((x),(32-(nBits)))
#endif
/* Logical Shifts (right and left) of DWORD */
#define LSR64(x,nBits) ((x)>>(nBits))
#define LSL64(x,nBits) ((x)<<(nBits))
/* Rorate (right and left) of DWORD */
#define ROR64(x, nBits) (LSR64((x),(nBits)) | LSL64((x),64-(nBits)))
#define ROL64(x, nBits) ROR64((x),(64-(nBits)))
/* change endian */
#if defined(_MSC_VER)
# define ENDIANNESS(x) _byteswap_ulong((x))
# define ENDIANNESS32(x) ENDIANNESS((x))
# define ENDIANNESS64(x) _byteswap_uint64((x))
#elif defined(__ICL)
# define ENDIANNESS(x) _bswap((x))
# define ENDIANNESS32(x) ENDIANNESS((x))
# define ENDIANNESS64(x) _bswap64((x))
#else
# define ENDIANNESS(x) ((ROR32((x), 24) & 0x00ff00ff) | (ROR32((x), 8) & 0xff00ff00))
# define ENDIANNESS32(x) ENDIANNESS((x))
# define ENDIANNESS64(x) MAKEDWORD(ENDIANNESS(HIDWORD((x))), ENDIANNESS(LODWORD((x))))
#endif
#define IPP_MAKE_MULTIPLE_OF_8(x) ((x) = ((x)+7)&(~7))
#define IPP_MAKE_MULTIPLE_OF_16(x) ((x) = ((x)+15)&(~15))
/* define 64-bit constant */
#if !defined(__GNUC__)
#define CONST_64(x) (x) /*(x##i64)*/
#else
#define CONST_64(x) (x##LL)
#endif
/* define 64-bit constant or pair of 32-bit dependding on architecture */
#if ((_IPP_ARCH == _IPP_ARCH_EM64T) || (_IPP_ARCH == _IPP_ARCH_LP64) || (_IPP_ARCH == _IPP_ARCH_LRB) || (_IPP_ARCH == _IPP_ARCH_LRB2))
#define LL(lo,hi) ((Ipp64u)(((Ipp32u)(lo)) | ((Ipp64u)((Ipp32u)(hi))) << 32))
#define L_(lo) ((Ipp64u)(lo))
#else
#define LL(lo,hi) (lo),(hi)
#define L_(lo) (lo)
#endif
/* test if library's feature is ON */
int cpGetFeature( Ipp64u Feature );
/* test CPU crypto features */
__INLINE Ipp32u IsFeatureEnabled(Ipp64u niMmask)
{
return cpGetFeature(niMmask);
}
#define IPPCP_GET_NUM_THREADS() ( ippcpGetEnabledNumThreads() )
#define IPPCP_OMP_NUM_THREADS() num_threads( IPPCP_GET_NUM_THREADS() )
#define IPPCP_OMP_LIMIT_MAX_NUM_THREADS(n) num_threads( IPP_MIN(IPPCP_GET_NUM_THREADS(),(n)))
/* copy under mask */
#define MASKED_COPY_BNU(dst, mask, src1, src2, len) { \
cpSize i; \
for(i=0; i<(len); i++) (dst)[i] = ((mask) & (src1)[i]) | (~(mask) & (src2)[i]); \
}
#if !defined( _M_X64 ) && defined ( _MSC_VER ) && !defined(__INTEL_COMPILER)
#if (_AES_NI_ENABLING_ == _FEATURE_ON_) || \
(_AES_NI_ENABLING_ == _FEATURE_TICKTOCK_) || (_IPP >= _IPP_W7)
__inline __m128i
_mm_cvtsi64_si128(__int64 a)
{
__m128i x;
x.m128i_i64[0] = a;
x.m128i_i64[1] = 0;
return x;
}
#endif
#endif
#endif /* __OWNCP_H__ */
|