return decrypt error

This commit is contained in:
Jakub 2019-03-07 14:08:17 +01:00
parent 79a677eb2c
commit 8f4bbfc780
3 changed files with 11 additions and 11 deletions

View file

@ -78,8 +78,8 @@ func newSymmetricKey(ek *packet.EncryptedKey) *SymmetricKey {
} }
} }
// DecryptAttKey and return a symmetric key
// Use: bridge // Use: bridge
// Decrypt and return a symmetric key
func DecryptAttKey(kr *KeyRing, keyPacket string) (key *SymmetricKey, err error) { func DecryptAttKey(kr *KeyRing, keyPacket string) (key *SymmetricKey, err error) {
r := base64.NewDecoder(base64.StdEncoding, strings.NewReader(keyPacket)) r := base64.NewDecoder(base64.StdEncoding, strings.NewReader(keyPacket))
packets := packet.NewReader(r) packets := packet.NewReader(r)

View file

@ -11,8 +11,8 @@ import (
"golang.org/x/crypto/openpgp/packet" "golang.org/x/crypto/openpgp/packet"
) )
// Use: ios/android only
//RandomToken ... //RandomToken ...
// Use: ios/android only
func (pm *PmCrypto) RandomToken() ([]byte, error) { func (pm *PmCrypto) RandomToken() ([]byte, error) {
config := &packet.Config{DefaultCipher: packet.CipherAES256} config := &packet.Config{DefaultCipher: packet.CipherAES256}
keySize := config.DefaultCipher.KeySize() keySize := config.DefaultCipher.KeySize()
@ -23,8 +23,8 @@ func (pm *PmCrypto) RandomToken() ([]byte, error) {
return symKey, nil return symKey, nil
} }
// Use: ios/android only
// RandomTokenWith ... // RandomTokenWith ...
// Use: ios/android only
func (pm *PmCrypto) RandomTokenWith(size int) ([]byte, error) { func (pm *PmCrypto) RandomTokenWith(size int) ([]byte, error) {
config := &packet.Config{DefaultCipher: packet.CipherAES256} config := &packet.Config{DefaultCipher: packet.CipherAES256}
symKey := make([]byte, size) symKey := make([]byte, size)
@ -34,8 +34,8 @@ func (pm *PmCrypto) RandomTokenWith(size int) ([]byte, error) {
return symKey, nil return symKey, nil
} }
// GetSessionFromKeyPacket get session key no encoding in and out
// Use: ios/android only // Use: ios/android only
//GetSessionFromKeyPacketBinkeys get session key no encoding in and out
func (pm *PmCrypto) GetSessionFromKeyPacket(keyPackage []byte, privateKey *KeyRing, passphrase string) (*SymmetricKey, error) { func (pm *PmCrypto) GetSessionFromKeyPacket(keyPackage []byte, privateKey *KeyRing, passphrase string) (*SymmetricKey, error) {
keyReader := bytes.NewReader(keyPackage) keyReader := bytes.NewReader(keyPackage)
@ -68,14 +68,14 @@ func (pm *PmCrypto) GetSessionFromKeyPacket(keyPackage []byte, privateKey *KeyRi
} }
if decryptErr != nil { if decryptErr != nil {
return nil, err return nil, decryptErr
} }
return getSessionSplit(ek) return getSessionSplit(ek)
} }
// Use: ios/android only
//KeyPacketWithPublicKey ... //KeyPacketWithPublicKey ...
// Use: ios/android only
func (pm *PmCrypto) KeyPacketWithPublicKey(sessionSplit *SymmetricKey, publicKey string) ([]byte, error) { func (pm *PmCrypto) KeyPacketWithPublicKey(sessionSplit *SymmetricKey, publicKey string) ([]byte, error) {
pubkeyRaw, err := armor.Unarmor(publicKey) pubkeyRaw, err := armor.Unarmor(publicKey)
if err != nil { if err != nil {
@ -84,8 +84,8 @@ func (pm *PmCrypto) KeyPacketWithPublicKey(sessionSplit *SymmetricKey, publicKey
return pm.KeyPacketWithPublicKeyBin(sessionSplit, pubkeyRaw) return pm.KeyPacketWithPublicKeyBin(sessionSplit, pubkeyRaw)
} }
// Use: ios/android only
// KeyPacketWithPublicKeyBin ... // KeyPacketWithPublicKeyBin ...
// Use: ios/android only
func (pm *PmCrypto) KeyPacketWithPublicKeyBin(sessionSplit *SymmetricKey, publicKey []byte) ([]byte, error) { func (pm *PmCrypto) KeyPacketWithPublicKeyBin(sessionSplit *SymmetricKey, publicKey []byte) ([]byte, error) {
publicKeyReader := bytes.NewReader(publicKey) publicKeyReader := bytes.NewReader(publicKey)
pubKeyEntries, err := openpgp.ReadKeyRing(publicKeyReader) pubKeyEntries, err := openpgp.ReadKeyRing(publicKeyReader)
@ -169,8 +169,8 @@ func (pm *PmCrypto) GetSessionFromSymmetricPacket(keyPackage []byte, password st
return nil, errors.New("password incorrect") return nil, errors.New("password incorrect")
} }
// Use: ios/android only
// SymmetricKeyPacketWithPassword ... // SymmetricKeyPacketWithPassword ...
// Use: ios/android only
func (pm *PmCrypto) SymmetricKeyPacketWithPassword(sessionSplit *SymmetricKey, password string) ([]byte, error) { func (pm *PmCrypto) SymmetricKeyPacketWithPassword(sessionSplit *SymmetricKey, password string) ([]byte, error) {
outbuf := &bytes.Buffer{} outbuf := &bytes.Buffer{}

View file

@ -7,8 +7,8 @@ import (
"golang.org/x/crypto/scrypt" "golang.org/x/crypto/scrypt"
) )
// Use: ios/android only
// EncryptWithoutIntegrity encrypts data with AES-CTR. Note: this encryption mode is not secure when stored/sent on an untrusted medium. // EncryptWithoutIntegrity encrypts data with AES-CTR. Note: this encryption mode is not secure when stored/sent on an untrusted medium.
// Use: ios/android only
func EncryptWithoutIntegrity(key, input, iv []byte) (output []byte, err error) { func EncryptWithoutIntegrity(key, input, iv []byte) (output []byte, err error) {
var block cipher.Block var block cipher.Block
if block, err = aes.NewCipher(key); err != nil { if block, err = aes.NewCipher(key); err != nil {
@ -20,15 +20,15 @@ func EncryptWithoutIntegrity(key, input, iv []byte) (output []byte, err error) {
return return
} }
// Use: ios/android only
// DecryptWithoutIntegrity decrypts data encrypted with AES-CTR. // DecryptWithoutIntegrity decrypts data encrypted with AES-CTR.
// Use: ios/android only
func DecryptWithoutIntegrity(key, input, iv []byte) ([]byte, error) { func DecryptWithoutIntegrity(key, input, iv []byte) ([]byte, error) {
// AES-CTR decryption is identical to encryption. // AES-CTR decryption is identical to encryption.
return EncryptWithoutIntegrity(key, input, iv) return EncryptWithoutIntegrity(key, input, iv)
} }
// Use: ios/android only
// DeriveKey derives a key from a password using scrypt. N should be set to the highest power of 2 you can derive within 100 milliseconds. // DeriveKey derives a key from a password using scrypt. N should be set to the highest power of 2 you can derive within 100 milliseconds.
// Use: ios/android only
func DeriveKey(password string, salt []byte, N int) ([]byte, error) { func DeriveKey(password string, salt []byte, N int) ([]byte, error) {
return scrypt.Key([]byte(password), salt, N, 8, 1, 32) return scrypt.Key([]byte(password), salt, N, 8, 1, 32)
} }