+Mon Nov 13 11:30:10 1995 Theodore Y. Ts'o <tytso@dcl>
+
+ * encrypt_data.c (krb5_encrypt_data): New file. A generic routine
+ for encrypting data in a krb5_data structure. Fills in a
+ krb5_enc_data structure.
+
+ * decrypt_data.c (krb5_decrypt_data): New file. A generic routine
+ for decrypting data in a krb5_enc_data structure. Fills
+ in a krb5_data structure.
+
+ * Makefile.in (SRCS): Added decrypt_data.c and encrypt_data.c to
+ list of files to be compiled.
+
Fri Oct 6 22:01:04 1995 Theodore Y. Ts'o <tytso@dcl>
* Makefile.in: Remove ##DOS!include of config/windows.in.
@SHARED_RULE@
OBJS= cryptoconf.$(OBJEXT) \
+ encrypt_data.$(OBJEXT) \
+ decrypt_data.$(OBJEXT) \
des_crc.$(OBJEXT) \
des_md5.$(OBJEXT) \
raw_des.$(OBJEXT)
SRCS= $(srcdir)/cryptoconf.c \
+ $(srcdir)/encrypt_data.c \
+ $(srcdir)/decrypt_data.c \
$(srcdir)/des_crc.c \
$(srcdir)/des_md5.c \
$(srcdir)/raw_des.c
--- /dev/null
+/*
+ * Copyright 1995 by the Massachusetts Institute of Technology.
+ * All Rights Reserved.
+ *
+ * Export of this software from the United States of America may
+ * require a specific license from the United States Government.
+ * It is the responsibility of any person or organization contemplating
+ * export to obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission. M.I.T. makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is" without express
+ * or implied warranty.
+ *
+ */
+
+#include "k5-int.h"
+
+/*
+ * This routine takes a key and a krb5_enc_data structure as input, and
+ * outputs the decrypted data in a krb5_data structure. Note that
+ * the krb5_data structure is not allocated.
+ */
+krb5_error_code
+krb5_decrypt_data(context, key, ivec, enc_data, data)
+ krb5_context context;
+ krb5_keyblock * key;
+ krb5_pointer ivec;
+ krb5_enc_data * enc_data;
+ krb5_data * data;
+{
+ krb5_error_code retval;
+ krb5_encrypt_block eblock;
+
+ krb5_use_enctype(context, &eblock, key->enctype);
+ data->length = enc_data->ciphertext.length;
+ if (!(data->data = malloc(data->length)))
+ return ENOMEM;
+
+ if ((retval = krb5_process_key(context, &eblock, key)) != 0)
+ goto cleanup;
+
+ if ((retval = krb5_decrypt(context,
+ (krb5_pointer) enc_data->ciphertext.data,
+ (krb5_pointer) data->data,
+ enc_data->ciphertext.length, &eblock, ivec))) {
+ krb5_finish_key(context, &eblock);
+ goto cleanup;
+ }
+ (void) krb5_finish_key(context, &eblock);
+
+ return 0;
+
+cleanup:
+ if (data->data) {
+ free(data->data);
+ data->data = 0;
+ }
+ return retval;
+}
--- /dev/null
+/*
+ * Copyright 1995 by the Massachusetts Institute of Technology.
+ * All Rights Reserved.
+ *
+ * Export of this software from the United States of America may
+ * require a specific license from the United States Government.
+ * It is the responsibility of any person or organization contemplating
+ * export to obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission. M.I.T. makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is" without express
+ * or implied warranty.
+ *
+ */
+
+#include "k5-int.h"
+
+/*
+ * This routine takes a key and a krb5_data structure as input, and
+ * outputs the encrypted data in a krb5_enc_data structure. Note that
+ * the krb5_enc_data structure is not allocated, and the kvno field is
+ * not filled in.
+ */
+krb5_error_code
+krb5_encrypt_data(context, key, ivec, data, enc_data)
+ krb5_context context;
+ krb5_keyblock * key;
+ krb5_pointer ivec;
+ krb5_data * data;
+ krb5_enc_data * enc_data;
+{
+ krb5_error_code retval;
+ krb5_encrypt_block eblock;
+
+ krb5_use_enctype(context, &eblock, key->enctype);
+
+ enc_data->magic = KV5M_ENC_DATA;
+ enc_data->kvno = 0;
+ enc_data->enctype = key->enctype;
+ enc_data->ciphertext.length = krb5_encrypt_size(data->length,
+ eblock.crypto_entry);
+ enc_data->ciphertext.data = malloc(enc_data->ciphertext.length);
+ if (enc_data->ciphertext.data == 0)
+ return ENOMEM;
+
+ if ((retval = krb5_process_key(context, &eblock, key)) != 0)
+ goto cleanup;
+
+ if ((retval = krb5_encrypt(context, (krb5_pointer) data->data,
+ (krb5_pointer) enc_data->ciphertext.data,
+ data->length, &eblock, ivec))) {
+ krb5_finish_key(context, &eblock);
+ goto cleanup;
+ }
+ (void) krb5_finish_key(context, &eblock);
+
+ return 0;
+
+cleanup:
+ free(enc_data->ciphertext.data);
+ return retval;
+}
+