Skip to content
Snippets Groups Projects
Select Git revision
  • ff68c47c0c47d84f1b5ca6886edb7659af6ebd95
  • master default
  • wip-slh-dsa-sha2-128s
  • master-updates
  • release-3.10-fixes
  • getopt-prototype
  • fix-bcrypt-warning
  • refactor-hmac
  • wip-use-alignas
  • trim-sha3-context
  • fix-gitlab-ci
  • check-fat-emulate
  • delete-digest_func-size
  • slh-dsa-shake-128f-nettle
  • slh-dsa-shake-128s-nettle
  • slh-dsa-shake-128s
  • delete-openpgp
  • ppc64-sha512
  • delete-md5-compat
  • cleanup-hmac-tests
  • ppc64-sha256
  • nettle_3.10.2_release_20250626
  • nettle_3.10.1_release_20241230
  • nettle_3.10_release_20240616
  • nettle_3.10rc2
  • nettle_3.10rc1
  • nettle_3.9.1_release_20230601
  • nettle_3.9_release_20230514
  • nettle_3.8.1_release_20220727
  • nettle_3.8_release_20220602
  • nettle_3.7.3_release_20210606
  • nettle_3.7.2_release_20210321
  • nettle_3.7.1_release_20210217
  • nettle_3.7_release_20210104
  • nettle_3.7rc1
  • 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
41 results

rsa-sha256-sign-tr.c

Blame
  • arcfour.c 1.13 KiB
    /* arcfour.c
     *
     * This implements the Arcfour stream cipher with 128 bit keys. 
     *
     * The Arcfour cipher is believed to be compatible with the RC4 cipher. 
     * RC4 is a registered trademark of RSA Data Security Inc.
     *   
     */
    
    #include "arcfour.h"
    
    #ifdef RCSID
    RCSID("$Id$");
    #endif
    
    #define SWAP(a,b) do { int _t = a; a = b; b = _t; } while(0)
    
    void arcfour_set_key(struct arcfour_ctx *ctx, const UINT8 *key, UINT32 len)
    {
      register UINT8 j; /* Depends on the eight-bitness of these variables. */
      unsigned i;
      UINT32 k;
    
      /* Initialize context */
      i = 0;
      do ctx->S[i] = i; while (++i < 256);
    
      /* Expand key */
      i = j = k = 0;
      do {
        j += ctx->S[i] + key[k];
        SWAP(ctx->S[i], ctx->S[j]);
        k = (k+1) % len; /* Repeat key if needed */
      } while(++i < 256);
      
      ctx->i = ctx->j = 0;
    }
    
    void arcfour_crypt(struct arcfour_ctx *ctx, UINT8 *dest,
    		   const UINT8 *src, UINT32 len)
    {
      register UINT8 i, j;
    
      i = ctx->i; j = ctx->j;
      while(len--)
        {
          i++; i &= 0xff;
          j += ctx->S[i]; j &= 0xff;
          SWAP(ctx->S[i], ctx->S[j]);
          *dest++ = *src++ ^ ctx->S[ (ctx->S[i] + ctx->S[j]) & 0xff ];
        }
      ctx->i = i; ctx->j = j;
    }