Jak zašifrovat data a poslat je do mluvii?
Zašifrování pomocí certifikátu bez HMAC
- krok - Mám požadovaná data v JSON Stringu
- krok - Převedu JSON String do UTF8 Byte array
- krok - UTF8 Byte array zašifruji do PKCS7 Envelope pomocí veřejného klíče (Certifikát ke stažení na https://app.mluvii.com/Admin/CallDataProtection/EncryptionCertificate )
- krok - Získaný Byte array převedu do Base64
//Kroky 3 a 4
public static string EncryptByteArray(byte[] plainTextPayload, Org.BouncyCastle.X509.X509Certificate cert)
{
var random = new Org.BouncyCastle.Security.SecureRandom();
var generator = new Org.BouncyCastle.Cms.CmsEnvelopedDataGenerator(random);
generator.AddKeyTransRecipient(cert);
var envelopedData = generator.Generate(new Org.BouncyCastle.Cms.CmsProcessableByteArray(plainTextPayload), Org.BouncyCastle.Cms.CmsEnvelopedGenerator.Aes256Cbc);
return Convert.ToBase64String(envelopedData.GetEncoded());
}
krok - Výsledný Base64 String vložím do widgetu pomocí metody setProtectedData(Base64String)
owidget.setProtectedData(Base64String);
Zašifrování pomocí certifikátu s HMAC
- krok - Kontaktuji mluvii a vyžádám si base64string HMAC klíč pro svoji společnost / Pošlu mluvii base64string HMAC klíč pro svoji společnost
- krok - Mám požadovaná data v JSON Stringu
- krok - Převedu JSON String do UTF8 Byte array
- krok - UTF8 Byte array zašifruji do PKCS7 Envelope pomocí veřejného klíče (Certifikát ke stažení na https://app.mluvii.com/Admin/CallDataProtection/EncryptionCertificate )
krok - Získaný Byte array převedu do Base64
// Kroky 4 a 5 public static string EncryptByteArray(byte[] plainTextPayload, Org.BouncyCastle.X509.X509Certificate cert) { var random = new Org.BouncyCastle.Security.SecureRandom(); var generator = new Org.BouncyCastle.Cms.CmsEnvelopedDataGenerator(random); generator.AddKeyTransRecipient(cert); var envelopedData = generator.Generate(new Org.BouncyCastle.Cms.CmsProcessableByteArray(plainTextPayload), Org.BouncyCastle.Cms.CmsEnvelopedGenerator.Aes256Cbc); return Convert.ToBase64String(envelopedData.GetEncoded()); }
krok - Pomocí klíče zahašuji byte array z kroku 3
public static string ComputeAuthentication(byte[] plainTextPayload, string base64Hmac) { var key = Convert.FromBase64String(base64Hmac); var hmac = new Org.BouncyCastle.Crypto.Macs.HMac(new Org.BouncyCastle.Crypto.Digests.Sha256Digest()); var result = new byte[hmac.GetMacSize()]; hmac.Init(new Org.BouncyCastle.Crypto.Parameters.KeyParameter(key)); hmac.BlockUpdate(plainTextPayload, 0, plainTextPayload.Length); hmac.DoFinal(result, 0); return Convert.ToBase64String(result); }
krok - Výsledné base64Stringy vložím do widgetu pomocí metody setProtectedData(Base64String)
owidget.setProtectedData(Base64String,ComputedBase64Hmac);