Skip to content
Snippets Groups Projects
Select Git revision
  • 81a752caff1c19abbc995d4cf5202aed549313f6
  • master default protected
  • hpke
  • ppc-chacha-4core
  • delete-internal-name-mangling
  • master-updates
  • ppc-gcm
  • ppc-chacha-2core
  • refactor-ecc-mod
  • ppc-chacha-core
  • use-mpn_cnd-functions
  • optimize-ecc-invert
  • default-m4-quote-char
  • power-asm-wip
  • test-fat
  • chacha-3core-neon
  • x86_64-salsa20-2core
  • salsa20-2core-neon
  • bcrypt
  • arm-salsa20-chacha-vsra
  • test-shlib-dir
  • nettle_3.6_release_20200429
  • nettle_3.6rc3
  • nettle_3.6rc2
  • nettle_3.6rc1
  • nettle_3.5.1_release_20190627
  • nettle_3.5_release_20190626
  • nettle_3.5rc1
  • nettle_3.4.1_release_20181204
  • nettle_3.4.1rc1
  • nettle_3.4_release_20171119
  • nettle_3.4rc2
  • nettle_3.4rc1
  • nettle_3.3_release_20161001
  • nettle_3.2_release_20160128
  • nettle_3.1.1_release_20150424
  • nettle_3.1_release_20150407
  • nettle_3.1rc3
  • nettle_3.1rc2
  • nettle_3.1rc1
  • nettle_3.0_release_20140607
41 results

