Skip to content

75py/secretstr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-secretstr

Build Status codecov GoDoc

Install

go get github.com/75py/secretstr

Documents

https://godoc.org/github.com/75py/secretstr

Usage

package main

import (
	"encoding/json"
	"fmt"
	"github.com/75py/secretstr"
)

type UnsafeLoginForm struct {
	ID       string `json:"id"`
	Password string `json:"password"`
}

type LoginForm struct {
	ID       secretstr.SecretString /* instead of string */ `json:"id"`
	Password secretstr.SecretString /* instead of string */ `json:"password"`
}

func main() {
	input := []byte(`{"id":"raw_id","password":"raw_password"}`)

	var unsafeLoginForm UnsafeLoginForm
	_ = json.Unmarshal(input, &unsafeLoginForm)
	var loginForm LoginForm
	_ = json.Unmarshal(input, &loginForm)

	fmt.Printf("fmt.Printf(\"%%s\", unsafeLoginForm) => %s \n", unsafeLoginForm)
	fmt.Printf("fmt.Printf(\"%%v\", unsafeLoginForm) => %v \n", unsafeLoginForm)
	fmt.Printf("fmt.Printf(\"%%+v\", unsafeLoginForm) => %+v \n", unsafeLoginForm)
	fmt.Printf("fmt.Printf(\"%%#v\", unsafeLoginForm) => %#v \n", unsafeLoginForm)

	fmt.Printf("fmt.Printf(\"%%s\", loginForm) => %s \n", loginForm)
	fmt.Printf("fmt.Printf(\"%%v\", loginForm) => %v \n", loginForm)
	fmt.Printf("fmt.Printf(\"%%+v\", loginForm) => %+v \n", loginForm)
	fmt.Printf("fmt.Printf(\"%%#v\", loginForm) => %#v \n", loginForm)

	login(loginForm.ID, loginForm.Password)
}

func login(id, pw secretstr.SecretString) {
	rawID := id.RawString()       // basic string type
	rawPassword := pw.RawString() // basic string type

	// Use raw strings
}

Output

fmt.Printf("%s", unsafeLoginForm) => {raw_id raw_password} 
fmt.Printf("%v", unsafeLoginForm) => {raw_id raw_password} 
fmt.Printf("%+v", unsafeLoginForm) => {ID:raw_id Password:raw_password} 
fmt.Printf("%#v", unsafeLoginForm) => main.UnsafeLoginForm{ID:"raw_id", Password:"raw_password"} 
fmt.Printf("%s", loginForm) => {[FILTERED] [FILTERED]} 
fmt.Printf("%v", loginForm) => {[FILTERED] [FILTERED]} 
fmt.Printf("%+v", loginForm) => {ID:[FILTERED] Password:[FILTERED]} 
fmt.Printf("%#v", loginForm) => main.LoginForm{ID:[FILTERED], Password:[FILTERED]} 

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages