diff --git a/cryptography/bindings/openssl/api.py b/cryptography/bindings/openssl/api.py
index 7d189d6..3d92c14 100644
--- a/cryptography/bindings/openssl/api.py
+++ b/cryptography/bindings/openssl/api.py
@@ -19,7 +19,7 @@
 import cffi
 
 from cryptography.primitives import interfaces
-from cryptography.primitives.block.ciphers import AES, Camellia
+from cryptography.primitives.block.ciphers import AES, Camellia, TripleDES
 from cryptography.primitives.block.modes import CBC, CTR, ECB, OFB, CFB
 
 
@@ -135,6 +135,12 @@
                 mode_cls,
                 GetCipherByName("{cipher.name}-{cipher.key_size}-{mode.name}")
             )
+        for mode_cls in [CBC, CFB, OFB]:
+            self.register_cipher_adapter(
+                TripleDES,
+                mode_cls,
+                GetCipherByName("des-ede3-{mode.name}")
+            )
 
     def create_block_cipher_context(self, cipher, mode):
         ctx = self.lib.EVP_CIPHER_CTX_new()
diff --git a/cryptography/primitives/block/ciphers.py b/cryptography/primitives/block/ciphers.py
index f10a349..5d32772 100644
--- a/cryptography/primitives/block/ciphers.py
+++ b/cryptography/primitives/block/ciphers.py
@@ -63,6 +63,10 @@
 
     def __init__(self, key):
         super(TripleDES, self).__init__()
+        if len(key) == 8:
+            key += key + key
+        elif len(key) == 16:
+            key += key[:8]
         self.key = key
 
         # Verify that the key size matches the expected key size
diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py
index 8c8a381..117764b 100644
--- a/tests/primitives/test_nist.py
+++ b/tests/primitives/test_nist.py
@@ -27,12 +27,18 @@
 
 
 def load_3des_nist_vectors_from_file(path, op):
-    vectors = load_nist_vectors_from_file(path, op)
-    for vector in vectors:
-        vector["ciphertext"] = vector["ciphertext3"]
-        del vector["ciphertext1"]
-        del vector["ciphertext2"]
-        del vector["ciphertext3"]
+    vectors = []
+    for vector in load_nist_vectors_from_file(path, op):
+        for i in xrange(1, 4):
+            plaintext = vector.get("plaintext{0}".format(i))
+            if plaintext is None:
+                plaintext = vector["plaintext"]
+            vectors.append({
+                "key": vector["keys"],
+                "iv": vector["iv{0}".format(i)],
+                "ciphertext": vector["ciphertext{0}".format(i)],
+                "plaintext": plaintext,
+            })
     return vectors
 
 
@@ -188,7 +194,7 @@
             "TCBCvartext.rsp",
         ],
         lambda keys, iv: ciphers.TripleDES(binascii.unhexlify(keys)),
-        lambda keys, iv: modes.CBC(iv),
+        lambda keys, iv: modes.CBC(binascii.unhexlify(iv)),
     )
 
     test_KAT2 = generate_encrypt_test(
@@ -200,18 +206,18 @@
             "TCBCIvarkey.rsp",
             "TCBCIvartext.rsp",
         ],
-        lambda keys, iv1, iv2, iv3: ciphers.TripleDES(binascii.unhexlify(keys)),
-        lambda keys, iv1, iv2, iv3: modes.CBC(iv1 + iv2 + iv3),
+        lambda key, iv: ciphers.TripleDES(binascii.unhexlify(key)),
+        lambda key, iv: modes.CBC(binascii.unhexlify(iv)),
     )
 
     test_KAT3 = generate_encrypt_test(
-        lambda path: load_nist_vectors_from_file(path, "ENCRYPT"),
+        lambda path: load_3des_nist_vectors_from_file(path, "ENCRYPT"),
         os.path.join("3DES", "KAT"),
         [
             "TCBCIinvperm.rsp",
         ],
-        lambda keys, iv1, iv2, iv3: ciphers.TripleDES(binascii.unhexlify(keys)),
-        lambda keys, iv1, iv2, iv3: modes.CBC(iv1 + iv2 + iv3),
+        lambda key, iv: ciphers.TripleDES(binascii.unhexlify(key)),
+        lambda key, iv: modes.CBC(binascii.unhexlify(iv)),
     )
 
     test_MMT1 = generate_encrypt_test(
@@ -223,7 +229,7 @@
             "TCBCIMMT3.rsp",
         ],
         lambda key1, key2, key3, iv1, iv2, iv3: ciphers.TripleDES(binascii.unhexlify(key1 + key2 + key3)),
-        lambda key1, key2, key3, iv1, iv2, iv3: modes.CBC(iv1 + iv2 + iv3),
+        lambda key1, key2, key3, iv1, iv2, iv3: modes.CBC(binascii.unhexlify(iv1 + iv2 + iv3)),
     )
 
     test_MMT1 = generate_encrypt_test(
@@ -235,5 +241,5 @@
             "TCBCMMT3.rsp",
         ],
         lambda key1, key2, key3, iv: ciphers.TripleDES(binascii.unhexlify(key1 + key2 + key3)),
-        lambda key1, key2, key3, iv: modes.CBC(iv),
+        lambda key1, key2, key3, iv: modes.CBC(binascii.unhexlify(iv)),
     )
