USP_BBNC_ENCRYPTGIFTDATA
Encrypts sensitive information in BBNC GIFTINFORMATION xml field.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GIFTINFORMATION | xml | INOUT | |
@KEYISALREADYOPEN | bit | IN |
Definition
Copy
create procedure dbo.USP_BBNC_ENCRYPTGIFTDATA
(
@GIFTINFORMATION xml = null output,
@KEYISALREADYOPEN bit = 0
)
as
set nocount on;
--Don't convert a null @GIFTINFORMATION to an empty string
if @GIFTINFORMATION is null
return 0;
begin try
if @KEYISALREADYOPEN = 0
exec dbo.USP_GET_KEY_ACCESS;
declare @NEWGIFTINFORMATION xml
set @NEWGIFTINFORMATION =
(
select
@GIFTINFORMATION as "*",
EncryptByKey(Key_GUID('sym_BBInfinity'), @GIFTINFORMATION.value
(
'(/GIFTINFORMATION/ITEM[FIELDKEY = "CREDITCARDNUMBER"]/NEWVALUE/text())[1]',
'nvarchar(4000)'
)) as [ENCRYPTEDCCNUMBER],
EncryptByKey(Key_GUID('sym_BBInfinity'), @GIFTINFORMATION.value
(
'(/GIFTINFORMATION/ITEM[FIELDKEY = "ACCOUNTNUMBER"]/NEWVALUE/text())[1]',
'nvarchar(4000)'
)) as [ENCRYPTEDACCOUNTNUMBER]
for xml path(''), binary base64, type
)
set @NEWGIFTINFORMATION.modify
(
'replace value of
(/GIFTINFORMATION/ITEM[FIELDKEY = "CREDITCARDNUMBER"]/NEWVALUE/text())[1]
with
(/ENCRYPTEDCCNUMBER/text())[1]'
);
set @NEWGIFTINFORMATION.modify
(
'replace value of
(/GIFTINFORMATION/ITEM[FIELDKEY = "ACCOUNTNUMBER"]/NEWVALUE/text())[1]
with
(/ENCRYPTEDACCOUNTNUMBER/text())[1]'
);
set @NEWGIFTINFORMATION.modify
(
'delete
/ENCRYPTEDCCNUMBER[1]'
);
set @NEWGIFTINFORMATION.modify
(
'delete
/ENCRYPTEDACCOUNTNUMBER[1]'
);
set @GIFTINFORMATION = @NEWGIFTINFORMATION;
if @KEYISALREADYOPEN = 0
close symmetric key sym_BBInfinity;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
if @KEYISALREADYOPEN = 0
close symmetric key sym_BBInfinity;
set @GIFTINFORMATION = null;
return 0;
end catch
return 0;