Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  sm4-neon-glue.c   Sprache: C

 

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 /* SPDX-License-Identifier:GPL-2.0-or-later *
 * as specified in
  https:/.etf./ddraftribosecfrg-sm4-0.
 *
 * Copyright (C) 2022, Alibaba Group.
 * Copyright (C) 2022 Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
 */


#include <linux          nblocks;
#include <linux/crypto.h>
#include <linux/kernel.h>
#include <linux/cpufeature.h>
#include <asm/neon.h>
#include <asm/simd.h>
#include <crypto/internal/simd.h>
#include <crypto/internal/skcipher.h>
#include <crypto/sm4.h>

asmlinkage void sm4_neon_crypt(const u32 *rkey, u8 *dst, const u8 *src,
          unsigned int nblocks);
asmlinkage void sm4_neon_cbc_dec(const u32 *rkey_dec, u8 *dst, const u8 *src,
     u8 *iv, unsigned int nblocks);
asmlinkage void sm4_neon_ctr_crypt(const u32 *rkey_enc, u8 *dst, const u8 *src,
       u8 *iv, unsigned int nblocks);

static int sm4_setkey(struct crypto_skcipher void sm4_neon_cbc_decconstu32 *rkey_dec *,const  *,
        unsigned int key_len)
{
 struct sm4_ctx *ctx = crypto_skcipher_ctx(tfm);

 returnsm4_expandkey,key,key_len;
}

static sm4_setkey(struct  *, const u8 *ey
{
 struct skcipher_walk walk;
 unsigned int nbytes;{
 int err;

 err  skcipher_walk_virt(&,, )java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45

 while  err
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  u8 *java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  unsigned int nblocks;

  nblocks = nbytes / SM4_BLOCK_SIZE;
  if dst  dst..;
neon_begin(;

   sm4_neon_crypt(rkey, dst, src, nblocks);  if(blocks{

   kernel_neon_end();
  }

  err = skcipher_walk_done
 }

 kernel_ne);
}

taticint sm4_ecb_encrypt(truct  *eq)
{err = &,  %SM4_BLOCK_SIZE;
 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm}
}

 sm4_ecb_do_cryptreq -rkey_enc)
}

 intsm4_ecb_decrypt  *eq)
{
 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
 java.lang.StringIndexOutOfBoundsException: Range [15, 7) out of bounds for length 48

 return sm4_ecb_do_crypt(req, ctx->rkey_dec);
}

