Changeset 1195


Ignore:
Timestamp:
Feb 26, 2010, 1:57:31 AM (12 years ago)
Author:
Sven Rech
Message:

removed unsafe code

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/AES/AES.cs

    r1194 r1195  
    523523                return null;
    524524
    525             unsafe
    526             {
    527                 fixed (byte* inp = ciphertext)
    528                 fixed (byte* akey = key)
    529                 fixed (byte* iv = IV)
    530                 {
    531                     return NativeCryptography.Crypto.decryptAES(inp, akey, iv, bits, size, ((AESSettings)plugin.Settings).Mode);
    532                 }
    533             }
     525            return NativeCryptography.Crypto.decryptAES(ciphertext, key, IV, bits, size, ((AESSettings)plugin.Settings).Mode);
    534526        }
    535527
  • trunk/CrypPlugins/AES/AES.csproj

    r1193 r1195  
    2424    <ErrorReport>prompt</ErrorReport>
    2525    <WarningLevel>4</WarningLevel>
    26     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     26    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
    2727  </PropertyGroup>
    2828  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     
    3333    <ErrorReport>prompt</ErrorReport>
    3434    <WarningLevel>4</WarningLevel>
    35     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     35    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
    3636  </PropertyGroup>
    3737  <ItemGroup>
  • trunk/CrypPlugins/DES/DES.cs

    r1194 r1195  
    556556            int size = bytesToUse > ciphertext.Length ? ciphertext.Length : bytesToUse;
    557557
    558             unsafe
    559             {
    560                 fixed (byte* inp = ciphertext)
    561                 fixed (byte* akey = key)
    562                 fixed (byte* iv = IV)
    563                 {
    564                     return NativeCryptography.Crypto.decryptDES(inp, akey, iv, size, ((DESSettings)plugin.Settings).Mode);
    565                 }
    566             }
     558            return NativeCryptography.Crypto.decryptDES(ciphertext, key, IV, size, ((DESSettings)plugin.Settings).Mode);
    567559        }
    568560
  • trunk/CrypPlugins/DES/DES.csproj

    r1193 r1195  
    2424    <ErrorReport>prompt</ErrorReport>
    2525    <WarningLevel>4</WarningLevel>
    26     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     26    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
    2727  </PropertyGroup>
    2828  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     
    3333    <ErrorReport>prompt</ErrorReport>
    3434    <WarningLevel>4</WarningLevel>
    35     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     35    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
    3636  </PropertyGroup>
    3737  <ItemGroup>
  • trunk/NativeCryptography/NativeCryptography.h

    r1194 r1195  
    2626
    2727        public:
    28                 static array<unsigned char>^ decryptAES(unsigned char* input, unsigned char* key, unsigned char* IV, const int bits, const int length, const int mode)
     28                static array<unsigned char>^ decryptAES(array<unsigned char>^ Input, array<unsigned char>^ Key, array<unsigned char>^ IV, const int bits, const int length, const int mode)
    2929                {
    3030                        const int blockSize = 16;
     
    3333                                numBlocks++;
    3434
    35                         unsigned char* outp = (unsigned char*)malloc(numBlocks*blockSize);
     35                        pin_ptr<unsigned char> input = &Input[0];
     36                        pin_ptr<unsigned char> key = &Key[0];
     37                        pin_ptr<unsigned char> iv = &IV[0];
     38
     39                        array<unsigned char>^ output = gcnew array<unsigned char>(length);
     40                        pin_ptr<unsigned char> outp = &output[0];       
    3641
    3742                        AES_KEY aeskey;                 
     
    4045                                AES_set_encrypt_key(key, bits, &aeskey);
    4146
    42                                 AES_encrypt(IV, outp, &aeskey);
     47                                AES_encrypt(iv, outp, &aeskey);
    4348                                xorBlockAES((int*)(outp), (int*)(input));
    4449
     
    5459                                AES_decrypt(input, outp, &aeskey);
    5560                                if (mode == 1)          //CBC
    56                                         xorBlockAES((int*)(outp), (int*)IV);   
     61                                        xorBlockAES((int*)(outp), (int*)iv);   
    5762                                for (int c = 1; c < numBlocks; c++)
    5863                                {
     
    6368                        }
    6469
    65                         array<unsigned char>^ output = gcnew array<unsigned char>(length);
    66                         for (int c = 0; c < length; c++)
    67                                 output[c] = outp[c];
    68 
    6970                        return output;
    7071                }
    7172
    72                 static array<unsigned char>^ decryptDES(unsigned char* input, unsigned char* key, unsigned char* IV, const int length, const int mode)
     73                static array<unsigned char>^ decryptDES(array<unsigned char>^ Input, array<unsigned char>^ Key, array<unsigned char>^ IV, const int length, const int mode)
    7374                {
    7475                        const int blockSize = 8;
     
    7778                                numBlocks++;
    7879
    79                         unsigned char* outp = (unsigned char*)malloc(numBlocks*blockSize);
     80                        pin_ptr<unsigned char> input = &Input[0];
     81                        pin_ptr<unsigned char> key = &Key[0];
     82                        pin_ptr<unsigned char> iv = &IV[0];
     83
     84                        array<unsigned char>^ output = gcnew array<unsigned char>(length);
     85                        pin_ptr<unsigned char> outp = &output[0];                       
    8086
    8187                        DES_key_schedule deskey;
     
    8490                        if (mode == 2)  //CFB
    8591                        {                               
    86                                 DES_ecb_encrypt((const_DES_cblock*)IV, (const_DES_cblock*)outp, &deskey, DES_ENCRYPT);
     92                                DES_ecb_encrypt((const_DES_cblock*)iv, (const_DES_cblock*)outp, &deskey, DES_ENCRYPT);
    8793                                xorBlockAES((int*)(outp), (int*)(input));
    8894
     
    97103                                DES_ecb_encrypt((const_DES_cblock*)input, (const_DES_cblock*)outp, &deskey, DES_DECRYPT);
    98104                                if (mode == 1)          //CBC
    99                                         xorBlockDES((int*)(outp), (int*)IV);   
     105                                        xorBlockDES((int*)(outp), (int*)iv);   
    100106                                for (int c = 1; c < numBlocks; c++)
    101107                                {
     
    106112                        }
    107113
    108                         array<unsigned char>^ output = gcnew array<unsigned char>(length);
    109                         for (int c = 0; c < length; c++)
    110                                 output[c] = outp[c];
    111 
    112114                        return output;
    113115                }
Note: See TracChangeset for help on using the changeset viewer.