1 PACKAGE BODY IBY_CC_SECURITY_PUB AS
2 /*$Header: ibyccscb.pls 120.1 2005/10/18 23:16:38 jleybovi noship $*/
3
4
5 -- secure reference number prefix
6 G_SEC_REF_PREFIX CONSTANT NUMBER := 9;
7 -- secure reference number length
8 G_SEC_REF_LENGTH CONSTANT NUMBER := 25;
9
10 -- number of characters to leak unmasked
11 G_UNMASK_LENGTH CONSTANT NUMBER := 4;
12 -- masking character
13 G_MASK_CHAR CONSTANT VARCHAR2(1) := 'X';
14
15 -- USE
16 -- Extracts the security segment primary key from a secured
17 -- card reference number
18 --
19 FUNCTION Get_Segment_Id( p_sec_card_ref IN VARCHAR2 )
20 RETURN iby_security_segments.sec_segment_id%TYPE
21 IS
22 BEGIN
23 IF NOT ((SUBSTR(p_sec_card_ref,1,1) = G_SEC_REF_PREFIX)
24 AND (LENGTH(p_sec_card_ref) = G_SEC_REF_LENGTH))
25 THEN
26 RETURN NULL;
27 END IF;
28
29 RETURN TO_NUMBER(SUBSTR(p_sec_card_ref,1 + LENGTH(G_SEC_REF_PREFIX),G_SEC_REF_LENGTH - LENGTH(G_SEC_REF_PREFIX) - G_UNMASK_LENGTH));
30 EXCEPTION
31 WHEN OTHERS THEN
32 RETURN NULL;
33 END Get_Segment_Id;
34
35 FUNCTION Encryption_Enabled RETURN BOOLEAN
36 IS
37 l_mode iby_sys_security_options.cc_encryption_mode%TYPE;
38
39 CURSOR c_encrypt_mode
40 IS
41 SELECT cc_encryption_mode
42 FROM iby_sys_security_options;
43 BEGIN
44 IF (c_encrypt_mode%ISOPEN) THEN CLOSE c_encrypt_mode; END IF;
45
46 OPEN c_encrypt_mode;
47 FETCH c_encrypt_mode INTO l_mode;
48 CLOSE c_encrypt_mode;
49
50 RETURN (l_mode = 'IMMEDIATE') OR (l_mode = 'SCHEDULED');
51 END Encryption_Enabled;
52
53 END IBY_CC_SECURITY_PUB;