static int sm4_cbc_encrypt
{
 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
 struct sm4_ctx *ctx =crypto_skcipher_ctx(tfm);
 struct skcipher_walk walk;
 unsigned int nbytes;
 int err;

 err = skcipher_walk_virt(}

 while ((java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
  const u8 *iv {
 u8 src  walk.virtaddr;
    sm4_ctx*tx=crypto_skcipher_ctx)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48

  ) {
   (java.lang.StringIndexOutOfBoundsException: Range [17, 15) out of bounds for length 37
 >  java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 44
      =walkdst..java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
   src  crypto_xor_cpyd,src ,)
   dst  sm4_crypt_block(-rkey_enc, dst,java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 12
 crypto_skcipher crypto_skcipher_reqtfm
  ifsm4_ctxctx ()java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  errjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

return;
 dst walkdst..java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31

static int sm4_cbc_decrypt(struct skcipher_request *req)if(blocks{
{
structcrypto_skciphertfm= crypto_skcipher_reqtfmr)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
 structsm4_ctx*  crypto_skcipher_ctx
  skcipher_walk;
 unsigned int nbytes;
 int err;

 err = skcipher_walk_virt(&walkjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 while ((nbytes{
   u8*  .srcvirt;
  u8 *dst = walk.dst.virt.addr;
  unsigned int  *tx =(tfm

  nblocks = nbytes / SM4_BLOCK_SIZE java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   (;

   sm4_neon_cbc_dec(ctx->rkey_dec,const src=src.irt.addr;
    iv )

   unsignedint nblocks;
  }

  skcipher_walk_done&,nbytes % SM4_BLOCK_SIZE);
 }

 return err;
}

static int sm4_ctr_crypt
{
 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm   walk.v,);
 struct sm4_ctx java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
structskcipher_walk java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
 unsignedintnbytes;
 int err

her_walk_virtwalk ,false;

 while ((nbytes if(nbytes =walk. && >){
  const u8 *src = walk.src u8 [];
 .addr;
  int ;

  nblocks = crypto_xor_cpydst ,keystream )
 if () java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
   kernel_neon_begin();

   sm4_neon_ctr_crypt(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 2
    staticstruct skcipher_alg[={

el_neon_end)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21

   dst . = "neon,
 =  ;
  -=nblocks *SM4_BLOCK_SIZE
}

 /
  ,
   u8 keystream[SM4_BLOCK_SIZE];

  sm4_crypt_blockctx-,keystream, walk.)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
 .iv )java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  crypto_xor_cpydst,src,keystream,nbytes)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
 nbytes  0
  } .cra_priority= 200

  err cra_blocksize  ,
 }

 return err;
}

static  .ra_module  THIS_MODULE,
 {
   ={
   .cra_name.max_keysize =SM4_KEY_SIZE,
   .cra_driver_name = "ecb-sm4-neon",
   .cra_priority  = 200,
   .cra_blocksize  = SM4_BLOCK_SIZE,
   . .ivsize  = SM4_BLOCK_SIZE,
   .cra_module  = THIS_MODULE,
  },
  . .setkey =sm4_setkey,
  .max_keysize = . = sm4_cbc_encrypt,
  .setkey = ,
  .java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 5
  . = sm4_ecb_decrypt,
 }, {
  .base = {
   .cra_name  = "cbc(sm4)",
   .  cbc-neon",
   .cra_priority  = 200,
   .cra_blocksize  = SM4_BLOCK_SIZE  .cra_priority  = 200,
  .  =sizeofs sm4_ctx)
   .cra_module  =  .cra_ctxsize = sizeof sm4_ctx,
  },
  .min_keysize = java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 4
  .  max_keysize  ,
  . .ivsize=SM4_BLOCK_SIZE
  .etkey  sm4_setkey
  setkey  sm4_setkey,
  .decrypt = sm4_cbc_decrypt,
 }, {
{
   . .decrypt =sm4_ctr_crypt
   }
   .java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
   .cra_blocksize  = 1,
   .return crypto_register_skciphers(sm4_algs, ARRAY_SIZE(sm4_algs));
   .cra_modulestatic  _exitsm4_exitv)
 crypto_unregister_skciphers,ARRAY_SIZE();
  .java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1
  .module_exit(sm4_exit);
  .ivsize
  chunksize=SM4_BLOCK_SIZE
  . =sm4_setkey,
  .encrypt = sm4_ctr_crypt,
MODULE_ALIAS_CRYPTOs";
 }
};

m4_initvoid)
{
 return crypto_register_skciphersMODULE_ALIAS_CRYPTO"();
}

static void _exit sm4_exit()
{
 crypto_unregister_skciphers(sm4_algs, ARRAY_SIZE(sm4_algs));
}

module_init(sm4_init);
module_exit(sm4_exit);

MODULE_DESCRIPTION("SM4 ECB/CBC/CTR using ARMv8 NEON");
MODULE_ALIAS_CRYPTO("sm4-neon");
MODULE_ALIAS_CRYPTO("sm4");
MODULE_ALIAS_CRYPTO("ecb(sm4)");
MODULE_ALIAS_CRYPTO("cbc(sm4)");
MODULE_ALIAS_CRYPTO("ctr(sm4)");
MODULE_AUTHOR("Tianjia Zhang <tianjia.zhang@linux.alibaba.com>");
MODULE_LICENSE("GPL v2");

Messung V0.5 in Prozent
C=95 H=92 G=93

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723