summaryrefslogtreecommitdiff
path: root/mac.c
diff options
context:
space:
mode:
Diffstat (limited to 'mac.c')
-rw-r--r--mac.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/mac.c b/mac.c
index 47db127f5..0ece2e55d 100644
--- a/mac.c
+++ b/mac.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mac.c,v 1.19 2012/10/04 13:21:50 markus Exp $ */ 1/* $OpenBSD: mac.c,v 1.20 2012/12/11 22:31:18 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -58,19 +58,34 @@ struct {
58 int key_len; /* just for UMAC */ 58 int key_len; /* just for UMAC */
59 int len; /* just for UMAC */ 59 int len; /* just for UMAC */
60} macs[] = { 60} macs[] = {
61 { "hmac-sha1", SSH_EVP, EVP_sha1, 0, -1, -1 }, 61 /* Encrypt-and-MAC (encrypt-and-authenticate) variants */
62 { "hmac-sha1-96", SSH_EVP, EVP_sha1, 96, -1, -1 }, 62 { "hmac-sha1", SSH_EVP, EVP_sha1, 0, 0, 0, 0 },
63 { "hmac-sha1-96", SSH_EVP, EVP_sha1, 96, 0, 0, 0 },
63#ifdef HAVE_EVP_SHA256 64#ifdef HAVE_EVP_SHA256
64 { "hmac-sha2-256", SSH_EVP, EVP_sha256, 0, -1, -1 }, 65 { "hmac-sha2-256", SSH_EVP, EVP_sha256, 0, 0, 0, 0 },
65 { "hmac-sha2-512", SSH_EVP, EVP_sha512, 0, -1, -1 }, 66 { "hmac-sha2-512", SSH_EVP, EVP_sha512, 0, 0, 0, 0 },
66#endif 67#endif
67 { "hmac-md5", SSH_EVP, EVP_md5, 0, -1, -1 }, 68 { "hmac-md5", SSH_EVP, EVP_md5, 0, 0, 0, 0 },
68 { "hmac-md5-96", SSH_EVP, EVP_md5, 96, -1, -1 }, 69 { "hmac-md5-96", SSH_EVP, EVP_md5, 96, 0, 0, 0 },
69 { "hmac-ripemd160", SSH_EVP, EVP_ripemd160, 0, -1, -1 }, 70 { "hmac-ripemd160", SSH_EVP, EVP_ripemd160, 0, 0, 0, 0 },
70 { "hmac-ripemd160@openssh.com", SSH_EVP, EVP_ripemd160, 0, -1, -1 }, 71 { "hmac-ripemd160@openssh.com", SSH_EVP, EVP_ripemd160, 0, 0, 0, 0 },
71 { "umac-64@openssh.com", SSH_UMAC, NULL, 0, 128, 64 }, 72 { "umac-64@openssh.com", SSH_UMAC, NULL, 0, 128, 64, 0 },
72 { "umac-128@openssh.com", SSH_UMAC128, NULL, 0, 128, 128 }, 73 { "umac-128@openssh.com", SSH_UMAC128, NULL, 0, 128, 128, 0 },
73 { NULL, 0, NULL, 0, -1, -1 } 74
75 /* Encrypt-then-MAC variants */
76 { "hmac-sha1-etm@openssh.com", SSH_EVP, EVP_sha1, 0, 0, 0, 1 },
77 { "hmac-sha1-96-etm@openssh.com", SSH_EVP, EVP_sha1, 96, 0, 0, 1 },
78#ifdef HAVE_EVP_SHA256
79 { "hmac-sha2-256-etm@openssh.com", SSH_EVP, EVP_sha256, 0, 0, 0, 1 },
80 { "hmac-sha2-512-etm@openssh.com", SSH_EVP, EVP_sha512, 0, 0, 0, 1 },
81#endif
82 { "hmac-md5-etm@openssh.com", SSH_EVP, EVP_md5, 0, 0, 0, 1 },
83 { "hmac-md5-96-etm@openssh.com", SSH_EVP, EVP_md5, 96, 0, 0, 1 },
84 { "hmac-ripemd160-tem@openssh.com", SSH_EVP, EVP_ripemd160, 0, 0, 0, 1 },
85 { "umac-64-etm@openssh.com", SSH_UMAC, NULL, 0, 128, 64, 1 },
86 { "umac-128-etm@openssh.com", SSH_UMAC128, NULL, 0, 128, 128, 1 },
87
88 { NULL, 0, NULL, 0, 0, 0, 0 }
74}; 89};
75 90
76static void 91static void
@@ -90,6 +105,7 @@ mac_setup_by_id(Mac *mac, int which)
90 } 105 }
91 if (macs[which].truncatebits != 0) 106 if (macs[which].truncatebits != 0)
92 mac->mac_len = macs[which].truncatebits / 8; 107 mac->mac_len = macs[which].truncatebits / 8;
108 mac->etm = macs[which].etm;
93} 109}
94 110
95int 111int