Skip to content
Snippets Groups Projects
Select Git revision
  • c43e8cadd02224b249156fd2ff3e44e8f71c7b88
  • master default protected
  • 9.0
  • 8.0
  • nt-tools
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.2020
  • v8.0.2018
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
41 results

interpret.h

Blame
    • Per Hedbor's avatar
      8a2693de
      Merged the const-marked pike_interpreter_pointer branch. · 8a2693de
      Per Hedbor authored
      We now lie to the compiler about the const:ness of the
      Pike_interpreter_pointer variable.
      
      Most code now pretends that that variable is constant (it's not,
      really, it's constant /per thread/, but not globally, however, the
      only code that writes to it and expects anything but the same value
      each time it is read is in thread.c)
      
      This saves a lot of code when using the stack multiple times in a
      function, and should be safe enough, albeit somewhat unconventional.
      
      If nothing else the binary size shrunk by about 5%.
      
      This _will_ cause issues if pike is compiled with link-time
      optimization. A better solution would be an actual thread local
      pointer, which is const marked. Or, perhaps the best solution, having
      the whole pike_interpreter_struct structure be thread local. At least
      on x86_64 accessing thread-local data is just about as fast as
      accessing global data.
      8a2693de
      History
      Merged the const-marked pike_interpreter_pointer branch.
      Per Hedbor authored
      We now lie to the compiler about the const:ness of the
      Pike_interpreter_pointer variable.
      
      Most code now pretends that that variable is constant (it's not,
      really, it's constant /per thread/, but not globally, however, the
      only code that writes to it and expects anything but the same value
      each time it is read is in thread.c)
      
      This saves a lot of code when using the stack multiple times in a
      function, and should be safe enough, albeit somewhat unconventional.
      
      If nothing else the binary size shrunk by about 5%.
      
      This _will_ cause issues if pike is compiled with link-time
      optimization. A better solution would be an actual thread local
      pointer, which is const marked. Or, perhaps the best solution, having
      the whole pike_interpreter_struct structure be thread local. At least
      on x86_64 accessing thread-local data is just about as fast as
      accessing global data.
    des.h 2.88 KiB
    /* des.h
     *
     * The des block cipher. And triple des.
     */
    
    /* nettle, low-level cryptographics library
     *
     * Copyright (C) 1992, 2001, Dana L. How, Niels Möller
     * 
     * The nettle library is free software; you can redistribute it and/or modify
     * it under the terms of the GNU Lesser General Public License as published by
     * the Free Software Foundation; either version 2.1 of the License, or (at your
     * option) any later version.
     * 
     * The nettle library is distributed in the hope that it will be useful, but
     * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
     * License for more details.
     * 
     * You should have received a copy of the GNU Lesser General Public License
     * along with the nettle library; see the file COPYING.LIB.  If not, write to
     * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
     * MA 02111-1307, USA.
     */
    
    /*
     *	des - fast & portable DES encryption & decryption.
     *	Copyright (C) 1992  Dana L. How
     *	Please see the file `../lib/descore.README' for the complete copyright
     *	notice.
     *
     * Slightly edited by Niels Möller, 1997
     */
    
    #ifndef NETTLE_DES_H_INCLUDED
    #define NETTLE_DES_H_INCLUDED
    
    #include "nettle-types.h"
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    /* Namespace mangling */
    #define des_set_key nettle_des_set_key
    #define des_encrypt nettle_des_encrypt
    #define des_decrypt nettle_des_decrypt
    #define des_fix_parity nettle_des_fix_parity
    #define des3_set_key nettle_des3_set_key
    #define des3_encrypt nettle_des3_encrypt
    #define des3_decrypt nettle_des3_decrypt
    
    #define DES_KEY_SIZE 8
    #define DES_BLOCK_SIZE 8
    
    /* Expanded key length */
    #define _DES_KEY_LENGTH 32
    
    enum des_error { DES_OK, DES_BAD_PARITY, DES_WEAK_KEY };
    
    struct des_ctx
    {
      uint32_t key[_DES_KEY_LENGTH];
      enum des_error status;
    };
    
    /* On success, returns 1 and sets ctx->status to DES_OK (zero). On
     * error, returns 0 and sets ctx->status accordingly. */
    int
    des_set_key(struct des_ctx *ctx, const uint8_t *key);
    
    void
    des_encrypt(const struct des_ctx *ctx,
    	    unsigned length, uint8_t *dst,
    	    const uint8_t *src);
    void
    des_decrypt(const struct des_ctx *ctx,
    	    unsigned length, uint8_t *dst,
    	    const uint8_t *src);
    
    void
    des_fix_parity(unsigned length, uint8_t *dst,
    	       const uint8_t *src);
    
    #define DES3_KEY_SIZE 24
    #define DES3_BLOCK_SIZE DES_BLOCK_SIZE
    
    struct des3_ctx
    {
      struct des_ctx des[3];
      enum des_error status;
    };
    
    
    /* On success, returns 1 and sets ctx->status to DES_OK (zero). On
     * error, returns 0 and sets ctx->status accordingly. */
    int
    des3_set_key(struct des3_ctx *ctx, const uint8_t *key);
    
    void
    des3_encrypt(const struct des3_ctx *ctx,
    	     unsigned length, uint8_t *dst,
    	     const uint8_t *src);
    void
    des3_decrypt(const struct des3_ctx *ctx,
    	     unsigned length, uint8_t *dst,
    	     const uint8_t *src);
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* NETTLE_DES_H_INCLUDED */