Python equivalent of this is

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import ciphers
...
mode = ciphers.modes.GCM(b'\0' * 16, ciphertext[-16:], 16)
decryptor = ciphers.Cipher(ciphers.algorithms.AES(symmetric_key), mode, 
backend=default_backend()).decryptor()
print decryptor.update(cipherdata[:-16]) + decryptor.finalize()


Basically, how do I do this in Go using std crypto library?



On Thursday, November 16, 2017 at 12:21:51 AM UTC-8, Chetan Gowda wrote:
>
> Hello,
> In Go's standard implementation of AES-256 GCM cipher, how do I specify an 
> initialization vector while decrypting data? I would really appreciate if 
> someone can provide me some pointers here.
>
> More context:
> I'm trying to decrypt ApplePay tokens. Apple requires the data to be 
> decrypted using AES–256 GCM with an initialization vector of 16 null bytes 
> and no authentication data (step-4 in 
> https://developer.apple.com/library/content/documentation/PassKit/Reference/PaymentTokenJSON/PaymentTokenJSON.html
> )
>
>    - 
>>    
>>    For ECC (EC_v1), Decrypt the data key using AES–256 (id-aes256-GCM 
>>    2.16.840.1.101.3.4.1.46), with an initialization vector of 16 null bytes 
>>    and no associated authentication data.
>    
>    
> How do I do this using the standard crypto/aes library which doesn't take 
> initialization vector as a param?
> Below is my reference implementation (error checking ignored for brevity). 
> This code fails with the error "cipher: message authentication failed".
>
> symmetricKey := []byte("derived_symmetric_key_32chars_xx")
> ciphertext := []byte("applepay_encrypted_data")
>
> block, _ := aes.NewCipher(symmetricKey)
> aesgcm, _ := cipher.NewGCM(block)
> nonce := make([]byte, aesgcm.NonceSize())
>
> plaintext, err := aesgcm.Open(cipherText[:0], nonce, cipherText, nil)
> if err != nil {
>   panic(err)
> }
>
> playground link <https://play.golang.org/p/ddmtv5agkc>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to