public SaleToPoiMessageSecured Encrypt(string saleToPoiMessage, MessageHeader messageHeader, EncryptionCredentialDetails encryptionCredentialDetails) { var encryptionDerivedKey = _encryptionDerivedKeyGenerator.Generate(encryptionCredentialDetails); var saleToPoiMessageJson = saleToPoiMessage; var saleToPoiMessageByteArray = Encoding.UTF8.GetBytes(saleToPoiMessageJson); var ivMod = _ivModGenerator.GenerateRandomMod(); var saleToPoiMessageAesEncrypted = _aesEncryptor.Encrypt(saleToPoiMessageByteArray, encryptionDerivedKey, ivMod); var saleToPoiMessageAesEncryptedHmac = _hmacSha256Wrapper.HMac(saleToPoiMessageByteArray, encryptionDerivedKey.HmacKey); var saleToPoiMessageSecured = new SaleToPoiRequestSecured { MessageHeader = messageHeader, NexoBlob = Convert.ToBase64String(saleToPoiMessageAesEncrypted), SecurityTrailer = new SecurityTrailer { KeyVersion = encryptionCredentialDetails.KeyVersion, KeyIdentifier = encryptionCredentialDetails.KeyIdentifier, Hmac = saleToPoiMessageAesEncryptedHmac, Nonce = ivMod, AdyenCryptoVersion = encryptionCredentialDetails.AdyenCryptoVersion } }; return(saleToPoiMessageSecured); }
public string Decrypt(SaleToPoiMessageSecured saleToPoiMessageSecured, EncryptionCredentialDetails encryptionCredentialDetails) { var encryptedSaleToPoiMessageByteArray = Convert.FromBase64String(saleToPoiMessageSecured.NexoBlob); var encryptionDerivedKey = _encryptionDerivedKeyGenerator.Generate(encryptionCredentialDetails); var decryptedSaleToPoiMessageByteArray = _aesEncryptor.Decrypt(encryptedSaleToPoiMessageByteArray, encryptionDerivedKey, saleToPoiMessageSecured.SecurityTrailer.Nonce); return(System.Text.Encoding.UTF8.GetString(decryptedSaleToPoiMessageByteArray)); }
internal EncryptionDerivedKey Generate(EncryptionCredentialDetails encryptionCredentialDetails) { byte[] salt = Encoding.ASCII.GetBytes(Salt); var rfc2898 = new Rfc2898DeriveBytes(encryptionCredentialDetails.Password, salt, Iterations); byte[] key = rfc2898.GetBytes(80); return(new EncryptionDerivedKey() { HmacKey = key.Slice(0, EncryptionDerivedKey.HmacKeyLength), CipherKey = key.Slice(EncryptionDerivedKey.HmacKeyLength, EncryptionDerivedKey.HmacKeyLength + EncryptionDerivedKey.CipherKeyLength), IV = key.Slice(EncryptionDerivedKey.HmacKeyLength + EncryptionDerivedKey.CipherKeyLength, EncryptionDerivedKey.HmacKeyLength + EncryptionDerivedKey.CipherKeyLength + EncryptionDerivedKey.IVLength) }); }