~lefteris-nikoltsios/+junk/samba-lp1016895

« back to all changes in this revision

Viewing changes to source4/heimdal/lib/gssapi/krb5/wrap.c

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-21 13:18:04 UTC
  • mfrom: (0.39.21 sid)
  • Revision ID: package-import@ubuntu.com-20111221131804-xtlr39wx6njehxxr
Tags: 2:3.6.1-3ubuntu1
* Merge from Debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/patches/error-trans.fix-276472:
    - Add the translation of Unix Error code -ENOTSUP to NT Error Code
    - NT_STATUS_NOT_SUPPORTED to prevent the Permission denied error.
  + debian/smb.conf:
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] share, and add a comment about
      "valid users = %S" to show users how to restrict access to
      \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are 
      allowed to create public shares in addition to authenticated
      ones.
    - add map to guest = Bad user, maps bad username to guest access.
  + debian/samba-common.config:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/control:
    - Don't build against or suggest ctdb.
    - Add dependency on samba-common-bin to samba.
  + Add ufw integration:
    - Created debian/samba.ufw.profile
    - debian/rules, debian/samba.dirs, debian/samba.files: install
      profile
    - debian/control: have samba suggest ufw
  + Add apport hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + Switch to upstart:
    - Add debian/samba.{nmbd,smbd}.upstart.
  + debian/samba.logrotate, debian/samba-common.dhcp, debian/samba.if-up:
    - Make them upstart compatible
  + debian/samba.postinst: 
    - Avoid scary pdbedit warnings on first import.
  + debian/samba-common.postinst: Add more informative error message for
    the case where smb.conf was manually deleted
  + debian/patches/fix-debuglevel-name-conflict.patch: don't use 'debug_level'
    as a global variable name in an NSS module 
  + Dropped:
    - debian/patches/error-trans.fix-276472
    - debian/patches/fix-debuglevel-name-conflict.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
134
134
    return GSS_S_COMPLETE;
135
135
}
136
136
 
137
 
OM_uint32
 
137
OM_uint32 GSSAPI_CALLCONV
138
138
_gsskrb5_wrap_size_limit (
139
139
            OM_uint32 * minor_status,
140
140
            const gss_ctx_id_t context_handle,
168
168
 
169
169
  switch (keytype) {
170
170
  case KEYTYPE_DES :
 
171
#ifdef HEIM_WEAK_CRYPTO
171
172
      ret = sub_wrap_size(req_output_size, max_input_size, 8, 22);
 
173
#else
 
174
      ret = GSS_S_FAILURE;
 
175
#endif
172
176
      break;
173
177
  case KEYTYPE_ARCFOUR:
174
178
  case KEYTYPE_ARCFOUR_56:
188
192
  return ret;
189
193
}
190
194
 
 
195
#ifdef HEIM_WEAK_CRYPTO
 
196
 
191
197
static OM_uint32
192
198
wrap_des
193
199
           (OM_uint32 * minor_status,
202
208
           )
203
209
{
204
210
  u_char *p;
205
 
  MD5_CTX md5;
 
211
  EVP_MD_CTX *md5;
206
212
  u_char hash[16];
207
213
  DES_key_schedule schedule;
 
214
  EVP_CIPHER_CTX des_ctx;
208
215
  DES_cblock deskey;
209
216
  DES_cblock zero;
210
217
  int i;
262
269
  memset (p + 8 + input_message_buffer->length, padlength, padlength);
263
270
 
264
271
  /* checksum */
265
 
  MD5_Init (&md5);
266
 
  MD5_Update (&md5, p - 24, 8);
267
 
  MD5_Update (&md5, p, datalen);
268
 
  MD5_Final (hash, &md5);
 
272
  md5 = EVP_MD_CTX_create();
 
273
  EVP_DigestInit_ex(md5, EVP_md5(), NULL);
 
274
  EVP_DigestUpdate(md5, p - 24, 8);
 
275
  EVP_DigestUpdate(md5, p, datalen);
 
276
  EVP_DigestFinal_ex(md5, hash, NULL);
 
277
  EVP_MD_CTX_destroy(md5);
269
278
 
270
279
  memset (&zero, 0, sizeof(zero));
271
280
  memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
289
298
          (ctx->more_flags & LOCAL) ? 0 : 0xFF,
290
299
          4);
291
300
 
292
 
  DES_set_key_unchecked (&deskey, &schedule);
293
 
  DES_cbc_encrypt ((void *)p, (void *)p, 8,
294
 
                   &schedule, (DES_cblock *)(p + 8), DES_ENCRYPT);
 
301
  EVP_CIPHER_CTX_init(&des_ctx);
 
302
  EVP_CipherInit_ex(&des_ctx, EVP_des_cbc(), NULL, key->keyvalue.data, p + 8, 1);
 
303
  EVP_Cipher(&des_ctx, p, p, 8);
 
304
  EVP_CIPHER_CTX_cleanup(&des_ctx);
295
305
 
296
306
  krb5_auth_con_setlocalseqnumber (context,
297
307
                               ctx->auth_context,
306
316
 
307
317
      for (i = 0; i < sizeof(deskey); ++i)
308
318
          deskey[i] ^= 0xf0;
309
 
      DES_set_key_unchecked (&deskey, &schedule);
310
 
      memset (&zero, 0, sizeof(zero));
311
 
      DES_cbc_encrypt ((void *)p,
312
 
                       (void *)p,
313
 
                       datalen,
314
 
                       &schedule,
315
 
                       &zero,
316
 
                       DES_ENCRYPT);
 
319
 
 
320
      EVP_CIPHER_CTX_init(&des_ctx);
 
321
      EVP_CipherInit_ex(&des_ctx, EVP_des_cbc(), NULL, deskey, zero, 1);
 
322
      EVP_Cipher(&des_ctx, p, p, datalen);
 
323
      EVP_CIPHER_CTX_cleanup(&des_ctx);
317
324
  }
318
325
  memset (deskey, 0, sizeof(deskey));
319
326
  memset (&schedule, 0, sizeof(schedule));
324
331
  return GSS_S_COMPLETE;
325
332
}
326
333
 
 
334
#endif
 
335
 
327
336
static OM_uint32
328
337
wrap_des3
329
338
           (OM_uint32 * minor_status,
515
524
  return GSS_S_COMPLETE;
516
525
}
517
526
 
518
 
OM_uint32 _gsskrb5_wrap
 
527
OM_uint32 GSSAPI_CALLCONV
 
528
_gsskrb5_wrap
519
529
           (OM_uint32 * minor_status,
520
530
            const gss_ctx_id_t context_handle,
521
531
            int conf_req_flag,
552
562
 
553
563
  switch (keytype) {
554
564
  case KEYTYPE_DES :
 
565
#ifdef HEIM_WEAK_CRYPTO
555
566
      ret = wrap_des (minor_status, ctx, context, conf_req_flag,
556
567
                      qop_req, input_message_buffer, conf_state,
557
568
                      output_message_buffer, key);
 
569
#else
 
570
      ret = GSS_S_FAILURE;
 
571
#endif
558
572
      break;
559
573
  case KEYTYPE_DES3 :
560
574
      ret = wrap_des3 (minor_status, ctx, context, conf_req_flag,