49 lines
1.4 KiB
C
49 lines
1.4 KiB
C
|
/* 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);
|
||
|
|