Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var GCM = "GCM"
var OAEP_SHA256 = "OAEP_SHA256"
Functions ¶
func UnmarshalPrivateKey ¶
func UnmarshalPrivateKey(b *Base64EncodedRSAKey) (*rsa.PrivateKey, error)
UnmarshalPrivateKey returns the PrivateKey from the Base64EncodedRSAKey
func UnmarshalPublicKey ¶
func UnmarshalPublicKey(b *Base64EncodedRSAKey) (*rsa.PublicKey, error)
UnmarshalPrivateKey returns the PublicKey from the Base64EncodedRSAKey
Types ¶
type Base64EncodedRSAKey ¶
type Base64EncodedRSAKey struct { PrivateKey string `json:"private_key,omitempty"` PublicKey string `json:"public_key,omitempty"` }
Base64EncodedRSAKey stores details of RSA keys, as base64 url-encoded strings
func CreateEncodedRSAKey ¶
func CreateEncodedRSAKey(size int) (*Base64EncodedRSAKey, error)
CreateEncodedRSAKey returns a fully populated Base64EncodedRSAKey, where new keys are generated on each call using the specified number of bits
func Marshal ¶
func Marshal(priv *rsa.PrivateKey) (*Base64EncodedRSAKey, error)
Marshal returns a Base64EncodedRSAKey from the specified key
func MarshalPublicKey ¶
func MarshalPublicKey(priv *rsa.PrivateKey) (*Base64EncodedRSAKey, error)
MarshalPublicKey returns a Base64EncodedRSAKey that only contains the public key, taken from the supplied private key
Example ¶
// ALWAYS generate a new key - do not reuse this key k, _ := UnmarshalPrivateKey( &Base64EncodedRSAKey{ PrivateKey: "MIIEowIBAAKCAQEA2_vOF24UnIu-EnlL-wnZiKOmsxJIr0ZSGMe6atPTP9GT1OEBZLMbZ5NBiSlD4nIhpvSrthxjrRjiIERUupk2if-oaPnBPbuwuKks8X6aidP_vWUaIQiKYYXzlEvoXWxnPOlvs_e9cqjDAowy6zodHvGcGTOH8nTcv0MN_PEdGhbv5E85HBjl0I2pja2gEFjFmid0IORff1po_bKepzrktDJdS6pNgQimOM4HcpBuQU8E4MSgKnXH0ONlj-qbsfiTA34QINaSFMqm-UrAyh_jUkr8zpu5pFZpqSb9XGxLtb8f2TFhyJEPR1i42VyLiV42q1f0cemQqqNAAaTjMKM_mQIDAQABAoIBAE77R3FuGoRiP-oOFtOZI7tFVpKwm9wiWVOAUlQMnaoqKvOhnYh0LgCwBDWk1TS2WZLCAeyuoLMDXhzLq8gbPlOpsOOP2Gu7uaVzSCmklQOrVATCCfGWSWjeWSgDYPg59Y8PGQX6itBh-zIs-BMwmEgF40_BCqxofOFGx_zq7NHyg3uNcJ4AF0CXCrasVNrLjppx0ae8hbHy2SfKdIYasgnuMnUrW30cQFYZzmBrMuxuRRcBzRKDzClL2_flmIj5v1B3KoLz5xOXTysg4HG1tg4NZ0GqJPgwxcCvNhE-wTDEI2QKr_rCI48mLsJoIrb6vi6bRb4Gg_qTyPX9WpD1JukCgYEA3Ymno84CFXUd19AXUZosqWL8xm08S67UsdAdGtpr0JcJZv68ImJFeWLwS6kdBmWXdmt0bQqu5m3hxu1c-TImB5-kzV40s-Xm6hw5De-A7Y24rDYt3gR84ox7dAOUC-pCv83fXXzc6YkNBh3wRuQEzijxXMOGNXsbBEm3863tsLsCgYEA_jRCyqS_0-WE49j4jjnwCfWUQRrszMlbiKCsjf_HLacXM8GQI3_P-citqWXRoZylJzeuSWcCA-g3rZuumHvWXvoG9343T8BTWwGrBTqZpz2U7viMEywzddGywKIDSN-vmGCjay4yU7qT4BKJvXE4MM_vhV4MpQwRGvN_3wN2hbsCgYBphxLV0mHnurwWe0dAVcKEhWSHWK1qF8O1V78ldXn6CJgv-ZPAhTM22UxBnjL3QxldDV6OOpKJrTnpOlQZWCwJYaBtOzy7nP3b8smyu62ceu_HCJ_crCKY__YmkzXIXzSgjP6jV8EbdW9AxK4Z9q_bTGF8oJ6jhxqddkgryWP51QKBgQCVqb09Q7wxDGuuHhtQ2Wmq42xy3GBYvaBnk3mkbNge18aAUVEEpYaUIIOmPW0rwmc17MFvM_dqx3iofQVRf2-aIYiihCwahzhMV3ISNQsr_MTH4YvO6fIuRtUANyLJ7_CZPSRZwSweQbY4cZGo-JTFoFb75YB6V91mScCaU5afawKBgDgZTwOoA3fDujfkAdiqiDS5s-MSKD9slHByX5lvxt_ERWMJwUHUHoDqy0uJsvHx0qlqorkFHcSgiXNSYWDtbvcWH-tV3gPhWSEI0gBqgcy4uKNRBALJOhC5Ew-X4NkL_FOYeRgMYn9AE2aVybbdM2JTpola8HtLP3TlY-RFUAqJ", }, ) // Return struct containing public key only, base64 encoded j, _ := MarshalPublicKey(k) // Serialise b, _ := json.Marshal(j) fmt.Println(string(b))
Output: {"public_key":"MIIBCgKCAQEA2_vOF24UnIu-EnlL-wnZiKOmsxJIr0ZSGMe6atPTP9GT1OEBZLMbZ5NBiSlD4nIhpvSrthxjrRjiIERUupk2if-oaPnBPbuwuKks8X6aidP_vWUaIQiKYYXzlEvoXWxnPOlvs_e9cqjDAowy6zodHvGcGTOH8nTcv0MN_PEdGhbv5E85HBjl0I2pja2gEFjFmid0IORff1po_bKepzrktDJdS6pNgQimOM4HcpBuQU8E4MSgKnXH0ONlj-qbsfiTA34QINaSFMqm-UrAyh_jUkr8zpu5pFZpqSb9XGxLtb8f2TFhyJEPR1i42VyLiV42q1f0cemQqqNAAaTjMKM_mQIDAQAB"}
type EncryptedRSAKey ¶
type EncryptedRSAKey struct { EnvelopePublicKey string `json:"envelope_pk"` EnvelopeAlgo string `json:"envelope_algo"` DetailEncyptionKey string `json:"detail_encryption_key"` DetailEncryptionNonce string `json:"detail_encryption_nonce"` DetailAlgo string `json:"detail_algo"` KeyDetail string `json:"key_detail"` }
EncryptedRSAKey provides sufficient details to be able to decrypt the Base64EncodedRSAKey details in KeyDetail, provided the private key corresponding to EnvelopePublicKey is known
func CreateEncryptedRSAKey ¶
func CreateEncryptedRSAKey(pubKey *rsa.PublicKey, size int) (*EncryptedRSAKey, error)
CreateEncryptedRSAKey creates a Base64EncodedRSAKey with keys using the specified bit size, where the Base64EncodedRSAKey is encrypted using the supplied public key. The Base64EncodedRSAKey is actually symmetrically encrypted using a one time random key and nonce, and it is the random key that is then envelope encrypted with the supplied public key. This ensures that the process will work with different bit sizes.
func EncryptRSAKey ¶
func EncryptRSAKey(pubKey *rsa.PublicKey, b *Base64EncodedRSAKey) (*EncryptedRSAKey, error)
EncryptRSAKey encrypts the provided Base64EncodedRSAKey using the supplied public key. The Base64EncodedRSAKey is actually symmetrically encrypted using a one time random key and nonce, and it is the random key that is then envelope encrypted with the supplied public key. This ensures that the process will work with different bit sizes.
func (*EncryptedRSAKey) Unmarshal ¶
func (e *EncryptedRSAKey) Unmarshal(privKey *rsa.PrivateKey) (*Base64EncodedRSAKey, error)
Unmarshal will return the Base64EncodedRSAKey, provided that the supplied private key matches the public key used for encryption, and the contents of EncryptedRSAKey have not been modified
func (*EncryptedRSAKey) UnmarshalEnvelopePublicKey ¶
func (e *EncryptedRSAKey) UnmarshalEnvelopePublicKey() (*rsa.PublicKey, error)
UnmarshalEnvelopePublicKey returns the public key that was used to encrypt the data in this instance, so that the corresponding private key can be identified