des-compat.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    • Niels Möller's avatar
      c5c15385
      * Reordered includes in most or all .c-files. All should now include · c5c15385
      Niels Möller authored
      config.h.
      
      Rev: src/nettle/ChangeLog:1.195
      Rev: src/nettle/aes-decrypt-table.c:1.4
      Rev: src/nettle/aes-decrypt.c:1.5
      Rev: src/nettle/aes-encrypt-table.c:1.4
      Rev: src/nettle/aes-encrypt.c:1.5
      Rev: src/nettle/aes-meta.c:1.3
      Rev: src/nettle/aes-set-decrypt-key.c:1.2
      Rev: src/nettle/aes-set-encrypt-key.c:1.2
      Rev: src/nettle/aes.c:1.12
      Rev: src/nettle/aesdata.c:1.2
      Rev: src/nettle/arcfour-meta.c:1.2
      Rev: src/nettle/arcfour.c:1.3
      Rev: src/nettle/base16-decode.c:1.2
      Rev: src/nettle/base16-encode.c:1.2
      Rev: src/nettle/base16-meta.c:1.3
      Rev: src/nettle/base64-decode.c:1.5
      Rev: src/nettle/base64-encode.c:1.3
      Rev: src/nettle/base64-meta.c:1.4
      Rev: src/nettle/bignum-random.c:1.3
      Rev: src/nettle/bignum.c:1.7
      Rev: src/nettle/blowfish.c:1.4
      Rev: src/nettle/buffer-init.c:1.3
      Rev: src/nettle/buffer.c:1.8
      Rev: src/nettle/cast128-meta.c:1.3
      Rev: src/nettle/cast128.c:1.4
      Rev: src/nettle/cbc.c:1.6
      Rev: src/nettle/des-compat.c:1.10
      Rev: src/nettle/des.c:1.7
      Rev: src/nettle/des3.c:1.2
      Rev: src/nettle/dsa-keygen.c:1.6
      Rev: src/nettle/dsa-sign.c:1.7
      Rev: src/nettle/dsa-verify.c:1.4
      Rev: src/nettle/dsa.c:1.5
      Rev: src/nettle/examples/io.c:1.4
      Rev: src/nettle/examples/nettle-benchmark.c:1.8
      Rev: src/nettle/examples/nettle-openssl.c:1.2
      Rev: src/nettle/examples/rsa-keygen.c:1.10
      Rev: src/nettle/examples/rsa-sign.c:1.5
      Rev: src/nettle/examples/rsa-verify.c:1.4
      Rev: src/nettle/hmac-md5.c:1.5
      Rev: src/nettle/hmac-sha1.c:1.2
      Rev: src/nettle/hmac-sha256.c:1.2
      Rev: src/nettle/hmac.c:1.4
      Rev: src/nettle/knuth-lfib.c:1.2
      Rev: src/nettle/md5-compat.c:1.3
      Rev: src/nettle/md5-meta.c:1.2
      Rev: src/nettle/md5.c:1.6
      Rev: src/nettle/memxor.c:1.2
      Rev: src/nettle/nettle-internal.c:1.3
      Rev: src/nettle/pgp-encode.c:1.4
      Rev: src/nettle/pkcs1-rsa-md5.c:1.2
      Rev: src/nettle/pkcs1-rsa-sha1.c:1.2
      Rev: src/nettle/pkcs1.c:1.2
      Rev: src/nettle/realloc.c:1.3
      Rev: src/nettle/rsa-compat.c:1.8
      Rev: src/nettle/rsa-decrypt.c:1.4
      Rev: src/nettle/rsa-encrypt.c:1.5
      Rev: src/nettle/rsa-keygen.c:1.5
      Rev: src/nettle/rsa-md5-sign.c:1.2
      Rev: src/nettle/rsa-md5-verify.c:1.2
      Rev: src/nettle/rsa-sha1-sign.c:1.2
      Rev: src/nettle/rsa-sha1-verify.c:1.2
      Rev: src/nettle/rsa-sign.c:1.3
      Rev: src/nettle/rsa-verify.c:1.2
      Rev: src/nettle/rsa.c:1.12
      Rev: src/nettle/rsa2openpgp.c:1.2
      Rev: src/nettle/rsa2sexp.c:1.7
      Rev: src/nettle/serpent-meta.c:1.2
      Rev: src/nettle/serpent.c:1.4
      Rev: src/nettle/sexp-format.c:1.9
      Rev: src/nettle/sexp-transport-format.c:1.2
      Rev: src/nettle/sexp-transport.c:1.4
      Rev: src/nettle/sexp.c:1.14
      Rev: src/nettle/sexp2bignum.c:1.5
      Rev: src/nettle/sexp2dsa.c:1.4
      Rev: src/nettle/sexp2rsa.c:1.11
      Rev: src/nettle/sha1-meta.c:1.2
      Rev: src/nettle/sha1.c:1.8
      Rev: src/nettle/sha256-meta.c:1.2
      Rev: src/nettle/sha256.c:1.3
      Rev: src/nettle/tools/input.c:1.2
      Rev: src/nettle/tools/misc.c:1.2
      Rev: src/nettle/tools/output.c:1.3
      Rev: src/nettle/tools/parse.c:1.2
      Rev: src/nettle/tools/sexp-conv.c:1.14
      Rev: src/nettle/twofish-meta.c:1.2
      Rev: src/nettle/twofish.c:1.6
      Rev: src/nettle/yarrow256.c:1.17
      Rev: src/nettle/yarrow_key_event.c:1.4
      c5c15385
      History
      * Reordered includes in most or all .c-files. All should now include
      Niels Möller authored
      config.h.
      
      Rev: src/nettle/ChangeLog:1.195
      Rev: src/nettle/aes-decrypt-table.c:1.4
      Rev: src/nettle/aes-decrypt.c:1.5
      Rev: src/nettle/aes-encrypt-table.c:1.4
      Rev: src/nettle/aes-encrypt.c:1.5
      Rev: src/nettle/aes-meta.c:1.3
      Rev: src/nettle/aes-set-decrypt-key.c:1.2
      Rev: src/nettle/aes-set-encrypt-key.c:1.2
      Rev: src/nettle/aes.c:1.12
      Rev: src/nettle/aesdata.c:1.2
      Rev: src/nettle/arcfour-meta.c:1.2
      Rev: src/nettle/arcfour.c:1.3
      Rev: src/nettle/base16-decode.c:1.2
      Rev: src/nettle/base16-encode.c:1.2
      Rev: src/nettle/base16-meta.c:1.3
      Rev: src/nettle/base64-decode.c:1.5
      Rev: src/nettle/base64-encode.c:1.3
      Rev: src/nettle/base64-meta.c:1.4
      Rev: src/nettle/bignum-random.c:1.3
      Rev: src/nettle/bignum.c:1.7
      Rev: src/nettle/blowfish.c:1.4
      Rev: src/nettle/buffer-init.c:1.3
      Rev: src/nettle/buffer.c:1.8
      Rev: src/nettle/cast128-meta.c:1.3
      Rev: src/nettle/cast128.c:1.4
      Rev: src/nettle/cbc.c:1.6
      Rev: src/nettle/des-compat.c:1.10
      Rev: src/nettle/des.c:1.7
      Rev: src/nettle/des3.c:1.2
      Rev: src/nettle/dsa-keygen.c:1.6
      Rev: src/nettle/dsa-sign.c:1.7
      Rev: src/nettle/dsa-verify.c:1.4
      Rev: src/nettle/dsa.c:1.5
      Rev: src/nettle/examples/io.c:1.4
      Rev: src/nettle/examples/nettle-benchmark.c:1.8
      Rev: src/nettle/examples/nettle-openssl.c:1.2
      Rev: src/nettle/examples/rsa-keygen.c:1.10
      Rev: src/nettle/examples/rsa-sign.c:1.5
      Rev: src/nettle/examples/rsa-verify.c:1.4
      Rev: src/nettle/hmac-md5.c:1.5
      Rev: src/nettle/hmac-sha1.c:1.2
      Rev: src/nettle/hmac-sha256.c:1.2
      Rev: src/nettle/hmac.c:1.4
      Rev: src/nettle/knuth-lfib.c:1.2
      Rev: src/nettle/md5-compat.c:1.3
      Rev: src/nettle/md5-meta.c:1.2
      Rev: src/nettle/md5.c:1.6
      Rev: src/nettle/memxor.c:1.2
      Rev: src/nettle/nettle-internal.c:1.3
      Rev: src/nettle/pgp-encode.c:1.4
      Rev: src/nettle/pkcs1-rsa-md5.c:1.2
      Rev: src/nettle/pkcs1-rsa-sha1.c:1.2
      Rev: src/nettle/pkcs1.c:1.2
      Rev: src/nettle/realloc.c:1.3
      Rev: src/nettle/rsa-compat.c:1.8
      Rev: src/nettle/rsa-decrypt.c:1.4
      Rev: src/nettle/rsa-encrypt.c:1.5
      Rev: src/nettle/rsa-keygen.c:1.5
      Rev: src/nettle/rsa-md5-sign.c:1.2
      Rev: src/nettle/rsa-md5-verify.c:1.2
      Rev: src/nettle/rsa-sha1-sign.c:1.2
      Rev: src/nettle/rsa-sha1-verify.c:1.2
      Rev: src/nettle/rsa-sign.c:1.3
      Rev: src/nettle/rsa-verify.c:1.2
      Rev: src/nettle/rsa.c:1.12
      Rev: src/nettle/rsa2openpgp.c:1.2
      Rev: src/nettle/rsa2sexp.c:1.7
      Rev: src/nettle/serpent-meta.c:1.2
      Rev: src/nettle/serpent.c:1.4
      Rev: src/nettle/sexp-format.c:1.9
      Rev: src/nettle/sexp-transport-format.c:1.2
      Rev: src/nettle/sexp-transport.c:1.4
      Rev: src/nettle/sexp.c:1.14
      Rev: src/nettle/sexp2bignum.c:1.5
      Rev: src/nettle/sexp2dsa.c:1.4
      Rev: src/nettle/sexp2rsa.c:1.11
      Rev: src/nettle/sha1-meta.c:1.2
      Rev: src/nettle/sha1.c:1.8
      Rev: src/nettle/sha256-meta.c:1.2
      Rev: src/nettle/sha256.c:1.3
      Rev: src/nettle/tools/input.c:1.2
      Rev: src/nettle/tools/misc.c:1.2
      Rev: src/nettle/tools/output.c:1.3
      Rev: src/nettle/tools/parse.c:1.2
      Rev: src/nettle/tools/sexp-conv.c:1.14
      Rev: src/nettle/twofish-meta.c:1.2
      Rev: src/nettle/twofish.c:1.6
      Rev: src/nettle/yarrow256.c:1.17
      Rev: src/nettle/yarrow_key_event.c:1.4
    apply_low.h 8.72 KiB
    /*
    || This file is part of Pike. For copyright information see COPYRIGHT.
    || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
    || for more information.
    */
    
        {
          struct program *p;
          struct reference *ref;
          struct pike_frame *new_frame;
          struct identifier *function;
    
    #ifdef PIKE_DEBUG
          if (fun < 0)
    	Pike_fatal ("Invalid function offset: %d.\n", fun);
    #endif
          check_stack(256);
          check_mark_stack(256);
    
    #ifdef PIKE_DEBUG
          {
    	static int counter;
    	switch(d_flag)
    	{
    	  case 0:
    	  case 1:
    	  case 2:
    	    break;
    	  case 3:
    	    if(!((counter++ & 7)))
    	      do_debug();
    	    break;
    	  case 4:
    	  default:
    	    do_debug();
    	}
          }
    #endif
    
          p=o->prog;
          if(!p)
    	PIKE_ERROR("destructed object->function",
    	      "Cannot call functions in destructed objects.\n", Pike_sp, args);
    
          if(!(p->flags & PROGRAM_PASS_1_DONE) || (p->flags & PROGRAM_AVOID_CHECK))
    	PIKE_ERROR("__empty_program() -> function",
    	      "Cannot call functions in unfinished objects.\n", Pike_sp, args);
    	
    
    #ifdef PIKE_SECURITY
          CHECK_DATA_SECURITY_OR_ERROR(o, SECURITY_BIT_CALL,
    				   ("Function call permission denied.\n"));
    
          if(!CHECK_DATA_SECURITY(o, SECURITY_BIT_NOT_SETUID))
    	SET_CURRENT_CREDS(o->prot);
    #endif
    
    
    #ifdef PIKE_DEBUG
          if(fun>=(int)p->num_identifier_references)
          {
    	fprintf(stderr, "Function index out of range. %ld >= %d\n",
    		DO_NOT_WARN((long)fun),
    		(int)p->num_identifier_references);
    	fprintf(stderr,"########Program is:\n");
    	describe(p);
    	fprintf(stderr,"########Object is:\n");
    	describe(o);
    	Pike_fatal("Function index out of range.\n");
          }
    #endif
    
          ref = p->identifier_references + fun;
    #ifdef PIKE_DEBUG
          if(ref->inherit_offset>=p->num_inherits)
    	Pike_fatal("Inherit offset out of range in program.\n");
    #endif
    
          /* init a new evaluation pike_frame */
          new_frame=alloc_pike_frame();
    #ifdef PROFILING
          new_frame->children_base = Pike_interpreter.accounted_time;
          new_frame->start_time = get_cpu_time() - Pike_interpreter.unlocked_time;
    
          /* This is mostly for profiling, but
           * could also be used to find out the name of a function
           * in a destructed object. -hubbe
           *
           * Since it not used for anything but profiling yet, I will
           * put it here until someone needs it. -Hubbe
           */
          new_frame->ident = ref->identifier_offset;
          DO_IF_PROFILING_DEBUG({
    	  fprintf(stderr, "%p{: Push at %" PRINT_CPU_TIME
    		  " %" PRINT_CPU_TIME "\n",
    		  Pike_interpreter.thread_state, new_frame->start_time,
    		  new_frame->children_base);
    	});
    #endif
          debug_malloc_touch(new_frame);
    
          new_frame->next = Pike_fp;
          new_frame->current_object = o;
          new_frame->current_program = p;
          new_frame->context = p->inherits + ref->inherit_offset;
    
          function = new_frame->context->prog->identifiers + ref->identifier_offset;
          new_frame->fun = DO_NOT_WARN((unsigned INT16)fun);
    
          
    #ifdef PIKE_DEBUG
    	if(Pike_interpreter.trace_level > 9)
    	{
    	  fprintf(stderr,"-- ref: inoff=%d idoff=%d flags=%d\n",
    		  ref->inherit_offset,
    		  ref->identifier_offset,
    		  ref->id_flags);
    
    	  fprintf(stderr,"-- context: prog->id=%d inlev=%d idlev=%d pi=%d po=%d so=%ld name=%s\n",
    		  new_frame->context->prog->id,
    		  new_frame->context->inherit_level,
    		  new_frame->context->identifier_level,
    		  new_frame->context->parent_identifier,
    		  new_frame->context->parent_offset,
    		  DO_NOT_WARN((long)new_frame->context->storage_offset),
    		  new_frame->context->name ? new_frame->context->name->str  : "NULL");
    	  if(Pike_interpreter.trace_level>19)
    	  {
    	    describe(new_frame->context->prog);
    	  }
    	}
    #endif
    
    
          new_frame->expendible = new_frame->locals = Pike_sp - args;
          new_frame->args = args;
          new_frame->pc = 0;
          new_frame->scope=scope;
    #ifdef PIKE_DEBUG
          if(scope && new_frame->fun == scope->fun)
          {
    	Pike_fatal("Que? A function cannot be parented by itself!\n");
          }
    #endif
          new_frame->save_sp=save_sp;
    
          add_ref(new_frame->current_object);
          add_ref(new_frame->current_program);
          if(new_frame->scope) add_ref(new_frame->scope);
    #ifdef PIKE_DEBUG
          if (Pike_fp) {
    
    	if (new_frame->locals < Pike_fp->locals) {
    	  fatal("New locals below old locals: %p < %p\n",
    		new_frame->locals, Pike_fp->locals);
    	}
    
    	if (d_flag > 1) {
    	  /* Liberal use of variables for debugger convenience. */
    	  size_t i;
    	  struct svalue *l = Pike_fp->locals;
    	  for (i = 0; l + i < Pike_sp; i++)
    	    if (TYPEOF(l[i]) != PIKE_T_FREE)
    	      debug_check_svalue (l + i);
    	}
          }
    #endif /* PIKE_DEBUG */
    
          Pike_fp = new_frame;
          
          if(Pike_interpreter.trace_level)
          {
    	dynamic_buffer save_buf;
    	char buf[50];
    
    	init_buf(&save_buf);
    	sprintf(buf, "%lx->", DO_NOT_WARN((long) PTR_TO_INT (o)));
    	my_strcat(buf);
    	if (function->name->size_shift)
    	  my_strcat ("[widestring function name]");
    	else
    	  my_strcat(function->name->str);
    	do_trace_call(args, &save_buf);
          }
          if (PIKE_FN_START_ENABLED()) {
    	/* DTrace enter probe
    	   arg0: function name
    	   arg1: object
    	*/
    	dynamic_buffer save_buf;
    	dynbuf_string obj_name;
    	struct svalue obj_sval;
    	SET_SVAL(obj_sval, T_OBJECT, 0, object, o);
    	init_buf(&save_buf);
    	safe_describe_svalue(&obj_sval, 0, NULL);
    	obj_name = complex_free_buf(&save_buf);
    	PIKE_FN_START(function->name->size_shift == 0 ?
    		      function->name->str : "[widestring fn name]",
    		      obj_name.str);
          }
    
    #ifdef PROFILING
          function->num_calls++;
          function->recur_depth++;
    #endif
      
          if(function->func.offset == -1) {
    	new_frame->num_args = args;
    	generic_error(NULL, Pike_sp, args,
    		      "Calling undefined function.\n");
          }
          
          switch(function->identifier_flags & (IDENTIFIER_TYPE_MASK|IDENTIFIER_ALIAS))
          {
          case IDENTIFIER_C_FUNCTION:
    	debug_malloc_touch(Pike_fp);
    	Pike_fp->num_args=args;
    	new_frame->current_storage = o->storage+new_frame->context->storage_offset;
    	new_frame->num_locals=args;
    	FAST_CHECK_THREADS_ON_CALL();
    	(*function->func.c_fun)(args);
    	break;
    	
          case IDENTIFIER_CONSTANT:
          {
    	struct svalue *s=&(Pike_fp->context->prog->
    			   constants[function->func.const_info.offset].sval);
    	debug_malloc_touch(Pike_fp);
    	if(TYPEOF(*s) == T_PROGRAM)
    	{
    	  struct object *tmp;
    	  FAST_CHECK_THREADS_ON_CALL();
    	  Pike_fp->num_args=args;
    	  tmp=parent_clone_object(s->u.program,
    				  o,
    				  fun,
    				  args);
    	  push_object(tmp);
    	  break;
    	}
    	/* Fall through */
          }
    
          case IDENTIFIER_VARIABLE:
          {
    	/* FIXME:
    	 * Use new-style tail-recursion instead
    	 */
    	debug_malloc_touch(Pike_fp);
    	debug_malloc_touch(o);
    	if(Pike_sp-save_sp-args<=0)
    	{
    	  /* Create an extra svalue for tail recursion style call */
    	  Pike_sp++;
    	  MEMMOVE(Pike_sp-args,Pike_sp-args-1,sizeof(struct svalue)*args);
    #ifdef DEBUG_MALLOC
    	  if (args) {
    	    int i;
    	    /* Note: touch the dead svalue too. */
    	    for (i=args+2; i > 0; i--) {
    	      dmalloc_touch_svalue(Pike_sp-i);
    	    }
    	  }
    #endif /* DEBUG_MALLOC */
    	}else{
    	  free_svalue(Pike_sp-args-1);
    	}
    	mark_free_svalue (Pike_sp - args - 1);
    	low_object_index_no_free(Pike_sp-args-1,o,fun);
    
    	/* No profiling code for calling variables - Hubbe */
    	POP_PIKE_FRAME();
    
    	if(Pike_sp-save_sp-args > (args<<2) + 32)
    	{
    	  /* The test above assures these two areas
    	   * are not overlapping
    	   */
    	  assign_svalues(save_sp, Pike_sp-args, args, BIT_MIXED);
    	  pop_n_elems(Pike_sp-save_sp-args);
    	}
    	arg1=(void *)(Pike_sp-args-1);
    	if (PIKE_FN_POPFRAME_ENABLED()) {
    	  /* DTrace adjust frame depth */
    	  PIKE_FN_POPFRAME();
    	}
    	goto apply_svalue;
          }
    
          case IDENTIFIER_PIKE_FUNCTION:
          {
    	int num_args;
    	int num_locals;
    	PIKE_OPCODE_T *pc;
    	FAST_CHECK_THREADS_ON_CALL();
    
    #ifdef PIKE_DEBUG
    	if (Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_FREE)
    	  Pike_fatal("Pike code called within gc.\n");
        new_frame->num_args = 0;
        new_frame->num_locals = 0;
    #endif
    
    	debug_malloc_touch(Pike_fp);
    	pc=new_frame->context->prog->program + function->func.offset;
    
    	new_frame->save_mark_sp=new_frame->mark_sp_base=Pike_mark_sp;
    	new_frame->pc = pc
    #ifdef ENTRY_PROLOGUE_SIZE
    	  + ENTRY_PROLOGUE_SIZE
    #endif /* ENTRY_PROLOGUE_SIZE */
    	  ;
    
    	return new_frame->pc;
          }
    
          default:
    	if (IDENTIFIER_IS_ALIAS(function->identifier_flags)) {
    	  POP_PIKE_FRAME();
    	  do {
    	    struct external_variable_context loc;
    	    loc.o = o;
    	    loc.inherit = INHERIT_FROM_INT(p, fun);
    	    loc.parent_identifier = 0;
    	    find_external_context(&loc, function->func.ext_ref.depth);
    	    fun = function->func.ext_ref.id;
    	    p = (o = loc.o)->prog;
    	    function = ID_FROM_INT(p, fun);
    	  } while (IDENTIFIER_IS_ALIAS(function->identifier_flags));
    	  if (PIKE_FN_POPFRAME_ENABLED()) {
    	    /* DTrace adjust frame depth */
    	    PIKE_FN_POPFRAME();
    	  }
    	  goto apply_low;
    	}
    #ifdef PIKE_DEBUG
    	Pike_fatal("Unknown identifier type.\n");
    #endif
          }
          POP_PIKE_FRAME();
        }