package crypt import "hash" type Crypt interface { Hash(data ...[]byte) []byte NewHash() hash.Hash Encrypt(data []byte, key []byte, iv []byte) (enData []byte, err error) Decrypt(enData []byte, key []byte, iv []byte) (data []byte, err error) MakeSyEnc(key []byte, iv []byte) *SyEnc GenKey() (priKey []byte, pubKey []byte, err error) Sign(data []byte, priKey []byte) (signature []byte, err error) Verify(data []byte, signature []byte, pubKey []byte) bool EncryptE(data []byte, pubKey []byte) (enData []byte, err error) DecryptE(enData []byte, priKey []byte) (data []byte, err error) } type SyEnc struct { crypt Crypt key []byte iv []byte } type CMCrypt struct { } type GMCrypt struct { }