cksumtypes.c revision 7934:6aeeafc994de
1181624Skmacy/* 2181624Skmacy * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 3181624Skmacy * Use is subject to license terms. 4183375Skmacy */ 5183375Skmacy 6183375Skmacy 7183375Skmacy/* 8183375Skmacy * Copyright (C) 1998 by the FundsXpress, INC. 9183375Skmacy * 10183375Skmacy * All rights reserved. 11183375Skmacy * 12183375Skmacy * Export of this software from the United States of America may require 13183375Skmacy * a specific license from the United States Government. It is the 14183375Skmacy * responsibility of any person or organization contemplating export to 15183375Skmacy * obtain such a license before exporting. 16183375Skmacy * 17183375Skmacy * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 18183375Skmacy * distribute this software and its documentation for any purpose and 19183375Skmacy * without fee is hereby granted, provided that the above copyright 20183375Skmacy * notice appear in all copies and that both that copyright notice and 21183375Skmacy * this permission notice appear in supporting documentation, and that 22181624Skmacy * the name of FundsXpress. not be used in advertising or publicity pertaining 23181624Skmacy * to distribution of the software without specific, written prior 24181624Skmacy * permission. FundsXpress makes no representations about the suitability of 25181624Skmacy * this software for any purpose. It is provided "as is" without express 26181624Skmacy * or implied warranty. 27181624Skmacy * 28181624Skmacy * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 29181624Skmacy * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 30181624Skmacy * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 31181624Skmacy */ 32181624Skmacy 33181624Skmacy#include "k5-int.h" 34181624Skmacy#include "hash_provider.h" 35181624Skmacy#include "keyhash_provider.h" 36181624Skmacy#include "cksumtypes.h" 37181624Skmacy 38181624Skmacyconst struct krb5_cksumtypes krb5_cksumtypes_list[] = { 39181624Skmacy { CKSUMTYPE_CRC32, KRB5_CKSUMFLAG_NOT_COLL_PROOF, 40181624Skmacy "crc32", "CRC-32", 41181624Skmacy NULL, NULL, &krb5int_hash_crc32, 0, 42181624Skmacy#ifdef _KERNEL 43181624Skmacy NULL, 44181624Skmacy CRYPTO_MECH_INVALID 45181624Skmacy#endif /* _KERNEL */ 46181624Skmacy}, 47181624Skmacy 48181624Skmacy { CKSUMTYPE_DESCBC, 0, 49181624Skmacy "des-cbc", "DES cbc mode", 50181624Skmacy ENCTYPE_DES_CBC_CRC, &krb5int_keyhash_descbc, 51181624Skmacy NULL, NULL, 52181624Skmacy#ifdef _KERNEL 53181624Skmacy NULL, 54181624Skmacy CRYPTO_MECH_INVALID 55181624Skmacy#endif /* _KERNEL */ 56181624Skmacy}, 57181624Skmacy 58181624Skmacy { CKSUMTYPE_RSA_MD5, 0, 59181624Skmacy "md5", "RSA-MD5", 60181624Skmacy NULL, NULL, &krb5int_hash_md5, 0, 61181624Skmacy#ifdef _KERNEL 62181624Skmacy SUN_CKM_MD5, 63181624Skmacy CRYPTO_MECH_INVALID 64181624Skmacy#endif /* _KERNEL */ 65181624Skmacy}, 66181624Skmacy { CKSUMTYPE_RSA_MD5_DES, 0, 67181624Skmacy "md5-des", "RSA-MD5 with DES cbc mode", 68181624Skmacy ENCTYPE_DES_CBC_CRC, &krb5int_keyhash_md5des, 69181624Skmacy NULL, NULL, 70181624Skmacy#ifdef _KERNEL 71181624Skmacy SUN_CKM_MD5, 72181624Skmacy CRYPTO_MECH_INVALID 73181624Skmacy#endif /* _KERNEL */ 74181624Skmacy}, 75181624Skmacy 76181624Skmacy { CKSUMTYPE_NIST_SHA, 0, 77181624Skmacy "sha", "NIST-SHA", 78181624Skmacy NULL, NULL, &krb5int_hash_sha1, 0, 79181624Skmacy#ifdef _KERNEL 80181624Skmacy SUN_CKM_SHA1, 81181624Skmacy CRYPTO_MECH_INVALID 82181624Skmacy#endif /* _KERNEL */ 83181624Skmacy}, 84181624Skmacy 85181624Skmacy { CKSUMTYPE_HMAC_SHA1_DES3, KRB5_CKSUMFLAG_DERIVE, 86181624Skmacy "hmac-sha1-des3", "HMAC-SHA1 DES3 key", 87181624Skmacy NULL, NULL, &krb5int_hash_sha1, 0, 88181624Skmacy#ifdef _KERNEL 89181624Skmacy SUN_CKM_SHA1_HMAC, 90181624Skmacy CRYPTO_MECH_INVALID 91181624Skmacy#endif /* _KERNEL */ 92181624Skmacy }, 93181624Skmacy { CKSUMTYPE_HMAC_SHA1_DES3, KRB5_CKSUMFLAG_DERIVE, 94181624Skmacy "hmac-sha1-des3-kd", "HMAC-SHA1 DES3 key", /* alias */ 95181624Skmacy NULL, NULL, &krb5int_hash_sha1, 0, 96181624Skmacy#ifdef _KERNEL 97181624Skmacy SUN_CKM_SHA1_HMAC, 98181624Skmacy CRYPTO_MECH_INVALID 99181624Skmacy#endif /* _KERNEL */ 100183375Skmacy}, 101183375Skmacy { CKSUMTYPE_HMAC_MD5_ARCFOUR, 0, 102183375Skmacy "hmac-md5-rc4", "Microsoft HMAC MD5 (RC4 key)", 103181624Skmacy ENCTYPE_ARCFOUR_HMAC, &krb5int_keyhash_hmac_md5, 104181624Skmacy NULL, 0, 105181624Skmacy#ifdef _KERNEL 106181624Skmacy SUN_CKM_MD5, 107181624Skmacy CRYPTO_MECH_INVALID 108181624Skmacy#endif /* _KERNEL */ 109181624Skmacy }, 110181624Skmacy { CKSUMTYPE_HMAC_MD5_ARCFOUR, 0, 111181624Skmacy "hmac-md5-enc", "Microsoft HMAC MD5 (RC4 key)", /*Heimdal alias*/ 112181624Skmacy ENCTYPE_ARCFOUR_HMAC, &krb5int_keyhash_hmac_md5, 113181624Skmacy NULL, 0, 114181624Skmacy#ifdef _KERNEL 115181624Skmacy SUN_CKM_MD5, 116181624Skmacy CRYPTO_MECH_INVALID 117181624Skmacy#endif /* _KERNEL */ 118181624Skmacy }, 119181624Skmacy { CKSUMTYPE_HMAC_MD5_ARCFOUR, 0, 120181624Skmacy "hmac-md5-earcfour", "Microsoft HMAC MD5 (RC4 key)", /* alias*/ 121181624Skmacy ENCTYPE_ARCFOUR_HMAC, &krb5int_keyhash_hmac_md5, 122181624Skmacy NULL, 0, 123181624Skmacy#ifdef _KERNEL 124181624Skmacy SUN_CKM_MD5, 125181624Skmacy CRYPTO_MECH_INVALID 126181624Skmacy#endif /* _KERNEL */ 127181624Skmacy }, 128181624Skmacy 129183375Skmacy { CKSUMTYPE_HMAC_SHA1_96_AES128, KRB5_CKSUMFLAG_DERIVE, 130183375Skmacy "hmac-sha1-96-aes128", "HMAC-SHA1 AES128 key", 131183375Skmacy NULL, NULL, &krb5int_hash_sha1, 12, 132183375Skmacy#ifdef _KERNEL 133183375Skmacy SUN_CKM_SHA1_HMAC, 134183375Skmacy CRYPTO_MECH_INVALID 135183375Skmacy#endif /* _KERNEL */ 136183375Skmacy }, 137183375Skmacy { CKSUMTYPE_HMAC_SHA1_96_AES256, KRB5_CKSUMFLAG_DERIVE, 138183375Skmacy "hmac-sha1-96-aes256", "HMAC-SHA1 AES256 key", 139183375Skmacy 0, NULL, &krb5int_hash_sha1, 12, 140183375Skmacy#ifdef _KERNEL 141183375Skmacy SUN_CKM_SHA1_HMAC, 142181624Skmacy CRYPTO_MECH_INVALID 143181624Skmacy#endif /* _KERNEL */ 144181624Skmacy } 145181624Skmacy 146181624Skmacy}; 147181624Skmacy 148181624Skmacyconst int krb5_cksumtypes_length = 149181624Skmacysizeof(krb5_cksumtypes_list)/sizeof(struct krb5_cksumtypes); 150181624Skmacy 151181624Skmacy/* Solaris Kerberos */ 152181624Skmacy#ifdef _KERNEL 153181624Skmacyvoid 154181624Skmacysetup_kef_cksumtypes() 155181624Skmacy{ 156181624Skmacy int i; 157181624Skmacy struct krb5_cksumtypes *ck; 158181624Skmacy 159181624Skmacy for (i=0; i<krb5_cksumtypes_length; i++) { 160181624Skmacy ck = (struct krb5_cksumtypes *)&krb5_cksumtypes_list[i]; 161181624Skmacy if (ck != NULL && 162181624Skmacy ck->mt_c_name != NULL && 163181624Skmacy ck->kef_cksum_mt == CRYPTO_MECH_INVALID) { 164181624Skmacy 165181624Skmacy ck->kef_cksum_mt = crypto_mech2id(ck->mt_c_name); 166181624Skmacy KRB5_LOG1(KRB5_INFO, "setup_kef_cksumtypes() - " 167181624Skmacy "%s ==> %ld", 168181624Skmacy ck->mt_c_name, (ulong_t)ck->kef_cksum_mt); 169 } 170 } 171} 172#endif /* _KERNEL */ 173