示例#1
0
func TestMaskToUnMask(t *testing.T) {
	m, err := mask.New(pass)

	if err != nil {
		t.Error(err)
	}

	mText, err := TryMask(m, text)

	if err != nil {
		t.Error(err)
	}

	umText, err := TryUnMask(m, mText)

	if umText != text {
		t.Error(err)
	}
}
示例#2
0
func TestInlineMaskToUnMask(t *testing.T) {
	m, err := mask.New(pass)

	if err != nil {
		t.Error(err)
	}

	mInlineText, err := TryMask(m, inlineText)

	if err != nil {
		t.Error(err)
	}

	umInlineText, err := TryUnMask(m, mInlineText)

	if umInlineText != inlineText || err != nil {
		t.Error(err)
	}
}
示例#3
0
文件: main.go 项目: ngc224/txtmsk
func run() error {
	flag.Parse()
	args := flag.Args()

	if *isVersion {
		fmt.Println("v" + version)
		return nil
	}

	if *isHelp {
		fmt.Fprintf(os.Stderr, "Usage: %s [options] textfile\n", os.Args[0])
		flag.PrintDefaults()
		return nil
	}

	key := keystore.New(applicationName)
	pw, err := key.Get()

	if *isPassword || err != nil {
		pw, err = key.Set()

		if err != nil {
			return err
		}
	}

	var fp io.Reader = os.Stdin

	if len(args) > 0 {
		f, err := os.Open(args[0])

		if err != nil {
			return err
		}

		defer f.Close()

		fp = f
	} else {
		if terminal.IsTerminal(0) {
			return nil
		}
	}

	var tBuf bytes.Buffer

	reader := bufio.NewReaderSize(fp, 4096)

	for {
		line, err := reader.ReadBytes('\n')

		if err != nil && err != io.EOF {
			return err
		}

		tBuf.Write(line)

		if err == io.EOF {
			break
		}
	}

	text := tBuf.String()

	m, err := mask.New(pw)

	if err != nil {
		return err
	}

	if *isUnMask {
		umText, err := txtmsk.TryUnMask(m, text)

		if err != nil {
			if err != mask.ErrNotUseText {
				fmt.Println(text)
			}

			return err
		}

		if *isTrim {
			umText = txtmsk.TrimInLineTag(umText)
		}

		fmt.Print(umText)

		if umText == text {
			return mask.ErrNotDecrypt
		}

		return nil
	}

	mText, err := txtmsk.TryMask(m, text)

	if err != nil {
		return err
	}

	fmt.Print(mText)
	return nil
}