]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
pass a null data pointer if a null iv is passed in
authorMarc Horowitz <marc@mit.edu>
Sun, 23 Aug 1998 06:08:36 +0000 (06:08 +0000)
committerMarc Horowitz <marc@mit.edu>
Sun, 23 Aug 1998 06:08:36 +0000 (06:08 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/marc-3des@10873 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/gssapi/krb5/util_crypt.c

index eeac5d7199ce35502327c5cb9e875f17a597e007..b3b550ad1c6cdaada7877712e24f4e1a298cc268 100644 (file)
@@ -89,14 +89,19 @@ kg_encrypt(context, key, iv, in, out, length)
 {
    krb5_error_code code;
    size_t blocksize;
-   krb5_data ivd, inputd;
+   krb5_data ivd, *pivd, inputd;
    krb5_enc_data outputd;
 
-   if (code = krb5_c_block_size(context, key->enctype, &blocksize))
-      return(code);
+   if (iv) {
+       if (code = krb5_c_block_size(context, key->enctype, &blocksize))
+          return(code);
 
-   ivd.length = blocksize;
-   ivd.data = iv;
+       ivd.length = blocksize;
+       ivd.data = iv;
+       pivd = &ivd;
+   } else {
+       pivd = NULL;
+   }
 
    inputd.length = length;
    inputd.data = in;
@@ -107,7 +112,7 @@ kg_encrypt(context, key, iv, in, out, length)
    return(krb5_c_encrypt(context, key,
                         /* XXX this routine is only used for the old
                            bare-des stuff which doesn't use the
-                           key usage */ 0, &ivd, &inputd, &outputd));
+                           key usage */ 0, pivd, &inputd, &outputd));
 }
 
 /* length is the length of the cleartext. */
@@ -123,20 +128,22 @@ kg_decrypt(context, key, iv, in, out, length)
 {
    krb5_error_code code;
    size_t blocksize, enclen;
-   krb5_data ivd, outputd;
+   krb5_data ivd, *pivd, outputd;
    krb5_enc_data inputd;
 
-   if (code = krb5_c_block_size(context, key->enctype, &blocksize))
-      return(code);
-
-   if (code = krb5_c_encrypt_length(context, key->enctype, length, &enclen))
-      return(code);
+   if (iv) {
+       if (code = krb5_c_block_size(context, key->enctype, &blocksize))
+          return(code);
 
-   ivd.length = blocksize;
-   ivd.data = iv;
+       ivd.length = blocksize;
+       ivd.data = iv;
+       pivd = &ivd;
+   } else {
+       pivd = NULL;
+   }
 
    inputd.enctype = ENCTYPE_UNKNOWN;
-   inputd.ciphertext.length = enclen;
+   inputd.ciphertext.length = length;
    inputd.ciphertext.data = in;
 
    outputd.length = length;
@@ -145,5 +152,5 @@ kg_decrypt(context, key, iv, in, out, length)
    return(krb5_c_decrypt(context, key,
                         /* XXX this routine is only used for the old
                            bare-des stuff which doesn't use the
-                           key usage */ 0, &ivd, &inputd, &outputd));
+                           key usage */ 0, pivd, &inputd, &outputd));
 }