| /* |
| * This header declares the necessary definitions for using the |
| * exponentiation acceleration capabilities of Atalla cards. The only |
| * cryptographic operation is performed by "ASI_RSAPrivateKeyOpFn" and this |
| * takes a structure that defines an "RSA private key". However, it is really |
| * only performing a regular mod_exp using the supplied modulus and exponent |
| * - no CRT form is being used. Hence, it is a generic mod_exp function in |
| * disguise, and we use it as such. Thanks to the people at Atalla for |
| * letting me know these definitions are fine and that they can be reproduced |
| * here. Geoff. |
| */ |
| |
| typedef struct ItemStr { |
| unsigned char *data; |
| int len; |
| } Item; |
| |
| typedef struct RSAPrivateKeyStr { |
| void *reserved; |
| Item version; |
| Item modulus; |
| Item publicExponent; |
| Item privateExponent; |
| Item prime[2]; |
| Item exponent[2]; |
| Item coefficient; |
| } RSAPrivateKey; |
| |
| /* |
| * Predeclare the function pointer types that we dynamically load from the |
| * DSO. These use the same names and form that Ben's original support code |
| * had (in crypto/bn/bn_exp.c) unless of course I've inadvertently changed |
| * the style somewhere along the way! |
| */ |
| |
| typedef int tfnASI_GetPerformanceStatistics(int reset_flag, |
| unsigned int *ret_buf); |
| |
| typedef int tfnASI_GetHardwareConfig(long card_num, unsigned int *ret_buf); |
| |
| typedef int tfnASI_RSAPrivateKeyOpFn(RSAPrivateKey * rsaKey, |
| unsigned char *output, |
| unsigned char *input, |
| unsigned int modulus_len); |