Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.

Add symmetric encryption & tests #112

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 42 additions & 9 deletions BaseApp/COD3000.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -18,99 +18,132 @@ OBJECT Codeunit 3000 DotNet_Array
DotNetArray@1000 : DotNet "'mscorlib'.System.Array";

[External]
[LineStart(2)]
PROCEDURE StringArray@108(Length@1000 : Integer);
VAR
DotNetString@1002 : DotNet "'mscorlib'.System.String";
BEGIN
DotNetArray := DotNetArray.CreateInstance(GETDOTNETTYPE(DotNetString),Length);
DotNetArray := DotNetArray.CreateInstance(GetDotNetType(DotNetString),Length);
END;

[External]
[LineStart(5)]
PROCEDURE CharArray@100(Length@1000 : Integer);
VAR
DotNetChar@1002 : DotNet "'mscorlib'.System.Char";
BEGIN
DotNetArray := DotNetArray.CreateInstance(GETDOTNETTYPE(DotNetChar),Length);
DotNetArray := DotNetArray.CreateInstance(GetDotNetType(DotNetChar),Length);
END;

[External]
[LineStart(8)]
PROCEDURE ByteArray@101(Length@1000 : Integer);
VAR
DotNetByte@1002 : DotNet "'mscorlib'.System.Byte";
BEGIN
DotNetArray := DotNetArray.CreateInstance(GETDOTNETTYPE(DotNetByte),Length);
DotNetArray := DotNetArray.CreateInstance(GetDotNetType(DotNetByte),Length);
END;

[External]
[LineStart(11)]
PROCEDURE Int32Array@102(Length@1000 : Integer);
VAR
DotNetInt32@1002 : DotNet "'mscorlib'.System.Int32";
BEGIN
DotNetArray := DotNetArray.CreateInstance(GETDOTNETTYPE(DotNetInt32),Length);
DotNetArray := DotNetArray.CreateInstance(GetDotNetType(DotNetInt32),Length);
END;

[External]
[LineStart(14)]
PROCEDURE Length@4() : Integer;
BEGIN
EXIT(DotNetArray.Length)
exit(DotNetArray.Length)
END;

[External]
[LineStart(17)]
PROCEDURE SetTextValue@103(NewValue@1001 : Text;Index@1000 : Integer);
BEGIN
DotNetArray.SetValue(NewValue,Index);
END;

[External]
[LineStart(20)]
PROCEDURE SetCharValue@109(NewValue@1001 : Char;Index@1000 : Integer);
BEGIN
DotNetArray.SetValue(NewValue,Index);
END;

[External]
[LineStart(23)]
PROCEDURE SetByteValue@104(NewValue@1001 : Byte;Index@1000 : Integer);
BEGIN
DotNetArray.SetValue(NewValue,Index);
END;

[External]
[LineStart(26)]
PROCEDURE SetIntValue@105(NewValue@1001 : Integer;Index@1000 : Integer);
BEGIN
DotNetArray.SetValue(NewValue,Index);
END;

[External]
[LineStart(29)]
PROCEDURE GetValueAsText@5(Index@1000 : Integer) : Text;
BEGIN
EXIT(DotNetArray.GetValue(Index))
exit(DotNetArray.GetValue(Index))
END;

[External]
[LineStart(32)]
PROCEDURE GetValueAsChar@110(Index@1000 : Integer) : Char;
BEGIN
EXIT(DotNetArray.GetValue(Index));
exit(DotNetArray.GetValue(Index));
END;

[External]
[LineStart(35)]
PROCEDURE GetValueAsInteger@106(Index@1000 : Integer) : Integer;
BEGIN
EXIT(DotNetArray.GetValue(Index));
exit(DotNetArray.GetValue(Index));
END;

[LineStart(38)]
PROCEDURE GetArray@2(VAR DotNetArray2@1000 : DotNet "'mscorlib'.System.Array");
BEGIN
DotNetArray2 := DotNetArray
END;

[LineStart(41)]
PROCEDURE SetArray@3(DotNetArray2@1000 : DotNet "'mscorlib'.System.Array");
BEGIN
DotNetArray := DotNetArray2
END;

