blob: 60e7eda5f22d0ad3e86211b411cb9570e9c30773 [file] [log] [blame]
/*
* 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);