Attribute VB_Name = "test_cipher_comp" Option Explicit ' Test code to demonstrate changes with CIPHER functions in CryptoSys PKI v11.1 ' $Id: test_cipher_comp.bas $ ' $Date: 2016/05/28 09:37:00 $ ' Copyright (C) 2016 David Ireland, DI Management Services Pty Ltd <www.di-mgt.com.au> Public Sub test_CIPHER_Bytes_comp() Dim key() As Byte Dim iv() As Byte Dim pt() As Byte Dim ct() As Byte Dim ptlen As Long Dim ctlen As Long Dim keylen As Long Dim ivlen As Long Dim r As Long ' Setup input data key = cnvBytesFromHexStr("0123456789abcdeffedcba987654321089abcdef01234567") iv = cnvBytesFromHexStr("1234567890abcdef") ' PT = "Now is the time for all good men" pt = cnvBytesFromHexStr("4E6F77206973207468652074696D6520666F7220616C6C20676F6F64206D656E") ptlen = UBound(pt) + 1 Debug.Print "ptlen=" & ptlen keylen = 24 ivlen = 8 ctlen = ptlen ReDim ct(ctlen - 1) ' @deprecated r = TDEA_BytesMode(ct(0), pt(0), ptlen, key(0), ENCRYPT, "CBC", iv(0)) Debug.Assert (r = 0) Debug.Print "CT=" & cnvHexStrFromBytes(ct) ' @deprecated r = CIPHER_Bytes(ENCRYPT, ct(0), pt(0), ptlen, key(0), iv(0), "tdea/cbc", 0) Debug.Assert (r = 0) Debug.Print "CT=" & cnvHexStrFromBytes(ct) ' @deprecated ctlen = CIPHER_EncryptBytesPad(ct(0), ctlen, pt(0), ptlen, key(0), iv(0), "tdea/cbc/nopad", 0) Debug.Assert (ctlen > 0) Debug.Print "CT=" & cnvHexStrFromBytes(ct) ' RECOMMENDED ctlen = CIPHER_EncryptBytes2(ct(0), ctlen, pt(0), ptlen, key(0), keylen, iv(0), ivlen, "tdea/cbc/nopad", 0) Debug.Assert (ctlen > 0) Debug.Print "CT=" & cnvHexStrFromBytes(ct) End Sub Public Sub test_CIPHER_File_comp() Dim key() As Byte Dim iv() As Byte Dim keylen As Long Dim ivlen As Long Dim r As Long Dim filein As String Dim fileout As String Dim b() As Byte ' Setup input data key = cnvBytesFromHexStr("0123456789abcdeffedcba987654321089abcdef01234567") iv = cnvBytesFromHexStr("1234567890abcdef") keylen = 24 ivlen = 8 filein = "abc.txt" fileout = "abc-enc.txt" b = ReadFileIntoBytes(filein) Debug.Print "PT=" & cnvHexStrFromBytes(b) ' @deprecated r = TDEA_File(fileout, filein, key(0), ENCRYPT, "CBC", iv(0)) Debug.Assert (r = 0) b = ReadFileIntoBytes(fileout) Debug.Print "CT=" & cnvHexStrFromBytes(b) ' @deprecated r = CIPHER_File(ENCRYPT, fileout, filein, key(0), iv(0), "tdea/cbc", 0) Debug.Assert (r = 0) b = ReadFileIntoBytes(fileout) Debug.Print "CT=" & cnvHexStrFromBytes(b) ' RECOMMENDED r = CIPHER_FileEncrypt(fileout, filein, key(0), keylen, iv(0), ivlen, "tdea/cbc", 0) Debug.Assert (r = 0) b = ReadFileIntoBytes(fileout) Debug.Print "CT=" & cnvHexStrFromBytes(b) ' Now use AES-128: Setup new key and IV and change length variables to match key = cnvBytesFromHexStr("0123456789ABCDEFF0E1D2C3B4A59687") iv = cnvBytesFromHexStr("FEDCBA9876543210FEDCBA9876543210") keylen = 16 ivlen = 16 r = CIPHER_FileEncrypt(fileout, filein, key(0), keylen, iv(0), ivlen, "aes128/cbc/OneAndZeroes", PKI_IV_PREFIX) Debug.Assert (r = 0) b = ReadFileIntoBytes(fileout) Debug.Print "CT=" & cnvHexStrFromBytes(b) End Sub Private Function ReadFileIntoBytes(sFilePath As String) As Variant ' Reads file (if it exists) into a byte array. Dim abIn() As Byte Dim hFile As Integer ' Check if file exists If Len(Dir(sFilePath)) = 0 Then Exit Function End If hFile = FreeFile Open sFilePath For Binary Access Read As #hFile abIn = InputB(LOF(hFile), #hFile) Close #hFile ReadFileIntoBytes = abIn End Function