padlock - get rid of __GNUCLIKE_ASM #ifdefs
authorAlex Hornung <ahornung@gmail.com>
Fri, 20 Aug 2010 20:09:52 +0000 (21:09 +0100)
committerAlex Hornung <ahornung@gmail.com>
Fri, 20 Aug 2010 20:12:48 +0000 (21:12 +0100)
* Remove the uses of __GNUCLIKE_ASM, as we don't define it and in any
  case it only causes problems.

* If it wasn't defined, it would cause encryption to succeed but without
  encrypting anything, potentially leaking private information. Since on
  DragonFly this define doesn't exist, this would always be the case.

Reported-by: Jan Lentfer (lentferj@)
Dragonfly-bug: http://bugs.dragonflybsd.org/issue1638

sys/crypto/via/padlock_cipher.c
sys/crypto/via/padlock_hash.c

index 831187c..6ebd755 100644 (file)
@@ -80,7 +80,6 @@ static __inline void
 padlock_cbc(void *in, void *out, size_t count, void *key, union padlock_cw *cw,
     void *iv)
 {
-#ifdef __GNUCLIKE_ASM
        /* The .byte line is really VIA C3 "xcrypt-cbc" instruction */
        __asm __volatile(
                "pushf                          \n\t"
@@ -91,7 +90,6 @@ padlock_cbc(void *in, void *out, size_t count, void *key, union padlock_cw *cw,
                        : "b" (key), "d" (cw)
                        : "cc", "memory"
                );
-#endif
 }
 
 static void
index dfba017..b8741da 100644 (file)
@@ -115,13 +115,11 @@ padlock_do_sha1(const u_char *in, u_char *out, int count)
        ((uint32_t *)result)[3] = 0x10325476;
        ((uint32_t *)result)[4] = 0xC3D2E1F0;
 
-#ifdef __GNUCLIKE_ASM
        __asm __volatile(
                ".byte  0xf3, 0x0f, 0xa6, 0xc8" /* rep xsha1 */
                        : "+S"(in), "+D"(result)
                        : "c"(count), "a"(0)
                );
-#endif
 
        padlock_output_block((uint32_t *)result, (uint32_t *)out,
            SHA1_HASH_LEN / sizeof(uint32_t));
@@ -142,13 +140,11 @@ padlock_do_sha256(const char *in, char *out, int count)
        ((uint32_t *)result)[6] = 0x1F83D9AB;
        ((uint32_t *)result)[7] = 0x5BE0CD19;
 
-#ifdef __GNUCLIKE_ASM
        __asm __volatile(
                ".byte  0xf3, 0x0f, 0xa6, 0xd0" /* rep xsha256 */
                        : "+S"(in), "+D"(result)
                        : "c"(count), "a"(0)
                );
-#endif
 
        padlock_output_block((uint32_t *)result, (uint32_t *)out,
            SHA2_256_HASH_LEN / sizeof(uint32_t));