| /* 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); |
| |