summaryrefslogtreecommitdiffstats
path: root/openssl/engines/vendor_defns/atalla.h
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/engines/vendor_defns/atalla.h')
-rw-r--r--openssl/engines/vendor_defns/atalla.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/openssl/engines/vendor_defns/atalla.h b/openssl/engines/vendor_defns/atalla.h
new file mode 100644
index 0000000..60e7eda
--- /dev/null
+++ b/openssl/engines/vendor_defns/atalla.h
@@ -0,0 +1,44 @@
+/*
+ * 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);