[External]
[LineStart(44)]
PROCEDURE IsNull@107() : Boolean;
BEGIN
EXIT(ISNULL(DotNetArray));
exit(IsNull(DotNetArray));
END;

[External]
[LineStart(47)]
PROCEDURE Clone@1000000001(VAR DotNet_ArrayTarget@1000000000 : Codeunit DotNet_Array);
BEGIN
DotNet_ArrayTarget.SetArray(DotNetArray.Clone());
END;

[External]
[LineStart(50)]
PROCEDURE ConstrainedCopy@1000000000(SourceIndex@1000000001 : Integer;VAR DotNet_ArrayTarget@1000000002 : Codeunit DotNet_Array;TargetIndex@1000000003 : Integer;Length@1000000004 : Integer);
VAR
DotNetArrayTarget@1000000006 : DotNet "'mscorlib'.System.Array";
BEGIN
DotNet_ArrayTarget.GetArray(DotNetArrayTarget);
DotNetArray.ConstrainedCopy(DotNetArray, SourceIndex, DotNetArrayTarget, TargetIndex, Length);
DotNet_ArrayTarget.SetArray(DotNetArrayTarget);
END;

BEGIN
Expand Down
21 changes: 21 additions & 0 deletions BaseApp/COD3025.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,17 @@ OBJECT Codeunit 3025 DotNet_StreamWriter
DotNetStreamWriter := DotNetStreamWriter.StreamWriter(OutStream,DotNetEncoding);
END;

[External]
PROCEDURE StreamWriterFromDotNetStream@1000000001(VAR DotNet_Stream@1000 : Codeunit 3034;DotNet_Encoding@1001 : Codeunit 3026);
VAR
DotNetEncoding@1002 : DotNet "'mscorlib'.System.Text.Encoding";
DotNetStream@1000000000 : DotNet "'mscorlib'.System.IO.Stream";
BEGIN
DotNet_Stream.GetStream(DotNetStream);
DotNet_Encoding.GetEncoding(DotNetEncoding);
DotNetStreamWriter := DotNetStreamWriter.StreamWriter(DotNetStream,DotNetEncoding);
END;

[External]
PROCEDURE StreamWriterWithDefaultEncoding@7(VAR OutStream@1000 : OutStream);
BEGIN
Expand All @@ -62,6 +73,16 @@ OBJECT Codeunit 3025 DotNet_StreamWriter
DotNetStreamWriter.Dispose;
END;

PROCEDURE GetStreamWriter@1000000000(VAR DotNetStreamWriter2@1000000000 : DotNet "'mscorlib'.System.IO.StreamWriter");
BEGIN
DotNetStreamWriter2 := DotNetStreamWriter;
END;

PROCEDURE SetStreamWriter@1000000002(VAR DotNetStreamWriter2@1000000000 : DotNet "'mscorlib'.System.IO.StreamWriter");
BEGIN
DotNetStreamWriter := DotNetStreamWriter2;
END;

BEGIN
END.
}
Expand Down
22 changes: 22 additions & 0 deletions BaseApp/COD3027.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ OBJECT Codeunit 3027 DotNet_StreamReader
DotNetStreamReader := DotNetStreamReader.StreamReader(InputStream,DotNetEncoding);
END;

[External]
PROCEDURE StreamReaderFromDotNetStream@1000000000(VAR DotNet_Stream@1000 : Codeunit 3034;DotNet_Encoding@1001 : Codeunit 3026);
VAR
DotNetEncoding@1002 : DotNet "'mscorlib'.System.Text.Encoding";
DotNetStream@1000000000 : DotNet "'mscorlib'.System.IO.Stream";
BEGIN
DotNet_Stream.GetStream(DotNetStream);
DotNet_Encoding.GetEncoding(DotNetEncoding);

DotNetStreamReader := DotNetStreamReader.StreamReader(DotNetStream,DotNetEncoding);
END;

