1*6dc7f6f3Smmcc /* $OpenBSD: ike.h,v 1.26 2016/03/07 19:33:26 mmcc Exp $ */ 2d05fa9a6Sho 3d05fa9a6Sho /* 4d05fa9a6Sho * Copyright (c) 2001 H�kan Olsson. All rights reserved. 5d05fa9a6Sho * 6d05fa9a6Sho * Redistribution and use in source and binary forms, with or without 7d05fa9a6Sho * modification, are permitted provided that the following conditions 8d05fa9a6Sho * are met: 9d05fa9a6Sho * 1. Redistributions of source code must retain the above copyright 10d05fa9a6Sho * notice, this list of conditions and the following disclaimer. 11d05fa9a6Sho * 2. Redistributions in binary form must reproduce the above copyright 12d05fa9a6Sho * notice, this list of conditions and the following disclaimer in the 13d05fa9a6Sho * documentation and/or other materials provided with the distribution. 14d05fa9a6Sho * 3. The name of the author may not be used to endorse or promote products 15d05fa9a6Sho * derived from this software without specific prior written permission. 16d05fa9a6Sho * 17d05fa9a6Sho * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18d05fa9a6Sho * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19d05fa9a6Sho * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20d05fa9a6Sho * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21d05fa9a6Sho * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22d05fa9a6Sho * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23d05fa9a6Sho * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24d05fa9a6Sho * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25d05fa9a6Sho * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26d05fa9a6Sho * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27d05fa9a6Sho */ 28c16ee05dSho 29c16ee05dSho #define ISAKMP_DOI 0 30c16ee05dSho #define IPSEC_DOI 1 31c16ee05dSho 32c16ee05dSho #define PROTO_ISAKMP 1 337601e490Sho #define PROTO_IPSEC_AH 2 347601e490Sho #define PROTO_IPSEC_ESP 3 357601e490Sho #define PROTO_IPCOMP 4 36c16ee05dSho 378c3c61ddSjsg #define IKE_VERSION_2 (2 << 4) 388c3c61ddSjsg 39c16ee05dSho #define IKE_ATTR_ENCRYPTION_ALGORITHM 1 40c16ee05dSho #define IKE_ATTR_HASH_ALGORITHM 2 41c16ee05dSho #define IKE_ATTR_AUTHENTICATION_METHOD 3 42c16ee05dSho #define IKE_ATTR_GROUP_DESC 4 43c16ee05dSho #define IKE_ATTR_GROUP_TYPE 5 44c16ee05dSho #define IKE_ATTR_LIFE_TYPE 11 45c16ee05dSho 467601e490Sho #define IKE_PROTO_INITIALIZER \ 477601e490Sho { "RESERVED", "ISAKMP", "IPSEC_AH", "IPSEC_ESP", "IPCOMP", \ 487601e490Sho } 497601e490Sho 50c16ee05dSho #define IKE_ATTR_ENCRYPT_INITIALIZER \ 517601e490Sho { "NONE", "DES_CBC", "IDEA_CBC", "BLOWFISH_CBC", \ 527601e490Sho "RC5_R16_B64_CBC", "3DES_CBC", "CAST_CBC", "AES_CBC", \ 53a674fbdbShshoexer "AES_128_CTR" \ 54c16ee05dSho } 55c16ee05dSho #define IKE_ATTR_HASH_INITIALIZER \ 56c16ee05dSho { "NONE", "MD5", "SHA", "TIGER", \ 577601e490Sho "SHA2_256", "SHA2_384", "SHA2_512", \ 58c16ee05dSho } 59c16ee05dSho #define IKE_ATTR_AUTH_INITIALIZER \ 60c16ee05dSho { "NONE", "PRE_SHARED", "DSS", "RSA_SIG", \ 61c16ee05dSho "RSA_ENC", "RSA_ENC_REV", \ 62c16ee05dSho } 63c16ee05dSho #define IKE_ATTR_GROUP_DESC_INITIALIZER \ 64c16ee05dSho { "NONE", "MODP_768", "MODP_1024", \ 653758c525Shshoexer "E2CN_155", "E2CN_185", "MODP_1536", "NONE", "NONE", "NONE", \ 663758c525Shshoexer "NONE", "NONE", "NONE", "NONE", "NONE", "MODP_2048", \ 67634a00f1Smikeb "MODP_3072", "MODP_4096", "MODP_6144", "MODP_8192", "ECP256", \ 68634a00f1Smikeb "ECP384", "ECP512", "MODP_1024-160", "MODP_2048-224", \ 69634a00f1Smikeb "MODP_2048-256", "ECP192", "ECP224," \ 70c16ee05dSho } 71c16ee05dSho #define IKE_ATTR_GROUP_INITIALIZER \ 72c16ee05dSho { "NONE", "MODP", "ECP", "E2CN", \ 73c16ee05dSho } 74c16ee05dSho #define IKE_ATTR_SA_DURATION_INITIALIZER \ 75c16ee05dSho { "NONE", "SECONDS", "KILOBYTES", \ 76c16ee05dSho } 77c16ee05dSho 78c16ee05dSho #define IKE_ATTR_INITIALIZER \ 79c16ee05dSho { "NONE", /* 0 (not in RFC) */ \ 80c16ee05dSho "ENCRYPTION_ALGORITHM", /* 1 */ \ 81c16ee05dSho "HASH_ALGORITHM", /* 2 */ \ 82c16ee05dSho "AUTHENTICATION_METHOD", /* 3 */ \ 83c16ee05dSho "GROUP_DESCRIPTION", /* 4 */ \ 84c16ee05dSho "GROUP_TYPE", /* 5 */ \ 85c16ee05dSho "GROUP_PRIME", /* 6 */ \ 86c16ee05dSho "GROUP_GENERATOR_1", /* 7 */ \ 87c16ee05dSho "GROUP_GENERATOR_2", /* 8 */ \ 88c16ee05dSho "GROUP_CURVE_1", /* 9 */ \ 89c16ee05dSho "GROUP_CURVE_2", /* 10 */ \ 90c16ee05dSho "LIFE_TYPE", /* 11 */ \ 91c16ee05dSho "LIFE_DURATION", /* 12 */ \ 92c16ee05dSho "PRF", /* 13 */ \ 93c16ee05dSho "KEY_LENGTH", /* 14 */ \ 94c16ee05dSho "FIELD_SIZE", /* 15 */ \ 95c16ee05dSho "GROUP_ORDER", /* 16 */ \ 96c16ee05dSho } 97c16ee05dSho 98c16ee05dSho #define IKE_SITUATION_IDENTITY_ONLY 1 99c16ee05dSho #define IKE_SITUATION_SECRECY 2 100c16ee05dSho #define IKE_SITUATION_INTEGRITY 4 101c16ee05dSho /* Mask is all the above, i.e 1+2+4 = 7 */ 102c16ee05dSho #define IKE_SITUATION_MASK 7 103c16ee05dSho 104c16ee05dSho #define PAYLOAD_NONE 0 105c16ee05dSho #define PAYLOAD_SA 1 106c16ee05dSho #define PAYLOAD_PROPOSAL 2 107c16ee05dSho #define PAYLOAD_TRANSFORM 3 108c16ee05dSho #define PAYLOAD_KE 4 109c16ee05dSho #define PAYLOAD_ID 5 110c16ee05dSho #define PAYLOAD_CERT 6 111c16ee05dSho #define PAYLOAD_CERTREQUEST 7 112c16ee05dSho #define PAYLOAD_HASH 8 113c16ee05dSho #define PAYLOAD_SIG 9 114c16ee05dSho #define PAYLOAD_NONCE 10 115c16ee05dSho #define PAYLOAD_NOTIFICATION 11 116c16ee05dSho #define PAYLOAD_DELETE 12 117c16ee05dSho #define PAYLOAD_VENDOR 13 118f004498dSho #define PAYLOAD_ATTRIBUTE 14 11916173e3eShshoexer #define PAYLOAD_SAK 15 12016173e3eShshoexer #define PAYLOAD_SAT 16 12116173e3eShshoexer #define PAYLOAD_KD 17 12216173e3eShshoexer #define PAYLOAD_SEQ 18 12316173e3eShshoexer #define PAYLOAD_POP 19 12416173e3eShshoexer #define PAYLOAD_NAT_D 20 12516173e3eShshoexer #define PAYLOAD_NAT_OA 21 12616173e3eShshoexer #define PAYLOAD_RESERVED_MIN 22 1276e1d69b5Sho #define PAYLOAD_PRIVATE_MIN 128 12816173e3eShshoexer #define PAYLOAD_NAT_D_DRAFT 130 12916173e3eShshoexer #define PAYLOAD_NAT_OA_DRAFT 131 1306e1d69b5Sho #define PAYLOAD_PRIVATE_MAX 132 131c16ee05dSho 1328c3c61ddSjsg #define PAYLOAD_IKEV2_NONE 0 1338c3c61ddSjsg #define PAYLOAD_IKEV2_SA 33 1348c3c61ddSjsg #define PAYLOAD_IKEV2_KE 34 1358c3c61ddSjsg #define PAYLOAD_IKEV2_IDI 35 1368c3c61ddSjsg #define PAYLOAD_IKEV2_IDR 36 1378c3c61ddSjsg #define PAYLOAD_IKEV2_CERT 37 1388c3c61ddSjsg #define PAYLOAD_IKEV2_CERTREQ 38 1398c3c61ddSjsg #define PAYLOAD_IKEV2_AUTH 39 1408c3c61ddSjsg #define PAYLOAD_IKEV2_NONCE 40 1418c3c61ddSjsg #define PAYLOAD_IKEV2_N 41 1428c3c61ddSjsg #define PAYLOAD_IKEV2_D 42 1438c3c61ddSjsg #define PAYLOAD_IKEV2_V 43 1448c3c61ddSjsg #define PAYLOAD_IKEV2_TSI 44 1458c3c61ddSjsg #define PAYLOAD_IKEV2_TSR 45 1468c3c61ddSjsg #define PAYLOAD_IKEV2_E 46 1478c3c61ddSjsg #define PAYLOAD_IKEV2_CP 47 1488c3c61ddSjsg #define PAYLOAD_IKEV2_EAP 48 1498c3c61ddSjsg #define PAYLOAD_IKEV2_PRIV_MIN 128 1508c3c61ddSjsg #define PAYLOAD_IKEv2_PRIV_MAX 255 1518c3c61ddSjsg 152*6dc7f6f3Smmcc /* see https://www.iana.org/assignments/isakmp-registry */ 153c16ee05dSho #define IKE_PAYLOAD_TYPES_INITIALIZER \ 154c16ee05dSho { "NONE", /* 0 */ \ 155c16ee05dSho "SA", /* 1 */ \ 156c16ee05dSho "PROPOSAL", /* 2 */ \ 157c16ee05dSho "TRANSFORM", /* 3 */ \ 158c16ee05dSho "KEY_EXCH", /* 4 */ \ 159c16ee05dSho "ID", /* 5 */ \ 160c16ee05dSho "CERT", /* 6 */ \ 161c16ee05dSho "CERTREQUEST", /* 7 */ \ 162c16ee05dSho "HASH", /* 8 */ \ 163c16ee05dSho "SIG", /* 9 */ \ 164c16ee05dSho "NONCE", /* 10 */ \ 165c16ee05dSho "NOTIFICATION", /* 11 */ \ 166c16ee05dSho "DELETE", /* 12 */ \ 167c16ee05dSho "VENDOR", /* 13 */ \ 168f004498dSho "ATTRIBUTE", /* 14 (ikecfg) */ \ 169321cb446Shshoexer "SAK", /* 15 */ \ 170321cb446Shshoexer "SAT", /* 16 */ \ 171321cb446Shshoexer "KD", /* 17 */ \ 172321cb446Shshoexer "SEQ", /* 18 */ \ 173321cb446Shshoexer "POP", /* 19 */ \ 174321cb446Shshoexer "NAT-D", /* 20 */ \ 175321cb446Shshoexer "NAT-OA", /* 21 */ \ 1766e1d69b5Sho } 1776e1d69b5Sho 1786e1d69b5Sho #define IKE_PRIVATE_PAYLOAD_TYPES_INITIALIZER \ 1796e1d69b5Sho { "NONE", /* 128 */ \ 1806e1d69b5Sho "<unknown 129>", /* 129 */ \ 181321cb446Shshoexer "NAT-D-DRAFT", /* 130 (draft-ietf-ipsec-nat-t-ike-03) */ \ 182321cb446Shshoexer "NAT-OA-DRAFT", /* 131 (draft-ietf-ipsec-nat-t-ike-03) */ \ 183c16ee05dSho } 184c16ee05dSho 185*6dc7f6f3Smmcc /* see https://www.iana.org/assignments/ikev2-parameters */ 1868c3c61ddSjsg #define IKEV2_PAYLOAD_TYPES_INITIALIZER \ 1878c3c61ddSjsg { "SA", /* 33 */ \ 1888c3c61ddSjsg "KE", /* 34 */ \ 1898c3c61ddSjsg "IDi", /* 35 */ \ 1908c3c61ddSjsg "IDr", /* 36 */ \ 1918c3c61ddSjsg "CERT", /* 37 */ \ 1928c3c61ddSjsg "CERTREQ", /* 38 */ \ 1938c3c61ddSjsg "AUTH", /* 39 */ \ 1948c3c61ddSjsg "NONCE", /* 40 */ \ 1958c3c61ddSjsg "N", /* 41 */ \ 1968c3c61ddSjsg "D", /* 42 */ \ 1978c3c61ddSjsg "V", /* 43 */ \ 1988c3c61ddSjsg "TSi", /* 44 */ \ 1998c3c61ddSjsg "TSr", /* 45 */ \ 2008c3c61ddSjsg "E", /* 46 */ \ 2018c3c61ddSjsg "CP", /* 47 */ \ 2028c3c61ddSjsg "EAP", /* 48 */ \ 2038c3c61ddSjsg } 2048c3c61ddSjsg 2058c3c61ddSjsg 206c16ee05dSho /* Exchange types */ 207c16ee05dSho #define EXCHANGE_NONE 0 208c16ee05dSho #define EXCHANGE_BASE 1 209c16ee05dSho #define EXCHANGE_ID_PROT 2 210c16ee05dSho #define EXCHANGE_AUTH_ONLY 3 211c16ee05dSho #define EXCHANGE_AGGRESSIVE 4 212c16ee05dSho #define EXCHANGE_INFO 5 213f004498dSho #define EXCHANGE_TRANSACTION 6 214c16ee05dSho #define EXCHANGE_QUICK_MODE 32 215c16ee05dSho #define EXCHANGE_NEW_GROUP_MODE 33 2168c3c61ddSjsg #define EXCHANGE_IKE_SA_INIT 34 2178c3c61ddSjsg #define EXCHANGE_IKE_AUTH 35 2188c3c61ddSjsg #define EXCHANGE_CREATE_CHILD_SA 36 2198c3c61ddSjsg #define EXCHANGE_INFORMATIONAL 37 2208c3c61ddSjsg #define EXCHANGE_IKE_SESSION_RESUME 38 221c16ee05dSho 222c16ee05dSho /* Exchange types */ 223c16ee05dSho #define IKE_EXCHANGE_TYPES_INITIALIZER \ 224c16ee05dSho { "NONE", /* 0 */ \ 225c16ee05dSho "BASE", /* 1 */ \ 226c16ee05dSho "ID_PROT", /* 2 */ \ 227c16ee05dSho "AUTH_ONLY", /* 3 */ \ 228c16ee05dSho "AGGRESSIVE", /* 4 */ \ 229c16ee05dSho "INFO", /* 5 */ \ 230f004498dSho "TRANSACTION", /* 6 (ikecfg) */ \ 231c16ee05dSho /* step up to type 32 with unknowns */ \ 232c16ee05dSho "unknown", "unknown", "unknown", "unknown", \ 233c16ee05dSho "unknown", "unknown", "unknown", "unknown", \ 234c16ee05dSho "unknown", "unknown", "unknown", "unknown", \ 235c16ee05dSho "unknown", "unknown", "unknown", "unknown", \ 236c16ee05dSho "unknown", "unknown", "unknown", "unknown", \ 237c16ee05dSho "unknown", "unknown", "unknown", "unknown", \ 238506ba842Sho "unknown", \ 239c16ee05dSho "QUICK_MODE", /* 32 */ \ 240c16ee05dSho "NEW_GROUP_MODE", /* 33 */ \ 2418c3c61ddSjsg "IKE_SA_INIT", /* 34 */ \ 2428c3c61ddSjsg "IKE_AUTH", /* 35 */ \ 2438c3c61ddSjsg "CREATE_CHILD_SA", /* 36 */ \ 2448c3c61ddSjsg "INFORMATIONAL", /* 37 */ \ 2458c3c61ddSjsg "IKE_SESSION_RESUME", /* 38 */ \ 246c16ee05dSho } 247c16ee05dSho 248c16ee05dSho #define FLAGS_ENCRYPTION 1 249c16ee05dSho #define FLAGS_COMMIT 2 250c16ee05dSho #define FLAGS_AUTH_ONLY 4 251c16ee05dSho 252c16ee05dSho #define CERT_NONE 0 253c16ee05dSho #define CERT_PKCS 1 254c16ee05dSho #define CERT_PGP 2 255c16ee05dSho #define CERT_DNS 3 256c16ee05dSho #define CERT_X509_SIG 4 257c16ee05dSho #define CERT_X509_KE 5 258c16ee05dSho #define CERT_KERBEROS 6 259c16ee05dSho #define CERT_CRL 7 260c16ee05dSho #define CERT_ARL 8 261c16ee05dSho #define CERT_SPKI 9 262c16ee05dSho #define CERT_X509_ATTR 10 263c16ee05dSho 264c16ee05dSho #define NOTIFY_INVALID_PAYLOAD_TYPE 1 265c16ee05dSho #define NOTIFY_DOI_NOT_SUPPORTED 2 266c16ee05dSho #define NOTIFY_SITUATION_NOT_SUPPORTED 3 267c16ee05dSho #define NOTIFY_INVALID_COOKIE 4 268c16ee05dSho #define NOTIFY_INVALID_MAJOR_VERSION 5 269c16ee05dSho #define NOTIFY_INVALID_MINOR_VERSION 6 270c16ee05dSho #define NOTIFY_INVALID_EXCHANGE_TYPE 7 271c16ee05dSho #define NOTIFY_INVALID_FLAGS 8 272c16ee05dSho #define NOTIFY_INVALID_MESSAGE_ID 9 273c16ee05dSho #define NOTIFY_INVALID_PROTOCOL_ID 10 274c16ee05dSho #define NOTIFY_INVALID_SPI 11 275c16ee05dSho #define NOTIFY_INVALID_TRANSFORM_ID 12 276c16ee05dSho #define NOTIFY_ATTRIBUTES_NOT_SUPPORTED 13 277c16ee05dSho #define NOTIFY_NO_PROPOSAL_CHOSEN 14 278c16ee05dSho #define NOTIFY_BAD_PROPOSAL_SYNTAX 15 279c16ee05dSho #define NOTIFY_PAYLOAD_MALFORMED 16 280c16ee05dSho #define NOTIFY_INVALID_KEY_INFORMATION 17 281c16ee05dSho #define NOTIFY_INVALID_ID_INFORMATION 18 282c16ee05dSho #define NOTIFY_INVALID_CERT_ENCODING 19 283c16ee05dSho #define NOTIFY_INVALID_CERTIFICATE 20 284c16ee05dSho #define NOTIFY_CERT_TYPE_UNSUPPORTED 21 285c16ee05dSho #define NOTIFY_INVALID_CERT_AUTHORITY 22 286c16ee05dSho #define NOTIFY_INVALID_HASH_INFORMATION 23 287c16ee05dSho #define NOTIFY_AUTHENTICATION_FAILED 24 288c16ee05dSho #define NOTIFY_INVALID_SIGNATURE 25 289c16ee05dSho #define NOTIFY_ADDRESS_NOTIFICATION 26 290c16ee05dSho #define NOTIFY_NOTIFY_SA_LIFETIME 27 291c16ee05dSho #define NOTIFY_CERTIFICATE_UNAVAILABLE 28 292c16ee05dSho #define NOTIFY_UNSUPPORTED_EXCHANGE_TYPE 29 293c16ee05dSho #define NOTIFY_UNEQUAL_PAYLOAD_LENGTHS 30 294c16ee05dSho 295c16ee05dSho #define IKE_NOTIFY_TYPES_INITIALIZER \ 296c16ee05dSho { "", \ 297c16ee05dSho "INVALID PAYLOAD TYPE", \ 298c16ee05dSho "DOI NOT SUPPORTED", \ 299c16ee05dSho "SITUATION NOT SUPPORTED", \ 300c16ee05dSho "INVALID COOKIE", \ 301c16ee05dSho "INVALID MAJOR VERSION", \ 302c16ee05dSho "INVALID MINOR VERSION", \ 303c16ee05dSho "INVALID EXCHANGE TYPE", \ 304c16ee05dSho "INVALID FLAGS", \ 305c16ee05dSho "INVALID MESSAGE ID", \ 306c16ee05dSho "INVALID PROTOCOL ID", \ 307c16ee05dSho "INVALID SPI", \ 308c16ee05dSho "INVALID TRANSFORM ID", \ 309c16ee05dSho "ATTRIBUTES NOT SUPPORTED", \ 310c16ee05dSho "NO PROPOSAL CHOSEN", \ 311c16ee05dSho "BAD PROPOSAL SYNTAX", \ 312c16ee05dSho "PAYLOAD MALFORMED", \ 313c16ee05dSho "INVALID KEY INFORMATION", \ 314c16ee05dSho "INVALID ID INFORMATION", \ 315c16ee05dSho "INVALID CERT ENCODING", \ 316c16ee05dSho "INVALID CERTIFICATE", \ 317c16ee05dSho "CERT TYPE UNSUPPORTED", \ 318c16ee05dSho "INVALID CERT AUTHORITY", \ 319c16ee05dSho "INVALID HASH INFORMATION", \ 320c16ee05dSho "AUTHENTICATION FAILED", \ 321c16ee05dSho "INVALID SIGNATURE", \ 322c16ee05dSho "ADDRESS NOTIFICATION", \ 323c16ee05dSho "NOTIFY SA LIFETIME", \ 324c16ee05dSho "CERTIFICATE UNAVAILABLE", \ 325c16ee05dSho "UNSUPPORTED EXCHANGE TYPE", \ 326c16ee05dSho "UNEQUAL PAYLOAD LENGTHS", \ 327c16ee05dSho } 3287601e490Sho 3297601e490Sho /* RFC 2407, 4.6.3 */ 3307601e490Sho #define NOTIFY_IPSEC_RESPONDER_LIFETIME 24576 3317601e490Sho #define NOTIFY_IPSEC_REPLAY_STATUS 24577 3327601e490Sho #define NOTIFY_IPSEC_INITIAL_CONTACT 24578 3337601e490Sho 334506ba842Sho /* RFC 3706, Dead Peer Detection */ 335506ba842Sho #define NOTIFY_STATUS_DPD_R_U_THERE 36136 336506ba842Sho #define NOTIFY_STATUS_DPD_R_U_THERE_ACK 36137 337506ba842Sho 3387601e490Sho #define IPSEC_ID_RESERVED 0 3397601e490Sho #define IPSEC_ID_IPV4_ADDR 1 3407601e490Sho #define IPSEC_ID_FQDN 2 3417601e490Sho #define IPSEC_ID_USER_FQDN 3 3427601e490Sho #define IPSEC_ID_IPV4_ADDR_SUBNET 4 3437601e490Sho #define IPSEC_ID_IPV6_ADDR 5 3447601e490Sho #define IPSEC_ID_IPV6_ADDR_SUBNET 6 3457601e490Sho #define IPSEC_ID_IPV4_ADDR_RANGE 7 3467601e490Sho #define IPSEC_ID_IPV6_ADDR_RANGE 8 3477601e490Sho #define IPSEC_ID_DER_ASN1_DN 9 3487601e490Sho #define IPSEC_ID_DER_ASN1_GN 10 3497601e490Sho #define IPSEC_ID_KEY_ID 11 3507601e490Sho 3517601e490Sho #define IPSEC_ID_TYPE_INITIALIZER \ 3527601e490Sho { "RESERVED", \ 3537601e490Sho "IPV4_ADDR", \ 3547601e490Sho "FQDN", \ 3557601e490Sho "USER_FQDN", \ 3567601e490Sho "IPV4_ADDR_SUBNET", \ 3577601e490Sho "IPV6_ADDR", \ 3587601e490Sho "IPV6_ADDR_SUBNET", \ 3597601e490Sho "IPV4_ADDR_RANGE", \ 3607601e490Sho "IPV6_ADDR_RANGE", \ 3617601e490Sho "DER_ASN1_DN", \ 3627601e490Sho "DER_ASN1_GN", \ 3637601e490Sho "KEY_ID", \ 3647601e490Sho } 3657601e490Sho 3667601e490Sho #define IPSEC_ATTR_SA_LIFE_TYPE 1 3677601e490Sho #define IPSEC_ATTR_SA_LIFE_DURATION 2 3687601e490Sho #define IPSEC_ATTR_GROUP_DESCRIPTION 3 3697601e490Sho #define IPSEC_ATTR_ENCAPSULATION_MODE 4 3707601e490Sho #define IPSEC_ATTR_AUTHENTICATION_ALGORITHM 5 3717601e490Sho #define IPSEC_ATTR_KEY_LENGTH 6 3727601e490Sho #define IPSEC_ATTR_KEY_ROUNDS 7 3737601e490Sho #define IPSEC_ATTR_COMPRESS_DICTIONARY_SIZE 8 3747601e490Sho #define IPSEC_ATTR_COMPRESS_PRIVATE_ALGORITHM 9 3757601e490Sho 3767601e490Sho #define IPSEC_ATTR_INITIALIZER \ 3777601e490Sho { "NONE", "LIFE_TYPE", "LIFE_DURATION", \ 3787601e490Sho "GROUP_DESCRIPTION", "ENCAPSULATION_MODE", \ 3797601e490Sho "AUTHENTICATION_ALGORITHM", "KEY_LENGTH", \ 3807601e490Sho "KEY_ROUNDS", "COMPRESS_DICTIONARY_SIZE", \ 3817601e490Sho "COMPRESS_PRIVATE_ALGORITHM", \ 3827601e490Sho } 3837601e490Sho 3847601e490Sho #define IPSEC_ATTR_DURATION_INITIALIZER \ 3857601e490Sho { "NONE", "SECONDS", "KILOBYTES", \ 3867601e490Sho } 3877601e490Sho #define IPSEC_ATTR_AUTH_INITIALIZER \ 3887601e490Sho { "NONE", "HMAC_MD5", "HMAC_SHA", "DES_MAC", "KPDK", \ 3897601e490Sho "HMAC_SHA2_256", "HMAC_SHA2_384", "HMAC_SHA2_512", \ 3907601e490Sho "HMAC_RIPEMD", \ 3917601e490Sho } 3927601e490Sho #define IPSEC_AH_INITIALIZER \ 3937601e490Sho { "NONE", "MD5", "SHA", "DES", "SHA2_256", "SHA2_384", \ 3947601e490Sho "SHA2_512", "RIPEMD", \ 3957601e490Sho } 3967601e490Sho #define IPSEC_ESP_INITIALIZER \ 3977601e490Sho { "NONE", "DEV_IV64", "DES", "3DES", "RC5", "IDEA", \ 3987601e490Sho "CAST", "BLOWFISH", "3IDEA", "DES_IV32", "RC4", \ 399a674fbdbShshoexer "NULL", "AES", "AESCTR" \ 4007601e490Sho } 401b415ec6bSho #define IPCOMP_INITIALIZER \ 4027601e490Sho { "NONE", "OUI", "DEFLATE", "LZS", "V42BIS", \ 4037601e490Sho } 404c4f87239Ssthen static struct tok ipsec_attr_encap[] = { 405c4f87239Ssthen { 0, "NONE" }, 406c4f87239Ssthen { 1, "TUNNEL" }, 407c4f87239Ssthen { 2, "TRANSPORT" }, 408c4f87239Ssthen { 3, "UDP_ENCAP_TUNNEL" }, 409c4f87239Ssthen { 4, "UDP_ENCAP_TRANSPORT" }, 410c4f87239Ssthen { 61443, "UDP_ENCAP_TUNNEL_DRAFT" }, /* draft-ietf-ipsec-nat-t-ike */ 411c4f87239Ssthen { 61444, "UDP_ENCAP_TRANSPORT_DRAFT" } /* draft-ietf-ipsec-nat-t-ike */ 412c4f87239Ssthen }; 413f004498dSho 414f004498dSho /* 415f004498dSho * IKE mode config. 416f004498dSho */ 417f004498dSho 418f004498dSho #define IKE_CFG_ATTRIBUTE_TYPE_INITIALIZER \ 419f004498dSho { "RESERVED", "CFG_REQUEST", "CFG_REPLY", \ 420f004498dSho "CFG_SET", "CFG_ACK", \ 421f004498dSho } 422f004498dSho 423f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP4_ADDRESS 1 424f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP4_NETMASK 2 425f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP4_DNS 3 426f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP4_NBNS 4 427f004498dSho #define IKE_CFG_ATTR_INTERNAL_ADDRESS_EXPIRY 5 428f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP4_DHCP 6 429f004498dSho #define IKE_CFG_ATTR_APPLICATION_VERSION 7 430f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP6_ADDRESS 8 431f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP6_NETMASK 9 432f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP6_DNS 10 433f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP6_NBNS 11 434f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP6_DHCP 12 435f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP4_SUBNET 13 436f004498dSho #define IKE_CFG_ATTR_SUPPORTED_ATTRIBUTES 14 437f004498dSho #define IKE_CFG_ATTR_INTERNAL_IP6_SUBNET 15 438f004498dSho 439f004498dSho #define IKE_CFG_ATTRIBUTE_INITIALIZER \ 440f004498dSho { "RESERVED", "INTERNAL_IP4_ADDRESS", \ 441f004498dSho "INTERNAL_IP4_NETMASK", "INTERNAL_IP4_DNS", \ 442f004498dSho "INTERNAL_IP4_NBNS", "INTERNAL_ADDRESS_EXPIRY", \ 443f004498dSho "INTERNAL_IP4_DHCP", "APPLICATION_VERSION", \ 444f004498dSho "INTERNAL_IP6_ADDRESS", "INTERNAL_IP6_NETMASK", \ 445f004498dSho "INTERNAL_IP6_DNS", "INTERNAL_IP6_NBNS", \ 446f004498dSho "INTERNAL_IP6_DHCP", "INTERNAL_IP4_SUBNET", \ 447f004498dSho "SUPPORTED_ATTRIBUTES", "INTERNAL_IP6_SUBNET", \ 448f004498dSho } 4492d7d0accShshoexer 4502d7d0accShshoexer #define ISAKMP_SA_SZ 8 4512d7d0accShshoexer #define ISAKMP_PROP_SZ 8 4522d7d0accShshoexer #define ISAKMP_TRANSFORM_SZ 8 4532d7d0accShshoexer #define ISAKMP_KE_SZ 4 4542d7d0accShshoexer #define ISAKMP_ID_SZ 8 4552d7d0accShshoexer #define ISAKMP_CERT_SZ 5 4562d7d0accShshoexer #define ISAKMP_CERTREQ_SZ 5 4572d7d0accShshoexer #define ISAKMP_HASH_SZ 4 4582d7d0accShshoexer #define ISAKMP_SIG_SZ 4 4592d7d0accShshoexer #define ISAKMP_NONCE_SZ 4 4602d7d0accShshoexer #define ISAKMP_NOTIFY_SZ 12 4612d7d0accShshoexer #define ISAKMP_DELETE_SZ 12 4622d7d0accShshoexer #define ISAKMP_VENDOR_SZ 4 4632d7d0accShshoexer #define ISAKMP_ATTRIBUTE_SZ 8 4642d7d0accShshoexer #define ISAKMP_NAT_D_SZ 4 4652d7d0accShshoexer #define ISAKMP_NAT_OA_SZ 8 4662d7d0accShshoexer 4672d7d0accShshoexer static u_int16_t min_payload_lengths[] = { 4682d7d0accShshoexer 0, ISAKMP_SA_SZ, ISAKMP_PROP_SZ, ISAKMP_TRANSFORM_SZ, ISAKMP_KE_SZ, 4692d7d0accShshoexer ISAKMP_ID_SZ, ISAKMP_CERT_SZ, ISAKMP_CERTREQ_SZ, ISAKMP_HASH_SZ, 4702d7d0accShshoexer ISAKMP_SIG_SZ, ISAKMP_NONCE_SZ, ISAKMP_NOTIFY_SZ, ISAKMP_DELETE_SZ, 4716e1d69b5Sho ISAKMP_VENDOR_SZ, ISAKMP_ATTRIBUTE_SZ 4722d7d0accShshoexer }; 4736e1d69b5Sho 4746e1d69b5Sho static u_int16_t min_priv_payload_lengths[] = { 4756e1d69b5Sho 0, 0, ISAKMP_NAT_D_SZ, ISAKMP_NAT_OA_SZ 4766e1d69b5Sho }; 4776e1d69b5Sho 4786e1d69b5Sho static const struct vendor_id 4796e1d69b5Sho { 480fd20a4a4Shshoexer size_t len; 4816e1d69b5Sho char vid[16]; 4826e1d69b5Sho char *name; 4836e1d69b5Sho } vendor_ids[] = { 4846e1d69b5Sho { 485fd20a4a4Shshoexer 16, 4866e1d69b5Sho { 4876e1d69b5Sho 0x44, 0x85, 0x15, 0x2d, 0x18, 0xb6, 0xbb, 0xcd, 4886e1d69b5Sho 0x0b, 0xe8, 0xa8, 0x46, 0x95, 0x79, 0xdd, 0xcc, 4896e1d69b5Sho }, 4906e1d69b5Sho "v1 NAT-T, draft-ietf-ipsec-nat-t-ike-00", 4916e1d69b5Sho }, 4926e1d69b5Sho { 493fd20a4a4Shshoexer 16, 4946e1d69b5Sho { 4956e1d69b5Sho 0x90, 0xcb, 0x80, 0x91, 0x3e, 0xbb, 0x69, 0x6e, 4966e1d69b5Sho 0x08, 0x63, 0x81, 0xb5, 0xec, 0x42, 0x7b, 0x1f, 4976e1d69b5Sho }, 4986e1d69b5Sho "v2 NAT-T, draft-ietf-ipsec-nat-t-ike-02", 4996e1d69b5Sho }, 5006e1d69b5Sho { 501fd20a4a4Shshoexer 16, 5026e1d69b5Sho { 50319b0c5aaShshoexer 0xcd, 0x60, 0x46, 0x43, 0x35, 0xdf, 0x21, 0xf8, 50419b0c5aaShshoexer 0x7c, 0xfd, 0xb2, 0xfc, 0x68, 0xb6, 0xa4, 0x48, 50519b0c5aaShshoexer }, 50619b0c5aaShshoexer "v2 NAT-T, draft-ietf-ipsec-nat-t-ike-02\\n", 50719b0c5aaShshoexer }, 50819b0c5aaShshoexer { 509fd20a4a4Shshoexer 16, 51019b0c5aaShshoexer { 5116e1d69b5Sho 0x7d, 0x94, 0x19, 0xa6, 0x53, 0x10, 0xca, 0x6f, 5126e1d69b5Sho 0x2c, 0x17, 0x9d, 0x92, 0x15, 0x52, 0x9d, 0x56, 5136e1d69b5Sho }, 5146e1d69b5Sho "v3 NAT-T, draft-ietf-ipsec-nat-t-ike-03", 5156e1d69b5Sho }, 5166e1d69b5Sho { 517fd20a4a4Shshoexer 16, 5186e1d69b5Sho { 519ef78ca22Stom 0x99,0x09,0xb6,0x4e,0xed,0x93,0x7c,0x65, 520ef78ca22Stom 0x73,0xde,0x52,0xac,0xe9,0x52,0xfa,0x6b, 521ef78ca22Stom }, 522ef78ca22Stom "v4 NAT-T, draft-ietf-ipsec-nat-t-ike-04", 523ef78ca22Stom }, 524ef78ca22Stom { 525ef78ca22Stom 16, 526ef78ca22Stom { 527ef78ca22Stom 0x80,0xd0,0xbb,0x3d,0xef,0x54,0x56,0x5e, 528ef78ca22Stom 0xe8,0x46,0x45,0xd4,0xc8,0x5c,0xe3,0xee, 529ef78ca22Stom }, 530ef78ca22Stom "v5 NAT-T, draft-ietf-ipsec-nat-t-ike-05", 531ef78ca22Stom }, 532ef78ca22Stom { 533ef78ca22Stom 16, 534ef78ca22Stom { 535ef78ca22Stom 0x4d,0x1e,0x0e,0x13,0x6d,0xea,0xfa,0x34, 536ef78ca22Stom 0xc4,0xf3,0xea,0x9f,0x02,0xec,0x72,0x85, 537ef78ca22Stom }, 538ef78ca22Stom "v6 NAT-T, draft-ietf-ipsec-nat-t-ike-06", 539ef78ca22Stom }, 540ef78ca22Stom { 541ef78ca22Stom 16, 542ef78ca22Stom { 543ef78ca22Stom 0x43,0x9b,0x59,0xf8,0xba,0x67,0x6c,0x4c, 544ef78ca22Stom 0x77,0x37,0xae,0x22,0xea,0xb8,0xf5,0x82, 545ef78ca22Stom }, 546ef78ca22Stom "v7 NAT-T, draft-ietf-ipsec-nat-t-ike-07", 547ef78ca22Stom }, 548ef78ca22Stom { 549ef78ca22Stom 16, 550ef78ca22Stom { 551ef78ca22Stom 0x8f,0x8d,0x83,0x82,0x6d,0x24,0x6b,0x6f, 552ef78ca22Stom 0xc7,0xa8,0xa6,0xa4,0x28,0xc1,0x1d,0xe8, 553ef78ca22Stom }, 554ef78ca22Stom "v8 NAT-T, draft-ietf-ipsec-nat-t-ike-08", 555ef78ca22Stom }, 556ef78ca22Stom { 557ef78ca22Stom 16, 558ef78ca22Stom { 559ef78ca22Stom 0x42,0xea,0x5b,0x6f,0x89,0x8d,0x97,0x73, 560ef78ca22Stom 0xa5,0x75,0xdf,0x26,0xe7,0xdd,0x19,0xe1, 561ef78ca22Stom }, 562ef78ca22Stom "v9 NAT-T, draft-ietf-ipsec-nat-t-ike-09", 563ef78ca22Stom }, 564ef78ca22Stom { 565ef78ca22Stom 16, 566ef78ca22Stom { 567ef78ca22Stom 0xc4,0x0f,0xee,0x00,0xd5,0xd3,0x9d,0xdb, 568ef78ca22Stom 0x1f,0xc7,0x62,0xe0,0x9b,0x7c,0xfe,0xa7, 569ef78ca22Stom }, 570ef78ca22Stom "Testing NAT-T RFC", 571ef78ca22Stom }, 572ef78ca22Stom { 573ef78ca22Stom 16, 574ef78ca22Stom { 5756e1d69b5Sho 0xaf, 0xca, 0xd7, 0x13, 0x68, 0xa1, 0xf1, 0xc9, 5766e1d69b5Sho 0x6b, 0x86, 0x96, 0xfc, 0x77, 0x57, 0x01, 0x00, 5776e1d69b5Sho /* Last "0x01, 0x00" means major v1, minor v0 */ 5786e1d69b5Sho }, 5796e1d69b5Sho "DPD v1.0" 5806034d572Sho }, 5816034d572Sho { 582fd20a4a4Shshoexer 16, 5836034d572Sho { 5846034d572Sho 0x4a, 0x13, 0x1c, 0x81, 0x07, 0x03, 0x58, 0x45, 5856034d572Sho 0x5c, 0x57, 0x28, 0xf2, 0x0e, 0x95, 0x45, 0x2f, 5866034d572Sho }, 5876034d572Sho "NAT-T, RFC 3947" 588b9806c7dShshoexer }, 589b9806c7dShshoexer { 590fd20a4a4Shshoexer 16, 591b9806c7dShshoexer { 592b9806c7dShshoexer 0x6c, 0x0d, 0xcd, 0x48, 0x1d, 0xea, 0xe8, 0xae, 593b9806c7dShshoexer 0x0b, 0x0a, 0x68, 0x38, 0x4b, 0x30, 0x72, 0xf9, 594b9806c7dShshoexer }, 595b9806c7dShshoexer "OpenBSD-4.0" 596b9806c7dShshoexer }, 597fd20a4a4Shshoexer { 598fd20a4a4Shshoexer 8, 599fd20a4a4Shshoexer { 600fd20a4a4Shshoexer 0x09, 0x00, 0x26, 0x89, 0xdf, 0xd6, 0xb7, 0x12 601fd20a4a4Shshoexer }, 602817b4ef4Sreyk "draft-ietf-ipsra-isakmp-xauth-06.txt" 603ef78ca22Stom }, 604ef78ca22Stom { 605ef78ca22Stom 16, 606ef78ca22Stom { 607ef78ca22Stom 0x12,0xf5,0xf2,0x8c,0x45,0x71,0x68,0xa9, 608ef78ca22Stom 0x70,0x2d,0x9f,0xe2,0x74,0xcc,0x01,0x00, 609ef78ca22Stom }, 610ef78ca22Stom "Cisco Unity", 611fd20a4a4Shshoexer } 6126e1d69b5Sho }; 613