Lines Matching full:crypto
48 static struct _krb5_key_data *_new_derived_key(krb5_crypto crypto, unsigned usage);
315 krb5_crypto crypto, in get_checksum_key() argument
323 ret = _get_derived_key(context, crypto, usage, key); in get_checksum_key()
327 *key = _new_derived_key(crypto, 0xff/* KRB5_KU_RFC1510_VARIANT */); in get_checksum_key()
332 ret = krb5_copy_keyblock(context, crypto->key.key, &(*key)->key); in get_checksum_key()
338 *key = &crypto->key; in get_checksum_key()
348 krb5_crypto crypto, in create_checksum() argument
363 if(keyed_checksum && crypto == NULL) { in create_checksum()
366 "crypto context (key) was passed in", ""), in create_checksum()
371 ret = get_checksum_key(context, crypto, usage, ct, &dkey); in create_checksum()
384 arcfour_checksum_p(struct _krb5_checksum_type *ct, krb5_crypto crypto) in arcfour_checksum_p() argument
387 (crypto->key.key->keytype == KEYTYPE_ARCFOUR); in arcfour_checksum_p()
392 krb5_crypto crypto, in krb5_create_checksum() argument
402 /* type 0 -> pick from crypto */ in krb5_create_checksum()
405 } else if (crypto) { in krb5_create_checksum()
406 ct = crypto->et->keyed_checksum; in krb5_create_checksum()
408 ct = crypto->et->checksum; in krb5_create_checksum()
418 if (arcfour_checksum_p(ct, crypto)) { in krb5_create_checksum()
424 return create_checksum(context, ct, crypto, keyusage, in krb5_create_checksum()
430 krb5_crypto crypto, in verify_checksum() argument
462 if (crypto == NULL) { in verify_checksum()
465 "crypto context (key) was passed in", ""), in verify_checksum()
469 kct = crypto->et->keyed_checksum; in verify_checksum()
475 ct->name, crypto->et->name); in verify_checksum()
479 ret = get_checksum_key(context, crypto, usage, ct, &dkey); in verify_checksum()
496 ct->name, (crypto != NULL)? crypto->et->name : "(none)"); in verify_checksum()
515 ct->name, crypto ? crypto->et->name : "(unkeyed)"); in verify_checksum()
525 krb5_crypto crypto, in krb5_verify_checksum() argument
542 if (arcfour_checksum_p(ct, crypto)) { in krb5_verify_checksum()
548 return verify_checksum(context, crypto, keyusage, in krb5_verify_checksum()
554 krb5_crypto crypto, in krb5_crypto_get_checksum_type() argument
559 if (crypto != NULL) { in krb5_crypto_get_checksum_type()
560 ct = crypto->et->keyed_checksum; in krb5_crypto_get_checksum_type()
562 ct = crypto->et->checksum; in krb5_crypto_get_checksum_type()
796 krb5_crypto crypto) in derived_crypto() argument
798 return (crypto->et->flags & F_DERIVED) != 0; in derived_crypto()
803 krb5_crypto crypto) in special_crypto() argument
805 return (crypto->et->flags & F_SPECIAL) != 0; in special_crypto()
813 krb5_crypto crypto, in encrypt_internal_derived() argument
825 const struct _krb5_encryption_type *et = crypto->et; in encrypt_internal_derived()
845 crypto, in encrypt_internal_derived()
859 ret = _get_derived_key(context, crypto, ENCRYPTION_USAGE(usage), &dkey); in encrypt_internal_derived()
880 krb5_crypto crypto, in encrypt_internal() argument
890 const struct _krb5_encryption_type *et = crypto->et; in encrypt_internal()
911 crypto, in encrypt_internal()
925 ret = _key_schedule(context, &crypto->key); in encrypt_internal()
928 ret = (*et->encrypt)(context, &crypto->key, p, block_sz, 1, 0, ivec); in encrypt_internal()
945 krb5_crypto crypto, in encrypt_internal_special() argument
952 struct _krb5_encryption_type *et = crypto->et; in encrypt_internal_special()
969 ret = (*et->encrypt)(context, &crypto->key, tmp, sz, TRUE, usage, ivec); in encrypt_internal_special()
982 krb5_crypto crypto, in decrypt_internal_derived() argument
994 struct _krb5_encryption_type *et = crypto->et; in decrypt_internal_derived()
1019 ret = _get_derived_key(context, crypto, ENCRYPTION_USAGE(usage), &dkey); in decrypt_internal_derived()
1040 crypto, in decrypt_internal_derived()
1063 krb5_crypto crypto, in decrypt_internal() argument
1073 struct _krb5_encryption_type *et = crypto->et; in decrypt_internal()
1094 ret = _key_schedule(context, &crypto->key); in decrypt_internal()
1099 ret = (*et->encrypt)(context, &crypto->key, p, len, 0, 0, ivec); in decrypt_internal()
1131 krb5_crypto crypto, in decrypt_internal_special() argument
1138 struct _krb5_encryption_type *et = crypto->et; in decrypt_internal_special()
1162 ret = (*et->encrypt)(context, &crypto->key, p, len, FALSE, usage, ivec); in decrypt_internal_special()
1193 * @param crypto Kerberos crypto context
1215 krb5_crypto crypto, in krb5_encrypt_iov_ivec() argument
1228 const struct _krb5_encryption_type *et = crypto->et; in krb5_encrypt_iov_ivec()
1236 if(!derived_crypto(context, crypto)) { in krb5_encrypt_iov_ivec()
1312 crypto, in krb5_encrypt_iov_ivec()
1348 ret = _get_derived_key(context, crypto, ENCRYPTION_USAGE(usage), &dkey); in krb5_encrypt_iov_ivec()
1389 * @param crypto Kerberos crypto context
1408 krb5_crypto crypto, in krb5_decrypt_iov_ivec() argument
1420 struct _krb5_encryption_type *et = crypto->et; in krb5_decrypt_iov_ivec()
1423 if(!derived_crypto(context, crypto)) { in krb5_decrypt_iov_ivec()
1471 ret = _get_derived_key(context, crypto, ENCRYPTION_USAGE(usage), &dkey); in krb5_decrypt_iov_ivec()
1526 crypto, in krb5_decrypt_iov_ivec()
1539 * @param crypto Kerberos crypto context
1551 krb5_crypto crypto, in krb5_create_checksum_iov() argument
1564 if(!derived_crypto(context, crypto)) { in krb5_create_checksum_iov()
1591 ret = krb5_create_checksum(context, crypto, usage, 0, p, len, &cksum); in krb5_create_checksum_iov()
1617 * @param crypto Kerberos crypto context
1629 krb5_crypto crypto, in krb5_verify_checksum_iov() argument
1635 struct _krb5_encryption_type *et = crypto->et; in krb5_verify_checksum_iov()
1643 if(!derived_crypto(context, crypto)) { in krb5_verify_checksum_iov()
1674 ret = krb5_verify_checksum(context, crypto, usage, p, len, &cksum); in krb5_verify_checksum_iov()
1686 krb5_crypto crypto, in krb5_crypto_length() argument
1690 if (!derived_crypto(context, crypto)) { in krb5_crypto_length()
1691 krb5_set_error_message(context, EINVAL, "not a derived crypto"); in krb5_crypto_length()
1700 *len = crypto->et->blocksize; in krb5_crypto_length()
1707 if (crypto->et->padsize > 1) in krb5_crypto_length()
1708 *len = crypto->et->padsize; in krb5_crypto_length()
1713 *len = CHECKSUMSIZE(crypto->et->keyed_checksum); in krb5_crypto_length()
1716 if (crypto->et->keyed_checksum) in krb5_crypto_length()
1717 *len = CHECKSUMSIZE(crypto->et->keyed_checksum); in krb5_crypto_length()
1719 *len = CHECKSUMSIZE(crypto->et->checksum); in krb5_crypto_length()
1730 krb5_crypto crypto, in krb5_crypto_length_iov() argument
1738 ret = krb5_crypto_length(context, crypto, in krb5_crypto_length_iov()
1750 krb5_crypto crypto, in krb5_encrypt_ivec() argument
1757 if(derived_crypto(context, crypto)) in krb5_encrypt_ivec()
1758 return encrypt_internal_derived(context, crypto, usage, in krb5_encrypt_ivec()
1760 else if (special_crypto(context, crypto)) in krb5_encrypt_ivec()
1761 return encrypt_internal_special (context, crypto, usage, in krb5_encrypt_ivec()
1764 return encrypt_internal(context, crypto, data, len, result, ivec); in krb5_encrypt_ivec()
1769 krb5_crypto crypto, in krb5_encrypt() argument
1775 return krb5_encrypt_ivec(context, crypto, usage, data, len, result, NULL); in krb5_encrypt()
1780 krb5_crypto crypto, in krb5_encrypt_EncryptedData() argument
1787 result->etype = CRYPTO_ETYPE(crypto); in krb5_encrypt_EncryptedData()
1793 return krb5_encrypt(context, crypto, usage, data, len, &result->cipher); in krb5_encrypt_EncryptedData()
1798 krb5_crypto crypto, in krb5_decrypt_ivec() argument
1805 if(derived_crypto(context, crypto)) in krb5_decrypt_ivec()
1806 return decrypt_internal_derived(context, crypto, usage, in krb5_decrypt_ivec()
1808 else if (special_crypto (context, crypto)) in krb5_decrypt_ivec()
1809 return decrypt_internal_special(context, crypto, usage, in krb5_decrypt_ivec()
1812 return decrypt_internal(context, crypto, data, len, result, ivec); in krb5_decrypt_ivec()
1817 krb5_crypto crypto, in krb5_decrypt() argument
1823 return krb5_decrypt_ivec (context, crypto, usage, data, len, result, in krb5_decrypt()
1829 krb5_crypto crypto, in krb5_decrypt_EncryptedData() argument
1834 return krb5_decrypt(context, crypto, usage, in krb5_decrypt_EncryptedData()
1935 _new_derived_key(krb5_crypto crypto, unsigned usage) in _new_derived_key() argument
1937 struct _krb5_key_usage *d = crypto->key_usage; in _new_derived_key()
1938 d = realloc(d, (crypto->num_key_usage + 1) * sizeof(*d)); in _new_derived_key()
1941 crypto->key_usage = d; in _new_derived_key()
1942 d += crypto->num_key_usage++; in _new_derived_key()
1981 krb5_crypto crypto, in _get_derived_key() argument
1989 for(i = 0; i < crypto->num_key_usage; i++) in _get_derived_key()
1990 if(crypto->key_usage[i].usage == usage) { in _get_derived_key()
1991 *key = &crypto->key_usage[i].key; in _get_derived_key()
1994 d = _new_derived_key(crypto, usage); in _get_derived_key()
1999 krb5_copy_keyblock(context, crypto->key.key, &d->key); in _get_derived_key()
2001 _krb5_derive_key(context, crypto->et, d, constant, sizeof(constant)); in _get_derived_key()
2007 * Create a crypto context used for all encryption and signature
2012 * To free the crypto context, use krb5_crypto_destroy().
2017 * @param crypto the resulting crypto context
2028 krb5_crypto *crypto) in krb5_crypto_init() argument
2031 ALLOC(*crypto, 1); in krb5_crypto_init()
2032 if(*crypto == NULL) { in krb5_crypto_init()
2038 (*crypto)->et = _krb5_find_enctype(etype); in krb5_crypto_init()
2039 if((*crypto)->et == NULL || ((*crypto)->et->flags & F_DISABLED)) { in krb5_crypto_init()
2040 free(*crypto); in krb5_crypto_init()
2041 *crypto = NULL; in krb5_crypto_init()
2044 if((*crypto)->et->keytype->size != key->keyvalue.length) { in krb5_crypto_init()
2045 free(*crypto); in krb5_crypto_init()
2046 *crypto = NULL; in krb5_crypto_init()
2051 ret = krb5_copy_keyblock(context, key, &(*crypto)->key.key); in krb5_crypto_init()
2053 free(*crypto); in krb5_crypto_init()
2054 *crypto = NULL; in krb5_crypto_init()
2060 (*crypto)->key.schedule = NULL; in krb5_crypto_init()
2061 (*crypto)->num_key_usage = 0; in krb5_crypto_init()
2062 (*crypto)->key_usage = NULL; in krb5_crypto_init()
2096 * Free a crypto context created by krb5_crypto_init().
2099 * @param crypto crypto context to free
2108 krb5_crypto crypto) in krb5_crypto_destroy() argument
2112 for(i = 0; i < crypto->num_key_usage; i++) in krb5_crypto_destroy()
2113 free_key_usage(context, &crypto->key_usage[i], crypto->et); in krb5_crypto_destroy()
2114 free(crypto->key_usage); in krb5_crypto_destroy()
2115 _krb5_free_key_data(context, &crypto->key, crypto->et); in krb5_crypto_destroy()
2116 free (crypto); in krb5_crypto_destroy()
2121 * Return the blocksize used algorithm referenced by the crypto context
2124 * @param crypto crypto context to query
2134 krb5_crypto crypto, in krb5_crypto_getblocksize() argument
2137 *blocksize = crypto->et->blocksize; in krb5_crypto_getblocksize()
2142 * Return the encryption type used by the crypto context
2145 * @param crypto crypto context to query
2155 krb5_crypto crypto, in krb5_crypto_getenctype() argument
2158 *enctype = crypto->et->type; in krb5_crypto_getenctype()
2163 * Return the padding size used by the crypto context
2166 * @param crypto crypto context to query
2176 krb5_crypto crypto, in krb5_crypto_getpadsize() argument
2179 *padsize = crypto->et->padsize; in krb5_crypto_getpadsize()
2184 * Return the confounder size used by the crypto context
2187 * @param crypto crypto context to query
2197 krb5_crypto crypto, in krb5_crypto_getconfoundersize() argument
2200 *confoundersize = crypto->et->confoundersize; in krb5_crypto_getconfoundersize()
2288 krb5_crypto crypto, in wrapped_length() argument
2291 struct _krb5_encryption_type *et = crypto->et; in wrapped_length()
2303 krb5_crypto crypto, in wrapped_length_dervied() argument
2306 struct _krb5_encryption_type *et = crypto->et; in wrapped_length_dervied()
2325 krb5_crypto crypto, in krb5_get_wrapped_length() argument
2328 if (derived_crypto (context, crypto)) in krb5_get_wrapped_length()
2329 return wrapped_length_dervied (context, crypto, data_len); in krb5_get_wrapped_length()
2331 return wrapped_length (context, crypto, data_len); in krb5_get_wrapped_length()
2340 krb5_crypto crypto) in crypto_overhead() argument
2342 struct _krb5_encryption_type *et = crypto->et; in crypto_overhead()
2354 krb5_crypto crypto) in crypto_overhead_dervied() argument
2356 struct _krb5_encryption_type *et = crypto->et; in crypto_overhead_dervied()
2370 krb5_crypto_overhead (krb5_context context, krb5_crypto crypto) in krb5_crypto_overhead() argument
2372 if (derived_crypto (context, crypto)) in krb5_crypto_overhead()
2373 return crypto_overhead_dervied (context, crypto); in krb5_crypto_overhead()
2375 return crypto_overhead (context, crypto); in krb5_crypto_overhead()
2380 * Kerberos crypto frame work. It may be assumed that all the bits of
2452 const krb5_crypto crypto, in krb5_crypto_prf() argument
2456 struct _krb5_encryption_type *et = crypto->et; in krb5_crypto_prf()
2467 return (*et->prf)(context, crypto, input, output); in krb5_crypto_prf()
2472 const krb5_crypto crypto, in krb5_crypto_prfplus() argument
2503 ret = krb5_crypto_prf(context, crypto, &input2, &block); in krb5_crypto_prfplus()