[External]
PROCEDURE StreamReaderDetectEncoding@2(VAR InputStream@1000 : InStream;DetectEncodingFromByteOrderMarks@1001 : Boolean);
BEGIN
Expand Down Expand Up @@ -68,6 +80,16 @@ OBJECT Codeunit 3027 DotNet_StreamReader
EXIT(DotNetStreamReader.ReadToEnd);
END;

PROCEDURE GetStreamReader@1000000001(VAR DotNetStreamReader2@1000000000 : DotNet "'mscorlib'.System.IO.StreamReader");
BEGIN
DotNetStreamReader2 := DotNetStreamReader;
END;

PROCEDURE SetStreamReader@1000000002(VAR DotNetStreamReader2@1000000000 : DotNet "'mscorlib'.System.IO.StreamReader");
BEGIN
DotNetStreamReader := DotNetStreamReader2;
END;

BEGIN
END.
}
Expand Down
181 changes: 181 additions & 0 deletions BaseApp/COD50010.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
OBJECT Codeunit 50010 DotNet_SymmetricAlgorithm
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;

}
CODE
{
VAR
DotNetSymmetricAlgorithm@1000000000 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Security.Cryptography.SymmetricAlgorithm";
E_INVALID_ALGORITHM@1000000001 : TextConst 'ENU=Invalid Algorithm';

[External]
PROCEDURE GetBlockSize@1000000000() : Integer;
BEGIN
EXIT(DotNetSymmetricAlgorithm.BlockSize);
END;

[External]
PROCEDURE SetBlockSize@1000000027(BlockSize@1000000000 : Integer);
BEGIN
DotNetSymmetricAlgorithm.BlockSize := BlockSize;
END;

[External]
PROCEDURE GetFeedbackSize@1000000007() : Integer;
BEGIN
EXIT(DotNetSymmetricAlgorithm.FeedbackSize);
END;

[External]
PROCEDURE SetFeedbackSize@1000000006(FeedbackSize@1000000000 : Integer);
BEGIN
DotNetSymmetricAlgorithm.FeedbackSize := FeedbackSize;
END;

[External]
PROCEDURE GetIV@1000000001(VAR DotNet_Array@1000000000 : Codeunit 3000);
VAR
DotNetArray@1000000001 : DotNet "'mscorlib'.System.Array";
BEGIN
DotNet_Array.GetArray(DotNetArray);
DotNetArray := DotNetSymmetricAlgorithm.IV.Clone();
DotNet_Array.SetArray(DotNetArray);
END;

[External]
PROCEDURE SetIV@1000000023(VAR DotNet_Array@1000000000 : Codeunit 3000);
VAR
DotNetArray@1000000001 : DotNet "'mscorlib'.System.Array";
BEGIN
DotNet_Array.GetArray(DotNetArray);
DotNetSymmetricAlgorithm.IV := DotNetArray.Clone();
END;

[External]
PROCEDURE GetKey@1000000002(VAR DotNet_Array@1000000000 : Codeunit 3000);
VAR
DotNetArray@1000000001 : DotNet "'mscorlib'.System.Array";
BEGIN
DotNet_Array.GetArray(DotNetArray);
DotNetArray := DotNetSymmetricAlgorithm.Key.Clone();
DotNet_Array.SetArray(DotNetArray);
END;

[External]
PROCEDURE SetKey@1000000021(VAR DotNet_Array@1000000000 : Codeunit 3000);
VAR
DotNetArray@1000000001 : DotNet "'mscorlib'.System.Array";
BEGIN
DotNet_Array.GetArray(DotNetArray);
DotNetSymmetricAlgorithm.Key := DotNetArray.Clone();
END;

[External]
PROCEDURE GetKeySize@1000000003() : Integer;
BEGIN
EXIT(DotNetSymmetricAlgorithm.KeySize);
END;

[External]
PROCEDURE SetKeySize@1000000018(KeySize@1000000000 : Integer);
BEGIN
DotNetSymmetricAlgorithm.KeySize := KeySize;
END;

[External]
PROCEDURE GetMode@1000000004(VAR DotNet_CipherMode@1000000000 : Codeunit 50015) : Integer;
VAR
DotNetCipherMode@1000000001 : DotNet "'mscorlib'.System.Security.Cryptography.CipherMode";
BEGIN
DotNetCipherMode := DotNetSymmetricAlgorithm.Mode;
DotNet_CipherMode.SetCipherMode(DotNetCipherMode);
EXIT(DotNetCipherMode);
END;

[External]
PROCEDURE SetMode@1000000020(VAR DotNet_CipherMode@1000000000 : Codeunit 50015);
VAR
DotNetCipherMode@1000000001 : DotNet "'mscorlib'.System.Security.Cryptography.CipherMode";
BEGIN
DotNet_CipherMode.GetCipherMode(DotNetCipherMode);
DotNetSymmetricAlgorithm.Mode := DotNetCipherMode;
END;

[External]
PROCEDURE GetPadding@1000000005(VAR DotNet_PaddingMode@1000000001 : Codeunit 50016) : Integer;
VAR
DotNetPaddingMode@1000000000 : DotNet "'mscorlib'.System.Security.Cryptography.PaddingMode";
BEGIN
DotNetPaddingMode := DotNetSymmetricAlgorithm.Padding;
DotNet_PaddingMode.SetPaddingMode(DotNetPaddingMode);
EXIT(DotNetPaddingMode);
END;

[External]
PROCEDURE SetPadding@1000000019(VAR DotNet_PaddingMode@1000000002 : Codeunit 50016);
VAR
DotNetPaddingMode@1000000001 : DotNet "'mscorlib'.System.Security.Cryptography.PaddingMode";
BEGIN
DotNet_PaddingMode.GetPaddingMode(DotNetPaddingMode);
DotNetSymmetricAlgorithm.Padding := DotNetPaddingMode;
END;

[External]
PROCEDURE Create@1000000028(Algorithm@1000000000 : Text);
BEGIN
IF NOT (UPPERCASE(Algorithm) IN ['AES','DES','RC2','RIJNDAEL','TRIPLEDES']) THEN
ERROR(E_INVALID_ALGORITHM);
Dispose();
DotNetSymmetricAlgorithm := DotNetSymmetricAlgorithm.Create(Algorithm);
END;

[External]
PROCEDURE Dispose@1000000008();
BEGIN
IF NOT ISNULL(DotNetSymmetricAlgorithm) THEN
DotNetSymmetricAlgorithm.Dispose();
END;

[External]
PROCEDURE CreateEncryptor@1000000009(VAR DotNet_ICryptoTransform@1000000000 : Codeunit 50013);
VAR
DotNetICryptoTransform@1000000001 : DotNet "'mscorlib'.System.Security.Cryptography.ICryptoTransform";
BEGIN
DotNetICryptoTransform := DotNetSymmetricAlgorithm.CreateEncryptor();
DotNet_ICryptoTransform.SetICryptoTransform(DotNetICryptoTransform);
END;

[External]
PROCEDURE CreateDecryptor@1000000015(VAR DotNet_ICryptoTransform@1000000000 : Codeunit 50013);
VAR
DotNetICryptoTransform@1000000001 : DotNet "'mscorlib'.System.Security.Cryptography.ICryptoTransform";
BEGIN
DotNetICryptoTransform := DotNetSymmetricAlgorithm.CreateDecryptor();
DotNet_ICryptoTransform.SetICryptoTransform(DotNetICryptoTransform);
END;

PROCEDURE GetSymmetricAlgorithm@1000000013(VAR DotNetSymmetricAlgorithm2@1000000000 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Security.Cryptography.SymmetricAlgorithm");
BEGIN
DotNetSymmetricAlgorithm2 := DotNetSymmetricAlgorithm;
END;

PROCEDURE SetSymmetricAlgorithm@1000000014(VAR DotNetSymmetricAlgorithm2@1000000000 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Security.Cryptography.SymmetricAlgorithm");
BEGIN
DotNetSymmetricAlgorithm := DotNetSymmetricAlgorithm2;
END;

BEGIN
END.
}
}

Loading