summaryrefslogtreecommitdiffstats
path: root/src/include/krb5
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2008-12-02 20:10:20 +0000
committerSam Hartman <hartmans@mit.edu>2008-12-02 20:10:20 +0000
commitb5d22c309b734f6d3908fafa0e681ef7844ad9b3 (patch)
treecb6c8bae9acfc8e05bdcc5b156d4d9896c5e251d /src/include/krb5
parentb282e93924be15445fb48ab186da737d62a003f6 (diff)
downloadkrb5-b5d22c309b734f6d3908fafa0e681ef7844ad9b3.tar.gz
krb5-b5d22c309b734f6d3908fafa0e681ef7844ad9b3.tar.xz
krb5-b5d22c309b734f6d3908fafa0e681ef7844ad9b3.zip
Crypto IOV API per Projects/AEAD encryption API
Merge in the mskrb-crypto-iov branch at r21259 in order to move an implementation of http://k5wiki.kerberos.org/wiki/Projects/AEAD_encryption_API onto the trunk. This branch contains a subset of the commits on the mskrb-integ branch that implement the krb5 library part of the crypto IOV API. ticket: new Status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21263 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/include/krb5')
-rw-r--r--src/include/krb5/krb5.hin57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin
index 62fd90df4..accde60fc 100644
--- a/src/include/krb5/krb5.hin
+++ b/src/include/krb5/krb5.hin
@@ -195,6 +195,7 @@ typedef krb5_int32 krb5_enctype;
typedef krb5_int32 krb5_cksumtype;
typedef krb5_int32 krb5_authdatatype;
typedef krb5_int32 krb5_keyusage;
+typedef krb5_int32 krb5_cryptotype;
typedef krb5_int32 krb5_preauthtype; /* This may change, later on */
typedef krb5_int32 krb5_flags;
@@ -358,6 +359,11 @@ typedef struct _krb5_enc_data {
krb5_data ciphertext;
} krb5_enc_data;
+typedef struct _krb5_crypto_iov {
+ krb5_cryptotype flags;
+ krb5_data data;
+} krb5_crypto_iov;
+
/* per Kerberos v5 protocol spec */
#define ENCTYPE_NULL 0x0000
#define ENCTYPE_DES_CBC_CRC 0x0001 /* DES cbc mode with CRC-32 */
@@ -606,6 +612,57 @@ krb5_boolean KRB5_CALLCONV krb5_c_is_coll_proof_cksum
krb5_boolean KRB5_CALLCONV krb5_c_is_keyed_cksum
(krb5_cksumtype ctype);
+/* AEAD APIs */
+#define KRB5_CRYPTO_TYPE_EMPTY 0 /* [in] ignored */
+#define KRB5_CRYPTO_TYPE_HEADER 1 /* [out] header */
+#define KRB5_CRYPTO_TYPE_DATA 2 /* [in, out] plaintext */
+#define KRB5_CRYPTO_TYPE_SIGN_ONLY 3 /* [in] associated data */
+#define KRB5_CRYPTO_TYPE_PADDING 4 /* [out] padding */
+#define KRB5_CRYPTO_TYPE_TRAILER 5 /* [out] checksum for encrypt */
+#define KRB5_CRYPTO_TYPE_CHECKSUM 6 /* [out] checksum for MIC */
+#define KRB5_CRYPTO_TYPE_STREAM 7 /* [in] entire message */
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_make_checksum_iov
+ (krb5_context context, krb5_cksumtype cksumtype,
+ const krb5_keyblock *key, krb5_keyusage usage,
+ krb5_crypto_iov *data, size_t num_data);
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_verify_checksum_iov
+ (krb5_context context,
+ krb5_cksumtype cksumtype,
+ const krb5_keyblock *key, krb5_keyusage usage,
+ const krb5_crypto_iov *data, size_t num_data,
+ krb5_boolean *valid);
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_encrypt_iov
+ (krb5_context context, const krb5_keyblock *key,
+ krb5_keyusage usage, const krb5_data *cipher_state,
+ krb5_crypto_iov *data, size_t num_data);
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_decrypt_iov
+ (krb5_context context, const krb5_keyblock *key,
+ krb5_keyusage usage, const krb5_data *cipher_state,
+ krb5_crypto_iov *data, size_t num_data);
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_crypto_length
+ (krb5_context context, krb5_enctype enctype,
+ krb5_cryptotype type, unsigned int *size);
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_crypto_length_iov
+ (krb5_context context, krb5_enctype enctype,
+ krb5_crypto_iov *data, size_t num_data);
+
+krb5_error_code KRB5_CALLCONV
+ krb5_c_padding_length
+ (krb5_context context, krb5_enctype enctype,
+ size_t data_length, unsigned int *size);
+
#ifdef KRB5_OLD_CRYPTO
/*
* old cryptosystem routine prototypes. These are now layered