message

package module
v0.0.0-...-10d4ec3 Latest Latest
Warning

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

Go to latest
Published: May 14, 2024 License: MIT Imports: 10 Imported by: 0

README

message

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

how to use

Using high-level APIs
import(
	"github.com/UedaTakeyuki/message"
)
// original message 
const originalMessage = "some plaintext"

// an aad for AESGCM
var aad = []byte("Some AAD data")

// keys
var key_256 = []byte("01234567890123456789012345678901")
var key_192 = []byte("012345678901234567890123")
var key_128 = []byte("0123456789012345")

// encript by AESCTR with 256 bit key
crypticmessage, mac, err := message.EncriptStringByAESCTR(key_256, originalMessage)

// decript 
decriptedmessage, err2 := message.DecriptStringByAESCTR(key_256, crypticmessage)

For more examples, refer Test_02_test.go and Test_03_test.go

Direct use of AES classes
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

For more examples, refer Test_01_test.go

structure

hight level API

According to this answer, I've expressed global functions with stereotype.

class interface

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

View Source
const SET_KEY_FIRST = "set key first."
View Source
const SHOULBE_16_24_32 = "key length should be 16 or 24 or 32 byte"

Variables

This section is empty.

Functions

func DecriptByteArrayByAESCTR

func DecriptByteArrayByAESCTR(key []byte, crypticmessage []byte) (decriptedmessage []byte, err error)

decript

func DecriptByteArrayByAESCTRwithAuth

func DecriptByteArrayByAESCTRwithAuth(key []byte, crypticmessage []byte, originalmac []byte) (decriptedmessage []byte, authresult bool, err error)

decript and auth

func DecriptByteArrayByAESGCM

func DecriptByteArrayByAESGCM(key []byte, crypticmessage []byte, aad []byte) (decriptedmessage []byte, err error)

decript

func DecriptStringByAESCTR

func DecriptStringByAESCTR(key []byte, crypticmessage string) (decriptedmessage string, err error)

decript

func DecriptStringByAESCTRwithAuth

func DecriptStringByAESCTRwithAuth(key []byte, crypticmessage string, originalmac string) (decriptedmessage string, authresult bool, err error)

decript and auth

func DecriptStringByAESGCM

func DecriptStringByAESGCM(key []byte, crypticmessage string, aad []byte) (decriptedmessage string, err error)

decript

func EncriptByteArrayByAESCTR

func EncriptByteArrayByAESCTR(key []byte, plainmessage []byte) (crypticmessage []byte, mac []byte, err error)

func EncriptByteArrayByAESGCM

func EncriptByteArrayByAESGCM(key []byte, plainmessage []byte, aad []byte) (crypticmessage []byte, err error)

func EncriptStringByAESCTR

func EncriptStringByAESCTR(key []byte, plainmessage string) (crypticmessage string, mac string, err error)

func EncriptStringByAESGCM

func EncriptStringByAESGCM(key []byte, plainmessage string, aad []byte) (crypticmessage string, err error)

Types

type AESCTR

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

func CreateAESCTRforDecript

func CreateAESCTRforDecript(key []byte) (m *AESCTR, err error)

Create AESCTR for Decript

func CreateAESCTRforEncript

func CreateAESCTRforEncript(key []byte, plainmessage []byte) (m *AESCTR, err error)

Create AESCTR for Encript

func (*AESCTR) ConfirmMacFromByteArray

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

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, err error)

func (*AESCTR) GetDecriptedMessageMacAsByteArray

func (m *AESCTR) GetDecriptedMessageMacAsByteArray() (mac []byte, err error)

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, err error)

func (*AESCTR) GetPlainMessageMacAsByteArray

func (m *AESCTR) GetPlainMessageMacAsByteArray() (mac []byte, err error)

func (*AESCTR) SetEncodedEncriptedMessage

func (m *AESCTR) SetEncodedEncriptedMessage(t string) (err error)

func (*AESCTR) SetEncriptedMessage

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

func (*AESCTR) SetKey

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

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() (err error)

Get randombyte from /dev/urandom for IV

func (*AESCTR) SetPlainMessage

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

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

type AESGCM

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

func CreateAESGCMforDecript

func CreateAESGCMforDecript(key []byte) (m *AESGCM, err error)

Create AESGCM for Decript

func CreateAESGCMforEncript

func CreateAESGCMforEncript(key []byte, plainmessage []byte, aad []byte) (m *AESGCM, err error)

Create AESGCM for Encript

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) (err error)

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() (err error)

Get randombyte from /dev/urandom for IV

func (*AESGCM) SetPlainMessage

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

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

Directories

Path Synopsis
test module

Jump to

Keyboard shortcuts

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