ReactOS 0.4.17-dev-1005-g171e1de
a_dispatch.c
Go to the documentation of this file.
1//
2// a_dispatch.c Dispatch between different arithmetic format implementations.
3//
4// Copyright (c) Microsoft Corporation. Licensed under the MIT license.
5//
6// SymCrypt can have multiple implementations of the arithmetic operations, and these can
7// have incompatible formats used to store the integers.
8// This file contains logic to dispatch between these incompatible formats.
9// Currently all implementations use the default format, or "Fdef".
10//
11
12#include "precomp.h"
13
14//
15// Define the FDEF dispatch table here.
16// This should eventually be split out so that different users of the library can use different
17// table sets & implementation choice functions.
18//
19
20
22 SYMCRYPT_MOD_FUNCTIONS_FDEF_GENERIC, // Handles any type of modulus
23 SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY, // Montgomery, only for odd parity-public moduli
24
25#if SYMCRYPT_CPU_AMD64
26
27 SYMCRYPT_MOD_FUNCTIONS_FDEF369_MONTGOMERY, // optimized for 384 and 576-bit moduli
28 SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX256, // Special faster code for 256-bit Montgomery moduli, MULX-based code
29 SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULXP384, // Special faster code for P-384 field modulus, MULX-based code
30 SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX, // MULX-based code, for any size (digit size = 512 bits)
31 SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX1024, // Special faster code for 1024-bit Montgomery moduli, MULX-based code
32 {NULL,},
33
34 // SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULXP256, // Special faster code for P-256 field modulus, MULX-based code
35 // SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX384, // Special faster code for 384-bit Montgomery moduli, MULX-based code
36 // SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY256, // Special faster code for 256-bit Montgomery moduli
37 // SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY512, // Special faster code for 512-bit Montgomery moduli
38 // SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY1024, // Special faster code for 1024-bit Montgomery moduli
39
40#elif SYMCRYPT_CPU_ARM64
41
45 {NULL,},
46 {NULL,},
47 {NULL,},
48
49#endif
50};
51
52#define SymCryptModLabel(_label) (_label << 16)
53#define SymCryptModFntableGeneric (SymCryptModLabel('gM') + (0 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
54#define SymCryptModFntableMontgomery (SymCryptModLabel('mM') + (1 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
55#define SymCryptModFntable369Montgomery (SymCryptModLabel('9m') + (2 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
56#define SymCryptModFntableMontgomeryMulx256 (SymCryptModLabel('2x') + (3 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
57#define SymCryptModFntableMontgomeryMulxP384 (SymCryptModLabel('3n') + (4 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
58#define SymCryptModFntableMontgomeryMulx (SymCryptModLabel('xM') + (5 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
59#define SymCryptModFntableMontgomeryMulx1024 (SymCryptModLabel('1x') + (6 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
60
61#define SymCryptModFntableMontgomeryArm64256 (SymCryptModLabel('2m') + (3 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
62#define SymCryptModFntableMontgomeryArm64P384 (SymCryptModLabel('3n') + (4 * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
63
64// #define SymCryptModFntableMontgomeryMulxP256 (SymCryptModLabel('2n') + (xx * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
65// #define SymCryptModFntableMontgomeryMulx384 (SymCryptModLabel('3x') + (xx * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
66// #define SymCryptModFntableMontgomery256 (SymCryptModLabel('2m') + (xx * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
67// #define SymCryptModFntableMontgomery512 (SymCryptModLabel('5m') + (xx * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
68// #define SymCryptModFntableMontgomery1024 (SymCryptModLabel('1m') + (xx * SYMCRYPT_MODULAR_FUNCTIONS_SIZE))
69
70C_ASSERT( (sizeof( g_SymCryptModFns ) & (sizeof( g_SymCryptModFns) - 1 )) == 0 ); // size of the table must be a power of 2 to be CFG-safe.
71
73
74//
75// Tweaking the selection & function tables allows different tradeoffs of performance vs codesize
76//
78{
79#if SYMCRYPT_CPU_AMD64
80 // Mulx used for 0-512 and 577-... bits
89
90#elif SYMCRYPT_CPU_ARM64
91
97
98#endif
99
101 {SymCryptModFntableGeneric, 0, 0, 0 },
102 // This last entry always matches, so the code never falls off the end of this table.
103};
104
105
106//
107// At the moment there is only the default number format.
108//
109
110UINT32
112{
114}
115
116
120{
121 return SymCryptFdefIntAllocate( nDigits );
122}
123
124VOID
127{
128 SymCryptIntWipe( piObj );
129 SymCryptCallbackFree( piObj );
130}
131
132UINT32
135{
136 return SymCryptFdefSizeofIntFromDigits( nDigits );
137}
138
144 UINT32 nDigits )
145{
146 return SymCryptFdefIntCreate( pbBuffer, cbBuffer, nDigits );
147}
148
149VOID
152{
153 SYMCRYPT_CHECK_MAGIC( piDst );
154
155 // Wipe the whole structure in one go;
156 SymCryptWipe( piDst, piDst->cbSize );
157}
158
159VOID
162 _In_ PCSYMCRYPT_INT piSrc,
163 _Out_ PSYMCRYPT_INT piDst )
164{
165 SymCryptFdefIntCopy( piSrc, piDst );
166}
167
168VOID
171 _In_ PCSYMCRYPT_INT piSrc,
173 UINT32 mask )
174{
175 SymCryptFdefIntMaskedCopy( piSrc, piDst, mask );
176}
177
178VOID
181 _In_ PCSYMCRYPT_INT piSrc,
183 UINT32 cond )
184{
185 SymCryptFdefIntConditionalCopy( piSrc, piDst, cond );
186}
187
188VOID
191 _Inout_ PSYMCRYPT_INT piSrc1,
192 _Inout_ PSYMCRYPT_INT piSrc2,
193 UINT32 cond )
194{
195 SymCryptFdefIntConditionalSwap( piSrc1, piSrc2, cond );
196}
197
198UINT32
201{
202 return SymCryptFdefIntBitsizeOfObject( piSrc );
203}
204
205UINT32
208{
209 return piSrc->nDigits;
210}
211
215 _In_ PCSYMCRYPT_INT piSrc,
216 _Out_ PSYMCRYPT_INT piDst )
217{
218 return SymCryptFdefIntCopyMixedSize( piSrc, piDst );
219}
220
221UINT32
224{
225 return SymCryptFdefIntBitsizeOfValue( piSrc );
226}
227
228VOID
231 UINT32 u32Src,
232 _Out_ PSYMCRYPT_INT piDst )
233{
234 SymCryptFdefIntSetValueUint32( u32Src, piDst );
235}
236
237VOID
240 UINT64 u64Src,
241 _Out_ PSYMCRYPT_INT piDst )
242{
243 SymCryptFdefIntSetValueUint64( u64Src, piDst );
244}
245
250 SIZE_T cbSrc,
252 _Out_ PSYMCRYPT_INT piDst )
253{
254 return SymCryptFdefIntSetValue( pbSrc, cbSrc, format, piDst );
255}
256
260 _In_ PCSYMCRYPT_INT piSrc,
262 SIZE_T cbDst,
264{
265 return SymCryptFdefIntGetValue( piSrc, pbDst, cbDst, format );
266}
267
268UINT32
271{
272 return SymCryptFdefIntGetValueLsbits32( piSrc );
273}
274
275UINT64
278{
279 return SymCryptFdefIntGetValueLsbits64( piSrc );
280}
281
282UINT32
285 _In_ PCSYMCRYPT_INT piSrc1,
286 UINT32 u32Src2,
287 _Out_ PSYMCRYPT_INT piDst )
288{
289 return SymCryptFdefIntAddUint32( piSrc1, u32Src2, piDst );
290}
291
292UINT32
295 _In_ PCSYMCRYPT_INT piSrc1,
296 _In_ PCSYMCRYPT_INT piSrc2,
297 _Out_ PSYMCRYPT_INT piDst )
298{
299 return SymCryptFdefIntAddSameSize( piSrc1, piSrc2, piDst );
300}
301
302UINT32
305 _In_ PCSYMCRYPT_INT piSrc1,
306 _In_ PCSYMCRYPT_INT piSrc2,
307 _Out_ PSYMCRYPT_INT piDst )
308{
309 return SymCryptFdefIntAddMixedSize( piSrc1, piSrc2, piDst );
310}
311
312UINT32
315 _In_ PCSYMCRYPT_INT piSrc1,
316 UINT32 u32Src2,
317 _Out_ PSYMCRYPT_INT piDst )
318{
319 return SymCryptFdefIntSubUint32( piSrc1, u32Src2, piDst );
320}
321
322UINT32
325 _In_ PCSYMCRYPT_INT piSrc1,
326 _In_ PCSYMCRYPT_INT piSrc2,
327 _Out_ PSYMCRYPT_INT piDst )
328{
329 return SymCryptFdefIntSubSameSize( piSrc1, piSrc2, piDst );
330}
331
332UINT32
335 _In_ PCSYMCRYPT_INT piSrc1,
336 _In_ PCSYMCRYPT_INT piSrc2,
337 _Out_ PSYMCRYPT_INT piDst )
338{
339 return SymCryptFdefIntSubMixedSize( piSrc1, piSrc2, piDst );
340}
341
342VOID
345 _In_ PCSYMCRYPT_INT piSrc,
346 _Out_ PSYMCRYPT_INT piDst )
347{
348 SymCryptFdefIntNeg( piSrc, piDst );
349}
350
351
352VOID
355 _In_ PCSYMCRYPT_INT piSrc,
356 SIZE_T exp,
357 _Out_ PSYMCRYPT_INT piDst )
358{
359 SymCryptFdefIntMulPow2( piSrc, exp, piDst );
360}
361
362VOID
365 _In_ PCSYMCRYPT_INT piSrc,
366 SIZE_T exp,
367 _Out_ PSYMCRYPT_INT piDst )
368{
369 SymCryptFdefIntDivPow2( piSrc, exp, piDst );
370}
371
372VOID
375 UINT32 highestBit,
376 _In_ PCSYMCRYPT_INT piSrc,
377 _Out_ PSYMCRYPT_INT piDst )
378{
379 SymCryptFdefIntShr1( highestBit, piSrc, piDst );
380}
381
382VOID
385 _In_ PCSYMCRYPT_INT piSrc,
386 SIZE_T exp,
387 _Out_ PSYMCRYPT_INT piDst )
388{
389 SymCryptFdefIntModPow2( piSrc, exp, piDst );
390}
391
392UINT32
395 _In_ PCSYMCRYPT_INT piSrc,
396 UINT32 iBit )
397{
398 return SymCryptFdefIntGetBit( piSrc, iBit );
399}
400
401UINT32
404 _In_ PCSYMCRYPT_INT piSrc,
405 UINT32 iBit,
406 UINT32 nBits )
407{
408 return SymCryptFdefIntGetBits( piSrc, iBit, nBits );
409}
410
411VOID
414 _In_ PSYMCRYPT_INT piDst,
416 UINT32 iBit,
417 UINT32 nBits )
418{
419 SymCryptFdefIntSetBits( piDst, value, iBit, nBits );
420}
421
422UINT32
425 _In_ PCSYMCRYPT_INT piSrc1,
426 _In_ UINT32 u32Src2 )
427{
428 return SymCryptFdefIntIsEqualUint32( piSrc1, u32Src2 );
429}
430
431UINT32
434 _In_ PCSYMCRYPT_INT piSrc1,
435 _In_ PCSYMCRYPT_INT piSrc2 )
436{
437 return SymCryptFdefIntIsEqual( piSrc1, piSrc2 );
438}
439
440UINT32
443 _In_ PCSYMCRYPT_INT piSrc1,
444 _In_ PCSYMCRYPT_INT piSrc2 )
445{
446 return SymCryptFdefIntIsLessThan( piSrc1, piSrc2 );
447}
448
449UINT32
452 _In_ PCSYMCRYPT_INT piSrc1,
453 UINT32 Src2,
454 _Out_ PSYMCRYPT_INT piDst )
455{
456 return SymCryptFdefIntMulUint32( piSrc1, Src2, piDst );
457}
458
459VOID
462 _In_ PCSYMCRYPT_INT piSrc1,
463 _In_ PCSYMCRYPT_INT piSrc2,
464 _Out_ PSYMCRYPT_INT piDst,
467{
468 SymCryptFdefIntMulSameSize( piSrc1, piSrc2, piDst, pbScratch, cbScratch );
469}
470
471
472VOID
475 _In_ PCSYMCRYPT_INT piSrc,
476 _Out_ PSYMCRYPT_INT piDst,
479{
480 SymCryptFdefIntSquare( piSrc, piDst, pbScratch, cbScratch );
481}
482
483VOID
486 _In_ PCSYMCRYPT_INT piSrc1,
487 _In_ PCSYMCRYPT_INT piSrc2,
488 _Out_ PSYMCRYPT_INT piDst,
491{
492 SymCryptFdefIntMulMixedSize( piSrc1, piSrc2, piDst, pbScratch, cbScratch );
493}
494
498{
499 return SymCryptFdefDivisorAllocate( nDigits );
500}
501
502VOID
505{
506 SymCryptDivisorWipe( pdObj );
507 SymCryptCallbackFree( pdObj );
508}
509
510UINT32
513{
514 return SymCryptFdefSizeofDivisorFromDigits( nDigits );
515}
516
522 UINT32 nDigits )
523{
524 return SymCryptFdefDivisorCreate( pbBuffer, cbBuffer, nDigits );
525}
526
527VOID
530{
531 SYMCRYPT_CHECK_MAGIC( pdObj );
532
533 SymCryptWipe( pdObj, pdObj->cbSize );
534}
535
536VOID
540{
541 SymCryptFdefDivisorCopy( pdSrc, pdDst );
542}
543
544UINT32
547{
548 return pdSrc->nDigits;
549}
550
554{
555 return SymCryptFdefIntFromDivisor( pdSrc );
556}
557
558VOID
561 _In_ PCSYMCRYPT_INT piSrc,
563 UINT32 totalOperations,
567{
568 SymCryptFdefIntToDivisor( piSrc, pdDst, totalOperations, flags, pbScratch, cbScratch );
569}
570
571VOID
574 _In_ PCSYMCRYPT_INT piSrc,
575 _In_ PCSYMCRYPT_DIVISOR pdDivisor,
576 _Out_opt_ PSYMCRYPT_INT piQuotient,
577 _Out_opt_ PSYMCRYPT_INT piRemainder,
580{
581 SymCryptFdefIntDivMod( piSrc, pdDivisor, piQuotient, piRemainder, pbScratch, cbScratch );
582}
583
584
588{
589 return SymCryptFdefModulusAllocate( nDigits );
590}
591
592VOID
595{
597}
598
599UINT32
602{
603 return SymCryptFdefSizeofModulusFromDigits( nDigits );
604}
605
611 UINT32 nDigits )
612{
613 return SymCryptFdefModulusCreate( pbBuffer, cbBuffer, nDigits );
614}
615
616VOID
619{
620 SYMCRYPT_CHECK_MAGIC( pmObj );
621
622 SymCryptWipe( pmObj, pmObj->cbSize );
623}
624
625VOID
629{
630 SymCryptFdefModulusCopy( pmSrc, pmDst );
631}
632
633UINT32
636{
637 return pmSrc->nDigits;
638}
639
643{
644 return SymCryptFdefModElementAllocate( pmMod );
645}
646
647VOID
652{
653 SymCryptFdefModElementFree( pmMod, peObj );
654}
655
656UINT32
659{
661}
662
669{
670 return SymCryptFdefModElementCreate( pbBuffer, cbBuffer, pmMod );
671}
672
673VOID
678{
679 SymCryptFdefModElementWipe( pmMod, peDst );
680}
681
682VOID
687{
688 SymCryptFdefModElementCopy( pmMod, peSrc, peDst );
689}
690
691VOID
696 UINT32 mask )
697{
698 SymCryptFdefModElementMaskedCopy( pmMod, peSrc, peDst, mask );
699}
700
704{
705 return SymCryptFdefDivisorFromModulus( pmSrc );
706}
707
708VOID
713 _In_ UINT32 cond )
714{
715 SymCryptFdefModElementConditionalSwap( pmMod, peData1, peData2, cond );
716}
717
721{
722 return SymCryptFdefIntFromModulus( pmSrc );
723}
724
725VOID
728 _In_ PCSYMCRYPT_INT piSrc,
730 UINT32 averageOperations,
734{
735 PSYMCRYPT_INT piSrcTweak = (PSYMCRYPT_INT) piSrc;
736
737 // In CHKed build, we'll verify that the modulus is not prime, or that it is 2 or odd
738 // (Some inversion algorithms fail hard when one input isn't 2 or odd.)
739 // We are constant-time w.r.t. piSrc being odd or =2. We don't hide the size of any input,
740 // but inputs 2 and 3 are handled with the same code path.
742 (((SymCryptIntGetValueLsbits32( piSrc ) & 1) | SymCryptIntIsEqualUint32( piSrc, 2 )) != 0) );
743
744 SymCryptFdefIntToModulus( piSrcTweak, pmDst, averageOperations, flags, pbScratch, cbScratch );
745}
746
747VOID
750 _In_ PCSYMCRYPT_INT piSrc,
755{
756 SymCryptFdefIntToModElement( piSrc, pmMod, peDst, pbScratch, cbScratch );
757}
758
760VOID
765 _Out_ PSYMCRYPT_INT piDst,
768{
770
771 SYMCRYPT_ASSERT( piDst->nDigits >= pmMod->nDigits );
772
773 pData = SYMCRYPT_MOD_CALL( pmMod ) modPreGet( pmMod, peSrc, pbScratch, cbScratch );
774
775 SymCryptFdefModElementToIntGeneric( pmMod, pData, piDst, pbScratch, cbScratch );
776}
777
783 SIZE_T cbSrc,
785 PCSYMCRYPT_MODULUS pmMod,
789{
790 SYMCRYPT_ERROR scError;
791
792 scError = SymCryptFdefModElementSetValueGeneric( pbSrc, cbSrc, format, pmMod, peDst, pbScratch, cbScratch );
793
794 if( scError == SYMCRYPT_NO_ERROR )
795 {
796 SYMCRYPT_MOD_CALL( pmMod ) modSetPost( pmMod, peDst, pbScratch, cbScratch );
797 }
798
799 return scError;
800}
801
805 PCSYMCRYPT_MODULUS pmMod,
808 SIZE_T cbDst,
812{
813 return SymCryptFdefModElementGetValue( pmMod, peSrc, pbDst, cbDst, format, pbScratch, cbScratch );
814}
815
816UINT32
822{
823 return SymCryptFdefModElementIsEqual( pmMod, peSrc1, peSrc2 );
824}
825
826UINT32
831{
832 return SymCryptFdefModElementIsZero( pmMod, peSrc );
833}
834
836VOID
845{
846 SYMCRYPT_MOD_CALL( pmMod ) modAdd( pmMod, peSrc1, peSrc2, peDst, pbScratch, cbScratch );
847}
848
850VOID
859{
860 SYMCRYPT_MOD_CALL( pmMod ) modSub( pmMod, peSrc1, peSrc2, peDst, pbScratch, cbScratch );
861}
862
863
865VOID
874{
875 SYMCRYPT_MOD_CALL( pmMod ) modMul( pmMod, peSrc1, peSrc2, peDst, pbScratch, cbScratch );
876}
877
879VOID
887{
888 SYMCRYPT_MOD_CALL( pmMod ) modSquare( pmMod, peSrc, peDst, pbScratch, cbScratch );
889}
890
891
893VOID
901{
902 SYMCRYPT_MOD_CALL( pmMod ) modNeg( pmMod, peSrc, peDst, pbScratch, cbScratch );
903}
904
906VOID
914{
916
917 SYMCRYPT_MOD_CALL( pmMod ) modSetPost( pmMod, peDst, pbScratch, cbScratch );
918}
919
920VOID
928{
929 SymCryptFdefModElementSetValueNegUint32( value, pmMod, peDst, pbScratch, cbScratch );
930}
931
932VOID
937 UINT32 exp,
941{
942 SymCryptFdefModDivPow2( pmMod, peSrc, exp, peDst, pbScratch, cbScratch );
943}
944
955{
956 return SYMCRYPT_MOD_CALL( pmMod ) modInv( pmMod, peSrc, peDst, flags, pbScratch, cbScratch );
957}
958
959VOID
964 _In_ PCSYMCRYPT_INT piExp,
965 UINT32 nBitsExp,
970{
971 SymCryptModExpGeneric( pmMod, peBase, piExp, nBitsExp, flags, peDst, pbScratch, cbScratch );
972}
973
978 _In_reads_( nBases ) PCSYMCRYPT_MODELEMENT * peBaseArray,
979 _In_reads_( nBases ) PCSYMCRYPT_INT * piExpArray,
980 UINT32 nBases,
981 UINT32 nBitsExp,
986{
987 return SymCryptModMultiExpGeneric( pmMod, peBaseArray, piExpArray, nBases, nBitsExp, flags, peDst, pbScratch, cbScratch );
988}
989
991VOID
999{
1000 SymCryptFdefModSetRandomGeneric( pmMod, peDst, flags, pbScratch, cbScratch );
1001
1002 SYMCRYPT_MOD_CALL( pmMod ) modSetPost( pmMod, peDst, pbScratch, cbScratch );
1003}
1004
1008{
1010}
1011
1012UINT32
1016 _In_ PCSYMCRYPT_INT piSrc,
1017 _Out_writes_bytes_( cbScratch ) PBYTE pbScratch,
1019{
1020 return SymCryptFdefIntFindSmallDivisor( pContext, piSrc, pbScratch, cbScratch );
1021}
1022
1023VOID
1026{
1028}
PCSYMCRYPT_TRIALDIVISION_CONTEXT SYMCRYPT_CALL SymCryptCreateTrialDivisionContext(UINT32 nDigits)
Definition: a_dispatch.c:1007
VOID SYMCRYPT_CALL SymCryptIntNeg(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:344
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModElementSetValueUint32(UINT32 value, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:908
UINT32 SYMCRYPT_CALL SymCryptIntGetValueLsbits32(_In_ PCSYMCRYPT_INT piSrc)
Definition: a_dispatch.c:270
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModAdd(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc1, _In_ PCSYMCRYPT_MODELEMENT peSrc2, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:838
VOID SYMCRYPT_CALL SymCryptDivisorWipe(_Out_ PSYMCRYPT_DIVISOR pdObj)
Definition: a_dispatch.c:529
UINT32 SYMCRYPT_CALL SymCryptSizeofDivisorFromDigits(UINT32 nDigits)
Definition: a_dispatch.c:512
UINT32 SYMCRYPT_CALL SymCryptIntIsLessThan(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2)
Definition: a_dispatch.c:442
UINT32 SYMCRYPT_CALL SymCryptSizeofModElementFromModulus(PCSYMCRYPT_MODULUS pmMod)
Definition: a_dispatch.c:658
VOID SYMCRYPT_CALL SymCryptIntToModElement(_In_ PCSYMCRYPT_INT piSrc, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:749
VOID SYMCRYPT_CALL SymCryptIntSetBits(_In_ PSYMCRYPT_INT piDst, UINT32 value, UINT32 iBit, UINT32 nBits)
Definition: a_dispatch.c:413
VOID SymCryptModElementMaskedCopy(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst, UINT32 mask)
Definition: a_dispatch.c:692
UINT32 SYMCRYPT_CALL SymCryptIntSubUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 u32Src2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:314
VOID SYMCRYPT_CALL SymCryptIntDivPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:364
VOID SYMCRYPT_CALL SymCryptIntSetValueUint64(UINT64 u64Src, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:239
UINT32 SYMCRYPT_CALL SymCryptIntBitsizeOfObject(_In_ PCSYMCRYPT_INT piSrc)
Definition: a_dispatch.c:200
#define SymCryptModFntableMontgomeryMulxP384
Definition: a_dispatch.c:57
VOID SYMCRYPT_CALL SymCryptIntShr1(UINT32 highestBit, _In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:374
SYMCRYPT_DISABLE_CFG SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModElementSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:781
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptDivisorFromModulus(_In_ PSYMCRYPT_MODULUS pmSrc)
Definition: a_dispatch.c:703
VOID SYMCRYPT_CALL SymCryptIntCopy(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:161
UINT32 SYMCRYPT_CALL SymCryptIntAddSameSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:294
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModMul(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc1, _In_ PCSYMCRYPT_MODELEMENT peSrc2, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:867
SYMCRYPT_DISABLE_CFG SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModInv(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:948
UINT32 SYMCRYPT_CALL SymCryptModElementIsZero(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc)
Definition: a_dispatch.c:828
UINT32 SymCryptDigitsFromBits(UINT32 nBits)
Definition: a_dispatch.c:111
UINT32 SYMCRYPT_CALL SymCryptModElementIsEqual(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc1, _In_ PCSYMCRYPT_MODELEMENT peSrc2)
Definition: a_dispatch.c:818
VOID SYMCRYPT_CALL SymCryptDivisorFree(_Out_ PSYMCRYPT_DIVISOR pdObj)
Definition: a_dispatch.c:504
UINT32 SYMCRYPT_CALL SymCryptIntSubMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:334
VOID SymCryptModElementConditionalSwap(_In_ PCSYMCRYPT_MODULUS pmMod, _Inout_ PSYMCRYPT_MODELEMENT peData1, _Inout_ PSYMCRYPT_MODELEMENT peData2, _In_ UINT32 cond)
Definition: a_dispatch.c:709
const SYMCRYPT_MODULUS_TYPE_SELECTION_ENTRY SymCryptModulusTypeSelections[]
Definition: a_dispatch.c:77
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptIntCopyMixedSize(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:214
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModNeg(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:895
UINT32 SYMCRYPT_CALL SymCryptIntDigitsizeOfObject(_In_ PCSYMCRYPT_INT piSrc)
Definition: a_dispatch.c:207
VOID SYMCRYPT_CALL SymCryptModulusWipe(_Out_ PSYMCRYPT_MODULUS pmObj)
Definition: a_dispatch.c:618
VOID SymCryptModElementCopy(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst)
Definition: a_dispatch.c:683
VOID SYMCRYPT_CALL SymCryptIntMulSameSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:461
VOID SYMCRYPT_CALL SymCryptIntMaskedCopy(_In_ PCSYMCRYPT_INT piSrc, _Inout_ PSYMCRYPT_INT piDst, UINT32 mask)
Definition: a_dispatch.c:170
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModElementGetValue(PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:804
UINT64 SYMCRYPT_CALL SymCryptIntGetValueLsbits64(_In_ PCSYMCRYPT_INT piSrc)
Definition: a_dispatch.c:277
VOID SYMCRYPT_CALL SymCryptIntConditionalCopy(_In_ PCSYMCRYPT_INT piSrc, _Inout_ PSYMCRYPT_INT piDst, UINT32 cond)
Definition: a_dispatch.c:180
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptIntSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:248
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModSquare(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:881
PSYMCRYPT_MODELEMENT SYMCRYPT_CALL SymCryptModElementCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, _In_ PCSYMCRYPT_MODULUS pmMod)
Definition: a_dispatch.c:665
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModElementToInt(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:762
VOID SYMCRYPT_CALL SymCryptIntMulPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:354
VOID SYMCRYPT_CALL SymCryptIntConditionalSwap(_Inout_ PSYMCRYPT_INT piSrc1, _Inout_ PSYMCRYPT_INT piSrc2, UINT32 cond)
Definition: a_dispatch.c:190
VOID SYMCRYPT_CALL SymCryptIntToDivisor(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_DIVISOR pdDst, UINT32 totalOperations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:560
UINT32 SYMCRYPT_CALL SymCryptIntGetBit(_In_ PCSYMCRYPT_INT piSrc, UINT32 iBit)
Definition: a_dispatch.c:394
VOID SYMCRYPT_CALL SymCryptIntModPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:384
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModSetRandom(_In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:993
UINT32 SYMCRYPT_CALL SymCryptIntAddUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 u32Src2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:284
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModMultiExp(_In_ PCSYMCRYPT_MODULUS pmMod, _In_reads_(nBases) PCSYMCRYPT_MODELEMENT *peBaseArray, _In_reads_(nBases) PCSYMCRYPT_INT *piExpArray, UINT32 nBases, UINT32 nBitsExp, UINT32 flags, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:976
UINT32 SYMCRYPT_CALL SymCryptIntMulUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 Src2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:451
VOID SYMCRYPT_CALL SymCryptIntSquare(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:474
PSYMCRYPT_MODULUS SYMCRYPT_CALL SymCryptModulusCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
Definition: a_dispatch.c:608
#define SymCryptModFntableGeneric
Definition: a_dispatch.c:53
#define SymCryptModFntableMontgomeryArm64256
Definition: a_dispatch.c:61
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntAllocate(UINT32 nDigits)
Definition: a_dispatch.c:119
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntFromDivisor(_In_ PSYMCRYPT_DIVISOR pdSrc)
Definition: a_dispatch.c:553
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptDivisorAllocate(UINT32 nDigits)
Definition: a_dispatch.c:497
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptDivisorCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
Definition: a_dispatch.c:519
VOID SymCryptModulusCopy(_In_ PCSYMCRYPT_MODULUS pmSrc, _Out_ PSYMCRYPT_MODULUS pmDst)
Definition: a_dispatch.c:626
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntFromModulus(_In_ PSYMCRYPT_MODULUS pmSrc)
Definition: a_dispatch.c:720
#define SymCryptModFntableMontgomeryMulx256
Definition: a_dispatch.c:56
UINT32 SYMCRYPT_CALL SymCryptSizeofModulusFromDigits(UINT32 nDigits)
Definition: a_dispatch.c:601
#define SymCryptModFntableMontgomeryMulx1024
Definition: a_dispatch.c:59
const UINT32 g_SymCryptModFnsMask
Definition: a_dispatch.c:72
UINT32 SYMCRYPT_CALL SymCryptIntIsEqualUint32(_In_ PCSYMCRYPT_INT piSrc1, _In_ UINT32 u32Src2)
Definition: a_dispatch.c:424
VOID SYMCRYPT_CALL SymCryptFreeTrialDivisionContext(PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext)
Definition: a_dispatch.c:1025
#define SymCryptModFntable369Montgomery
Definition: a_dispatch.c:55
VOID SYMCRYPT_CALL SymCryptIntFree(_Out_ PSYMCRYPT_INT piObj)
Definition: a_dispatch.c:126
UINT32 SYMCRYPT_CALL SymCryptIntBitsizeOfValue(_In_ PCSYMCRYPT_INT piSrc)
Definition: a_dispatch.c:223
VOID SYMCRYPT_CALL SymCryptIntMulMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:485
VOID SYMCRYPT_CALL SymCryptModElementWipe(_In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst)
Definition: a_dispatch.c:675
UINT32 SYMCRYPT_CALL SymCryptSizeofIntFromDigits(UINT32 nDigits)
Definition: a_dispatch.c:134
VOID SYMCRYPT_CALL SymCryptIntWipe(_Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:151
UINT32 SYMCRYPT_CALL SymCryptIntGetBits(_In_ PCSYMCRYPT_INT piSrc, UINT32 iBit, UINT32 nBits)
Definition: a_dispatch.c:403
VOID SYMCRYPT_CALL SymCryptIntSetValueUint32(UINT32 u32Src, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:230
VOID SYMCRYPT_CALL SymCryptIntToModulus(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_MODULUS pmDst, UINT32 averageOperations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:727
UINT32 SYMCRYPT_CALL SymCryptIntSubSameSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:324
UINT32 SYMCRYPT_CALL SymCryptDivisorDigitsizeOfObject(_In_ PCSYMCRYPT_DIVISOR pdSrc)
Definition: a_dispatch.c:546
#define SymCryptModFntableMontgomeryMulx
Definition: a_dispatch.c:58
const SYMCRYPT_MODULAR_FUNCTIONS g_SymCryptModFns[]
Definition: a_dispatch.c:21
VOID SYMCRYPT_CALL SymCryptModExp(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peBase, _In_ PCSYMCRYPT_INT piExp, UINT32 nBitsExp, UINT32 flags, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:961
VOID SYMCRYPT_CALL SymCryptIntDivMod(_In_ PCSYMCRYPT_INT piSrc, _In_ PCSYMCRYPT_DIVISOR pdDivisor, _Out_opt_ PSYMCRYPT_INT piQuotient, _Out_opt_ PSYMCRYPT_INT piRemainder, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:573
VOID SYMCRYPT_CALL SymCryptModElementSetValueNegUint32(UINT32 value, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:922
PSYMCRYPT_MODULUS SYMCRYPT_CALL SymCryptModulusAllocate(UINT32 nDigits)
Definition: a_dispatch.c:587
VOID SYMCRYPT_CALL SymCryptModulusFree(_Out_ PSYMCRYPT_MODULUS pmObj)
Definition: a_dispatch.c:594
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptIntGetValue(_In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format)
Definition: a_dispatch.c:259
VOID SYMCRYPT_CALL SymCryptModDivPow2(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, UINT32 exp, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:934
UINT32 SYMCRYPT_CALL SymCryptModulusDigitsizeOfObject(_In_ PCSYMCRYPT_MODULUS pmSrc)
Definition: a_dispatch.c:635
VOID SYMCRYPT_CALL SymCryptModElementFree(_In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peObj)
Definition: a_dispatch.c:649
UINT32 SYMCRYPT_CALL SymCryptIntIsEqual(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2)
Definition: a_dispatch.c:433
VOID SymCryptDivisorCopy(_In_ PCSYMCRYPT_DIVISOR pdSrc, _Out_ PSYMCRYPT_DIVISOR pdDst)
Definition: a_dispatch.c:537
UINT32 SYMCRYPT_CALL SymCryptIntFindSmallDivisor(_In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext, _In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:1014
PSYMCRYPT_MODELEMENT SYMCRYPT_CALL SymCryptModElementAllocate(_In_ PCSYMCRYPT_MODULUS pmMod)
Definition: a_dispatch.c:642
#define SymCryptModFntableMontgomery
Definition: a_dispatch.c:54
#define SymCryptModFntableMontgomeryArm64P384
Definition: a_dispatch.c:62
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptIntCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
Definition: a_dispatch.c:141
UINT32 SYMCRYPT_CALL SymCryptIntAddMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: a_dispatch.c:304
SYMCRYPT_DISABLE_CFG VOID SYMCRYPT_CALL SymCryptModSub(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc1, _In_ PCSYMCRYPT_MODELEMENT peSrc2, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: a_dispatch.c:852
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131
#define NULL
Definition: types.h:112
UINT32 SYMCRYPT_CALL SymCryptFdefIntGetValueLsbits32(_In_ PCSYMCRYPT_INT piSrc)
Definition: fdef_general.c:713
VOID SymCryptFdefIntMaskedCopy(_In_ PCSYMCRYPT_INT piSrc, _Inout_ PSYMCRYPT_INT piDst, UINT32 mask)
Definition: fdef_general.c:280
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptFdefDivisorCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
Definition: fdef_general.c:842
VOID SYMCRYPT_CALL SymCryptFdefIntConditionalSwap(_Inout_ PSYMCRYPT_INT piSrc1, _Inout_ PSYMCRYPT_INT piSrc2, UINT32 cond)
Definition: fdef_general.c:313
VOID SYMCRYPT_CALL SymCryptFdefFreeTrialDivisionContext(PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext)
UINT32 SYMCRYPT_CALL SymCryptFdefIntFindSmallDivisor(_In_ PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext, _In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
UINT32 SYMCRYPT_CALL SymCryptFdefIntBitsizeOfValue(_In_ PCSYMCRYPT_INT piSrc)
Definition: fdef_general.c:451
VOID SymCryptFdefDivisorCopy(_In_ PCSYMCRYPT_DIVISOR pdSrc, _Out_ PSYMCRYPT_DIVISOR pdDst)
Definition: fdef_general.c:891
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptFdefIntAllocate(UINT32 nDigits)
Definition: fdef_general.c:165
UINT32 SymCryptFdefDigitsFromBits(UINT32 nBits)
Definition: fdef_general.c:133
UINT32 SYMCRYPT_CALL SymCryptFdefIntIsEqualUint32(_In_ PCSYMCRYPT_INT piSrc1, _In_ UINT32 u32Src2)
Definition: fdef_general.c:749
PCSYMCRYPT_TRIALDIVISION_CONTEXT SYMCRYPT_CALL SymCryptFdefCreateTrialDivisionContext(UINT32 nDigits)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefIntSetValue(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_general.c:601
UINT32 SYMCRYPT_CALL SymCryptFdefIntBitsizeOfObject(_In_ PCSYMCRYPT_INT piSrc)
Definition: fdef_general.c:328
UINT32 SYMCRYPT_CALL SymCryptFdefIntIsEqual(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2)
Definition: fdef_general.c:758
UINT32 SYMCRYPT_CALL SymCryptFdefSizeofDivisorFromDigits(UINT32 nDigits)
Definition: fdef_general.c:826
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefIntGetValue(_In_ PCSYMCRYPT_INT piSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format)
Definition: fdef_general.c:695
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptFdefIntCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
Definition: fdef_general.c:213
VOID SYMCRYPT_CALL SymCryptFdefIntConditionalCopy(_In_ PCSYMCRYPT_INT piSrc, _Inout_ PSYMCRYPT_INT piDst, UINT32 cond)
Definition: fdef_general.c:298
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptFdefDivisorAllocate(UINT32 nDigits)
Definition: fdef_general.c:796
SYMCRYPT_ERROR SymCryptFdefIntCopyMixedSize(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_general.c:343
UINT32 SYMCRYPT_CALL SymCryptFdefSizeofIntFromDigits(UINT32 nDigits)
Definition: fdef_general.c:196
VOID SYMCRYPT_CALL SymCryptFdefIntSetValueUint32(UINT32 u32Src, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_general.c:497
VOID SymCryptFdefIntCopy(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_general.c:259
VOID SYMCRYPT_CALL SymCryptFdefIntSetValueUint64(UINT64 u64Src, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_general.c:511
UINT64 SYMCRYPT_CALL SymCryptFdefIntGetValueLsbits64(_In_ PCSYMCRYPT_INT piSrc)
Definition: fdef_general.c:721
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptFdefIntFromDivisor(_In_ PSYMCRYPT_DIVISOR pdSrc)
Definition: fdef_int.c:915
UINT32 SYMCRYPT_CALL SymCryptFdefIntAddSameSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:98
VOID SYMCRYPT_CALL SymCryptFdefIntShr1(UINT32 highestBit, _In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:511
UINT32 SYMCRYPT_CALL SymCryptFdefIntAddUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 u32Src2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:83
UINT32 SYMCRYPT_CALL SymCryptFdefIntGetBit(_In_ PCSYMCRYPT_INT piSrc, UINT32 iBit)
Definition: fdef_int.c:580
UINT32 SYMCRYPT_CALL SymCryptFdefIntSubUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 u32Src2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:236
VOID SYMCRYPT_CALL SymCryptFdefIntToDivisor(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_DIVISOR pdDst, UINT32 totalOperations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_int.c:922
UINT32 SYMCRYPT_CALL SymCryptFdefIntSubSameSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:248
VOID SYMCRYPT_CALL SymCryptFdefIntMulPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T Exp, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:407
UINT32 SYMCRYPT_CALL SymCryptFdefIntMulUint32(_In_ PCSYMCRYPT_INT piSrc1, UINT32 Src2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:681
VOID SYMCRYPT_CALL SymCryptFdefIntMulMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_int.c:889
UINT32 SYMCRYPT_CALL SymCryptFdefIntGetBits(_In_ PCSYMCRYPT_INT piSrc, UINT32 iBit, UINT32 nBits)
Definition: fdef_int.c:591
VOID SYMCRYPT_CALL SymCryptFdefIntNeg(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:394
VOID SYMCRYPT_CALL SymCryptFdefIntDivMod(_In_ PCSYMCRYPT_INT piSrc, _In_ PCSYMCRYPT_DIVISOR pdDivisor, _Out_opt_ PSYMCRYPT_INT piQuotient, _Out_opt_ PSYMCRYPT_INT piRemainder, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_int.c:1219
VOID SYMCRYPT_CALL SymCryptFdefIntSquare(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_int.c:716
VOID SYMCRYPT_CALL SymCryptFdefIntModPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:539
UINT32 SYMCRYPT_CALL SymCryptFdefIntIsLessThan(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2)
Definition: fdef_int.c:368
VOID SYMCRYPT_CALL SymCryptFdefIntMulSameSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_int.c:704
UINT32 SYMCRYPT_CALL SymCryptFdefIntSubMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:260
UINT32 SYMCRYPT_CALL SymCryptFdefIntAddMixedSize(_In_ PCSYMCRYPT_INT piSrc1, _In_ PCSYMCRYPT_INT piSrc2, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:113
VOID SYMCRYPT_CALL SymCryptFdefIntSetBits(_In_ PSYMCRYPT_INT piDst, UINT32 value, UINT32 iBit, UINT32 nBits)
Definition: fdef_int.c:627
VOID SYMCRYPT_CALL SymCryptFdefIntDivPow2(_In_ PCSYMCRYPT_INT piSrc, SIZE_T exp, _Out_ PSYMCRYPT_INT piDst)
Definition: fdef_int.c:469
VOID SYMCRYPT_CALL SymCryptFdefModElementWipe(_In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst)
Definition: fdef_mod.c:233
VOID SYMCRYPT_CALL SymCryptFdefIntToModulus(_In_ PCSYMCRYPT_INT piSrc, _Out_ PSYMCRYPT_MODULUS pmDst, UINT32 averageOperations, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:385
VOID SYMCRYPT_CALL SymCryptFdefModElementSetValueNegUint32(UINT32 value, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:663
VOID SymCryptFdefModElementCopy(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst)
Definition: fdef_mod.c:241
VOID SYMCRYPT_CALL SymCryptFdefModElementToIntGeneric(_In_ PCSYMCRYPT_MODULUS pmMod, _In_reads_bytes_(pmMod->nDigits *SYMCRYPT_FDEF_DIGIT_SIZE) PCUINT32 pSrc, _Out_ PSYMCRYPT_INT piDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:428
UINT32 SYMCRYPT_CALL SymCryptFdefModElementIsEqual(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc1, _In_ PCSYMCRYPT_MODELEMENT peSrc2)
Definition: fdef_mod.c:511
PSYMCRYPT_MODELEMENT SYMCRYPT_CALL SymCryptFdefModElementCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, PCSYMCRYPT_MODULUS pmMod)
Definition: fdef_mod.c:202
VOID SYMCRYPT_CALL SymCryptFdefModElementSetValueUint32Generic(UINT32 value, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:637
VOID SYMCRYPT_CALL SymCryptFdefModulusFree(_Out_ PSYMCRYPT_MODULUS pmObj)
Definition: fdef_mod.c:41
VOID SYMCRYPT_CALL SymCryptFdefModDivPow2(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, UINT32 exp, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:872
VOID SYMCRYPT_CALL SymCryptFdefModSetRandomGeneric(_In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, UINT32 flags, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:703
PSYMCRYPT_MODULUS SYMCRYPT_CALL SymCryptFdefModulusCreate(_Out_writes_bytes_(cbBuffer) PBYTE pbBuffer, SIZE_T cbBuffer, UINT32 nDigits)
Definition: fdef_mod.c:67
PSYMCRYPT_MODULUS SYMCRYPT_CALL SymCryptFdefModulusAllocate(UINT32 nDigits)
Definition: fdef_mod.c:11
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefModElementSetValueGeneric(_In_reads_bytes_(cbSrc) PCBYTE pbSrc, SIZE_T cbSrc, SYMCRYPT_NUMBER_FORMAT format, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:445
VOID SymCryptFdefModElementMaskedCopy(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_ PSYMCRYPT_MODELEMENT peDst, UINT32 mask)
Definition: fdef_mod.c:253
VOID SYMCRYPT_CALL SymCryptFdefModElementFree(_In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peObj)
Definition: fdef_mod.c:184
UINT32 SYMCRYPT_CALL SymCryptFdefModElementIsZero(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc)
Definition: fdef_mod.c:530
UINT32 SYMCRYPT_CALL SymCryptFdefSizeofModElementFromModulus(PCSYMCRYPT_MODULUS pmMod)
Definition: fdef_mod.c:194
PSYMCRYPT_DIVISOR SYMCRYPT_CALL SymCryptFdefDivisorFromModulus(_In_ PSYMCRYPT_MODULUS pmSrc)
Definition: fdef_mod.c:265
VOID SymCryptFdefModElementConditionalSwap(_In_ PCSYMCRYPT_MODULUS pmMod, _Inout_ PSYMCRYPT_MODELEMENT peData1, _Inout_ PSYMCRYPT_MODELEMENT peData2, _In_ UINT32 cond)
Definition: fdef_mod.c:271
PSYMCRYPT_MODELEMENT SYMCRYPT_CALL SymCryptFdefModElementAllocate(_In_ PCSYMCRYPT_MODULUS pmMod)
Definition: fdef_mod.c:157
UINT32 SYMCRYPT_CALL SymCryptFdefSizeofModulusFromDigits(UINT32 nDigits)
Definition: fdef_mod.c:49
PSYMCRYPT_INT SYMCRYPT_CALL SymCryptFdefIntFromModulus(_In_ PSYMCRYPT_MODULUS pmSrc)
Definition: fdef_mod.c:282
VOID SYMCRYPT_CALL SymCryptFdefIntToModElement(_In_ PCSYMCRYPT_INT piSrc, _In_ PCSYMCRYPT_MODULUS pmMod, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:407
VOID SymCryptFdefModulusCopy(_In_ PCSYMCRYPT_MODULUS pmSrc, _Out_ PSYMCRYPT_MODULUS pmDst)
Definition: fdef_mod.c:124
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptFdefModElementGetValue(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peSrc, _Out_writes_bytes_(cbDst) PBYTE pbDst, SIZE_T cbDst, SYMCRYPT_NUMBER_FORMAT format, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: fdef_mod.c:484
GLenum GLint GLuint mask
Definition: glext.h:6028
GLbitfield flags
Definition: glext.h:7161
void SYMCRYPT_CALL SymCryptCallbackFree(void *ptr)
Definition: implglue.c:42
#define C_ASSERT(e)
Definition: intsafe.h:73
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptModMultiExpGeneric(_In_ PCSYMCRYPT_MODULUS pmMod, _In_reads_(nBases) PCSYMCRYPT_MODELEMENT *peBaseArray, _In_reads_(nBases) PCSYMCRYPT_INT *piExpArray, UINT32 nBases, UINT32 nBitsExp, UINT32 flags, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: modexp.c:449
VOID SYMCRYPT_CALL SymCryptModExpGeneric(_In_ PCSYMCRYPT_MODULUS pmMod, _In_ PCSYMCRYPT_MODELEMENT peBase, _In_ PCSYMCRYPT_INT piExp, UINT32 nBitsExp, UINT32 flags, _Out_ PSYMCRYPT_MODELEMENT peDst, _Out_writes_bytes_(cbScratch) PBYTE pbScratch, SIZE_T cbScratch)
Definition: modexp.c:217
DWORD exp
Definition: msg.c:18625
#define _In_reads_bytes_(s)
Definition: no_sal2.h:170
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Out_opt_
Definition: no_sal2.h:214
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _Out_writes_bytes_(s)
Definition: no_sal2.h:178
int nBits
Definition: pcmconverter.c:96
BYTE * PBYTE
Definition: pedump.c:66
#define SYMCRYPT_MOD_CALL(v)
Definition: sc_lib.h:2039
#define SYMCRYPT_CPU_FEATURES_FOR_MULX
Definition: sc_lib.h:314
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULXP384
Definition: sc_lib.h:2132
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_GENERIC
Definition: sc_lib.h:2041
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_ARM64P384
Definition: sc_lib.h:2080
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX256
Definition: sc_lib.h:2093
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX
Definition: sc_lib.h:2158
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_MULX1024
Definition: sc_lib.h:2197
#define SYMCRYPT_MOD_FUNCTIONS_FDEF369_MONTGOMERY
Definition: sc_lib.h:2145
#define SYMCRYPT_MODULUS_FEATURE_MONTGOMERY
Definition: sc_lib.h:2018
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY_ARM64256
Definition: sc_lib.h:2067
#define SYMCRYPT_MOD_FUNCTIONS_FDEF_MONTGOMERY
Definition: sc_lib.h:2054
#define SYMCRYPT_DISABLE_CFG
Definition: sc_lib.h:15
#define SYMCRYPT_MODULUS_FEATURE_NISTP384
Definition: sc_lib.h:2021
UINT32 UINT32 UINT32 UINT32 cbScratch
SIZE_T cbBuffer
Definition: sc_lib_mldsa.h:405
Definition: sc_lib.h:2024
#define SYMCRYPT_ASSERT(_x)
Definition: symcrypt.h:10807
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
Definition: libmain.c:137
enum _SYMCRYPT_NUMBER_FORMAT SYMCRYPT_NUMBER_FORMAT
SYMCRYPT_ERROR
Definition: symcrypt.h:227
PCBYTE pbSrc
#define SYMCRYPT_CALL
const SYMCRYPT_MODELEMENT * PCSYMCRYPT_MODELEMENT
SYMCRYPT_MODELEMENT * PSYMCRYPT_MODELEMENT
const SYMCRYPT_DIVISOR * PCSYMCRYPT_DIVISOR
PCBYTE PBYTE pbDst
const SYMCRYPT_INT * PCSYMCRYPT_INT
const BYTE * PCBYTE
const SYMCRYPT_MODULUS * PCSYMCRYPT_MODULUS
SYMCRYPT_DIVISOR * PSYMCRYPT_DIVISOR
const UINT32 * PCUINT32
SYMCRYPT_MODULUS * PSYMCRYPT_MODULUS
SYMCRYPT_INT * PSYMCRYPT_INT
#define SYMCRYPT_CHECK_MAGIC(p)
#define SYMCRYPT_FLAG_MODULUS_PRIME
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t UINT32
Definition: typedefs.h:59
Definition: pdh_main.c:64