Discuss this help topic in SecureBlackbox Forum
XML: Use passwords or symmetric keys for encryption
To encrypt the data or the encryption key using a password or a secret (symmetric) key, you need to employ TElXMLKeyInfoSymmetricData class. All you need to do is
If you are using the instance of TElXMLKeyInfoSymmetricData class for encryption of the data, assign it to KeyData property of TElXMLEncryptor class.
If you are using the instance of TElXMLKeyInfoSymmetricData class for encryption
of the encryption key (when TElXMLEncryptor.KeyEncryptionType property is set to xetKeyWrap),
assign it to KeyEncryptionKeyData property.
C#:
TElXMLEncryptor Encryptor = new TElXMLEncryptor(null);
TElXMLKeyInfoSymmetricData SymKeyData = new TElXMLKeyInfoSymmetricData(true);
try
{
Encryptor.EncryptionMethod = SBXMLSec.Unit.xemAES;
// setup the key
SymKeyData.Key.Key = AESKey;
SymKeyData.Key.GenerateIV(16 * 8); // generate random IV (initialization vector)
Encryptor.KeyData = SymKeyData;
// encrypt the data
Encryptor.Encrypt(...);
...
}
finally
{
Encryptor.Dispose();
SymKeyData.Dispose();
}
Delphi:
var
Encryptor : TElXMLEncryptor;
SymKeyData : TElXMLKeyInfoSymmetricData;
...
Encryptor := TElXMLEncryptor.Create(nil);
SymKeyData := TElXMLKeyInfoSymmetricData.Create(True);
try
Encryptor.EncryptionMethod := xemAES;
// setup the key
SymKeyData.Key.Key := AESKey;
SymKeyData.Key.GenerateIV(16 * 8); // generate random IV (initialization vector)
Encryptor.KeyData := SymKeyData;
Encryptor.Encrypt(...);
finally
FreeAndNil(Encryptor);
FreeAndNil(SymKeyData);
end;
...