+typedef struct
+ {
+ union { double align; DES_key_schedule ks[3]; } ks;
+ union {
+ void (*cbc)(const void *,void *,size_t,const void *,void *);
+ } stream;
+ } DES_EDE_KEY;
+#define ks1 ks.ks[0]
+#define ks2 ks.ks[1]
+#define ks3 ks.ks[2]
+
+#if defined(AES_ASM) && (defined(__sparc) || defined(__sparc__))
+/* ---------^^^ this is not a typo, just a way to detect that
+ * assembler support was in general requested... */
+#include "sparc_arch.h"
+
+extern unsigned int OPENSSL_sparcv9cap_P[];
+
+#define SPARC_DES_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_DES)
+
+void des_t4_key_expand(const void *key, DES_key_schedule *ks);
+void des_t4_ede3_cbc_encrypt(const void *inp,void *out,size_t len,
+ DES_key_schedule *ks,unsigned char iv[8]);
+void des_t4_ede3_cbc_decrypt(const void *inp,void *out,size_t len,
+ DES_key_schedule *ks,unsigned char iv[8]);
+#endif
+