package go_pgp import ( "crypto" "github.com/ProtonMail/go-crypto/openpgp/packet" ) const ( // The minimal number of RSA bits MinRSABits = 3072 ) type createOption func(cfg *packet.Config) func HashOption(h crypto.Hash) createOption { if !h.Available() { h = 0 } return func(cfg *packet.Config) { cfg.DefaultHash = h } } func CipherOption(cipher packet.CipherFunction) createOption { if !cipher.IsSupported() { cipher = 0 } return func(cfg *packet.Config) { cfg.DefaultCipher = cipher } } func RSABitsOption(numBits int) createOption { if numBits < MinRSABits { numBits = MinRSABits } return func(cfg *packet.Config) { cfg.RSABits = numBits } } type CompressionLevel int const ( DefaultCompression CompressionLevel = iota - 1 NoCompression CompressionLevel1 CompressionLevel2 CompressionLevel3 CompressionLevel4 CompressionLevel5 CompressionLevel6 CompressionLevel7 CompressionLevel8 CompressionLevel9 compressionLevelOutOfRange ) const CompressionLevelMax = compressionLevelOutOfRange - 1 func CompressionOption(level CompressionLevel) createOption { if level < DefaultCompression || level > CompressionLevelMax { level = CompressionLevel5 } return func(cfg *packet.Config) { cfg.CompressionConfig = &packet.CompressionConfig{ Level: int(level), } } }