Пример #1
0
func TestEncrypt(t *testing.T) {
	if utils.IsInVexor() {
		fmt.Println("No GOST OpenSSL in Vexor")
		return
	}

	defer cleanup()
	createTestFile(t)

	testFileIn := filepath.Join(testPath, testFile)
	testFileOut := testFileIn + ".enc"

	signer := NewGostSignerEncryptor(getSSLParams())
	if err := signer.Encrypt(testFileIn, testFileOut); err != nil {
		t.Fatalf("Ошибка SignDER(): %v", err)
	}

	// проверяем только что подписанный файл существует и его получается прочитать
	if !utils.FileExists(testFileOut) {
		t.Errorf("Файл %s должен быть распакован, но не найден.\n", testFileOut)
	}
	if err := readData(&decryptedData); err != nil {
		t.Error(err)
	}

	// todo хорошо бы проверить расшифровку
}
Пример #2
0
func TestCompress(t *testing.T) {
	defer func() {
		os.RemoveAll(testPath)
	}()
	createTestFiles(t)

	binPath, err := utils.GetSelfPath()
	if err != nil {
		t.Fatalf("Ошибка получения пути к приложению: %v", err)
	}

	outputPath := filepath.Join(binPath, "output.zip")
	testFilesFullPaths := []string{}
	for _, f := range testFiles {
		testFilesFullPaths = append(testFilesFullPaths, filepath.Join(testPath, f))
	}

	if err := Compress(outputPath, testFilesFullPaths...); err != nil {
		t.Fatalf("Ошибка Compress(): %v", err)
	}

	if !utils.FileExists(outputPath) {
		t.Fatalf("Архив %s не существует", outputPath)
	}

	if err := removeTestFiles(); err != nil {
		fmt.Errorf("Ошибка удаления тестовых директорий: %v\n", err)
	}

	if err := Decompress(outputPath, "/"); err != nil {
		t.Fatalf("Ошибка Compress(): %v", err)
	}

	for _, path := range testFilesFullPaths {
		if !utils.FileExists(path) {
			t.Errorf("Файл %s должен быть распакован, но не найден.\n", path)
		}
		if err := readData(&decompressedData); err != nil {
			t.Error(err)
		}
		sourceLastElement := sourceData[len(sourceData)-1]
		decompressedLastElement := decompressedData[len(decompressedData)-1]
		if !reflect.DeepEqual(sourceLastElement, decompressedLastElement) {
			t.Errorf("Элементы не равны. \nИсходный     : %v\nРаспакованный: %v\n")
		}
	}
}
Пример #3
0
// NewGostSignerEncryptor создаёт новый объект для подписи
func NewGostSignerEncryptor(params SSLParams) encrypt.SignerEncryptor {
	if !utils.FileExists(params.OpenSSLPath) {
		fmt.Println("Не удаётся получить доступ к openSSL по заданному пути.")
		os.Exit(1)
	}

	return &gostSSL{
		params: params,
	}
}
Пример #4
0
// Compress создаёт архив с путём и именем fileOut из файлов и папок, переданных в pathIn
func Compress(fileOut string, pathIn ...string) error {
	if utils.FileExists(fileOut) {
		if err := os.Remove(fileOut); err != nil {
			return err
		}
	}

	cmdParams := []string{"-j", fileOut}
	cmdParams = append(cmdParams, pathIn...)

	cmd := exec.Command(zipPath, cmdParams...)
	output, err := cmd.CombinedOutput()
	fmt.Printf("\n### OUTPUT COMPRESS: %v\n", string(output))
	if err != nil {
		fmt.Println("Ошибка выполнения команды zip: ", err.Error())
		return err
	}

	return nil
}