message

package module
v0.0.0-...-65af339 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2022 License: MIT Imports: 9 Imported by: 0

README

message

An out-of-the-box cryptographic message communication.

how to use

1. encript & decript
import(
	"github.com/UedaTakeyuki/message"
)

func encriptAndEncode(plainmessage []byte) (crypticmessage string) {

	// new AESCTR
	m := new(message.AESCTR)

	// set key
	m.SetKey([]byte("01234567890123456789012345678901"))

	// set plainmessage for encription
	m.SetPlainMessage(plainmessage)

	// get criptic message
	crypticmessage = m.GetEncodedEncriptedMessage()
	log.Println("crypticmessage:", crypticmessage)

	return
}

func decodeAndDecript(crypticmessage string) {

	// new AESCTR
	m := new(message.AESCTR)

	// set key
	m.SetKey([]byte("01234567890123456789012345678901"))

	// set criptic message string
	m.SetEncodedEncriptedMessage(crypticmessage)

	// get original message from cryptic message
	decreiptedMessage := m.GetDecriptedMessage()
	log.Println("decreiptedMessage:", string(decreiptedMessage))

}

func main(){
	crypticmessage, mac := encriptAndEncode([]byte(originalMessage))
	decodeAndDecript(crypticmessage, mac)
}

Output message:

crypticmessage: L0z3LU3pmWNUvGr-w1eSzRLZpcuajcjy84Qa4Zq1
decreiptedMessage: some plaintext
2. encript and authenticate & decript and authentication confirm
import(
	  "github.com/UedaTakeyuki/message"
)

func encriptAndEncode(plainmessage []byte) (crypticmessage string, mac string) {

	// new AESCTR
	m := new(message.AESCTR)

	// set key
	m.SetKey([]byte("01234567890123456789012345678901"))

	// set plainmessage for encription
	m.SetPlainMessage(plainmessage)

	// get criptic message
	crypticmessage = m.GetEncodedEncriptedMessage()
	log.Println("crypticmessage:", crypticmessage)

	// get Authentication Code of this message
	mac = m.GetPlainMessageMac()
	log.Println("hmac of plaintext:", mac)

	return
}

func decodeAndDecript(crypticmessage string, mac string) {

	// new AESCTR
	m := new(message.AESCTR)

	// set key
	m.SetKey([]byte("01234567890123456789012345678901"))

	// set criptic message string
	m.SetEncodedEncriptedMessage(crypticmessage)

	// get original message from cryptic message
	decreiptedMessage := m.GetDecriptedMessage()
	log.Println("decreiptedMessage:", string(decreiptedMessage))

	// confirm Authentication Code
	result, _ := m.ConfirmMacFromstring(mac)
	log.Println("Confrimation result is", result)
}

func main(){
	crypticmessage, mac := encriptAndEncode([]byte(originalMessage))
	decodeAndDecript(crypticmessage, mac)
}

Output message:

crypticmessage: L0z3LU3pmWNUvGr-w1eSzRLZpcuajcjy84Qa4Zq1
hmac of plaintext: cdd1aba74001d40e980de7cee69dc10d8495a609936bc835da4b30cb33ab6f50
decreiptedMessage: some plaintext
Confrimation result is true

supported algorithm

  • AES CTR + HMAC (encription: AES CTR, message authentication: HMAC)
  • AESGCM (both encription and message authentication are supported by AES GCM)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AESCTR

type AESCTR struct {
	// contains filtered or unexported fields
}

func (*AESCTR) ConfirmMacFromByteArray

func (m *AESCTR) ConfirmMacFromByteArray(originalMac []byte) (result bool)

https://xn--go-hh0g6u.com/pkg/crypto/hmac/#Equal

func (*AESCTR) ConfirmMacFromstring

func (m *AESCTR) ConfirmMacFromstring(originalMac string) (result bool, err error)

func (*AESCTR) GetDecriptedMessage

func (m *AESCTR) GetDecriptedMessage() (t []byte)

func (*AESCTR) GetDecriptedMessageMac

func (m *AESCTR) GetDecriptedMessageMac() (mac string)

func (*AESCTR) GetDecriptedMessageMacAsByteArray

func (m *AESCTR) GetDecriptedMessageMacAsByteArray() (mac []byte)

func (*AESCTR) GetEncodedEncriptedMessage

func (m *AESCTR) GetEncodedEncriptedMessage() (t string)

func (*AESCTR) GetEncriptedMessage

func (m *AESCTR) GetEncriptedMessage() (t []byte)

func (*AESCTR) GetPlainMessageMac

func (m *AESCTR) GetPlainMessageMac() (mac string)

func (*AESCTR) GetPlainMessageMacAsByteArray

func (m *AESCTR) GetPlainMessageMacAsByteArray() (mac []byte)

func (*AESCTR) SetEncodedEncriptedMessage

func (m *AESCTR) SetEncodedEncriptedMessage(t string)

func (*AESCTR) SetEncriptedMessage

func (m *AESCTR) SetEncriptedMessage(t []byte)

func (*AESCTR) SetKey

func (m *AESCTR) SetKey(key []byte)

Set encription key. This key is also used by AES CTR and hash function SHA-246 for HMAC

func (*AESCTR) SetNewIV

func (m *AESCTR) SetNewIV()

Get randombyte from /dev/urandom for IV

func (*AESCTR) SetPlainMessage

func (m *AESCTR) SetPlainMessage(plainmessage []byte)

Set plain message to encript, get IV, and encript.

type AESGCM

type AESGCM struct {
	// contains filtered or unexported fields
}

func (*AESGCM) GetDecriptedMessage

func (m *AESGCM) GetDecriptedMessage() (t []byte)

func (*AESGCM) GetEncodedEncriptedMessage

func (m *AESGCM) GetEncodedEncriptedMessage() (t string)

func (*AESGCM) GetEncriptedMessage

func (m *AESGCM) GetEncriptedMessage() (t []byte)

func (*AESGCM) SetEncodedEncriptedMessage

func (m *AESGCM) SetEncodedEncriptedMessage(t string, aad []byte) (err error)

func (*AESGCM) SetEncriptedMessage

func (m *AESGCM) SetEncriptedMessage(t []byte, aad []byte) (err error)

func (*AESGCM) SetKey

func (m *AESGCM) SetKey(key []byte)

Set encription key. This key is also used by AES CTR and hash function SHA-246 for HMAC

func (*AESGCM) SetNewIV

func (m *AESGCM) SetNewIV()

Get randombyte from /dev/urandom for IV

func (*AESGCM) SetPlainMessage

func (m *AESGCM) SetPlainMessage(plainmessage []byte, aad []byte)

Set plain message to encript, get IV, and encript.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL