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;