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