[Home] [Help]
PACKAGE BODY: APPS.IEM_UTILS_PVT
Source
1 PACKAGE BODY IEM_UTILS_PVT as
2 /* $Header: iemputib.pls 120.0 2005/06/02 13:43:23 appldev noship $*/
3
4 G_PKG_NAME CONSTANT varchar2(30) :='IEM_UTILS_PVT ';
5
6 PROCEDURE IEM_EncryptPassword(
7 P_Api_Version_Number IN NUMBER,
8 P_Init_Msg_List IN VARCHAR2,
9 P_Commit IN VARCHAR2,
10 p_raw_data IN VARCHAR2,
11 x_encrypted_data OUT NOCOPY VARCHAR2,
12 x_encrypted_key OUT NOCOPY VARCHAR2,
13 x_msg_count OUT NOCOPY NUMBER,
14 x_return_status OUT NOCOPY VARCHAR2,
15 x_msg_data OUT NOCOPY VARCHAR2)
16
17 IS
18 l_api_name VARCHAR2(255):='IEM_EncryptPassword';
19 l_api_version_number NUMBER:=1.0;
20
21 l_length NUMBER:=0;
22 l_exts_length NUMBER:=0;
23 l_raw_data VARCHAR2(200);
24 l_random_key VARCHAR2(100);
25
26 IEM_PASSWORD_NULL EXCEPTION;
27 IEM_DOUBLE_ENCRIPTED EXCEPTION;
28
29 PRAGMA EXCEPTION_INIT( IEM_PASSWORD_NULL, -28231 );
30 PRAGMA EXCEPTION_INIT( IEM_DOUBLE_ENCRIPTED, -28233 );
31
32 BEGIN
33 -- Standard Start of API savepoint
34 SAVEPOINT IEM_EncryptPassword_PVT;
35
36 -- Standard call to check for call compatibility.
37 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
38 p_api_version_number,
39 l_api_name,
40 G_PKG_NAME)
41 THEN
42 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
43 END IF;
44
45 -- Initialize message list if p_init_msg_list is set to TRUE.
46 IF FND_API.to_Boolean( p_init_msg_list ) THEN
47 FND_MSG_PUB.initialize;
48 END IF;
49
50 -- Initialize API return status to SUCCESS
51 x_return_status := FND_API.G_RET_STS_SUCCESS;
52
53 -- API begins
54
55 l_raw_data := RTRIM(LTRIM(p_raw_data));
56
57
58 IF l_raw_data is null THEN
59 RAISE IEM_PASSWORD_NULL;
60 END IF;
61
62 -- Normalize input raw data
63 select MOD(length(l_raw_data),8) into l_length from dual;
64
65 IF l_length <> 0 THEN
66 WHILE l_length < 8 LOOP
67 l_raw_data := l_raw_data||' ';
68 l_length := l_length + 1;
69 END LOOP;
70 END IF;
71
72 -- randomly generated encrypted key
73 l_random_key := TO_CHAR( ABS(DBMS_RANDOM.Random) );
74
75 x_encrypted_key := l_random_key;
76
77 dbms_obfuscation_toolkit.DESEncrypt(
78 input_string => l_raw_data,
79 key_string => l_random_key,
80 encrypted_string => x_encrypted_data );
81
82 -- Standard Check Of p_commit.
83 IF FND_API.To_Boolean(p_commit) THEN
84 COMMIT WORK;
85 END IF;
86
87 -- Standard callto get message count and if count is 1, get message info.
88 FND_MSG_PUB.Count_And_Get
89 ( p_count => x_msg_count,
90 p_data => x_msg_data
91 );
92
93 EXCEPTION
94 WHEN IEM_PASSWORD_NULL THEN
95 ROLLBACK TO IEM_EncryptPassword_PVT;
96 x_return_status := FND_API.G_RET_STS_ERROR ;
97 FND_MESSAGE.SET_NAME('IEM', 'IEM_PASSWORD_NULL');
98
99 FND_MSG_PUB.ADD;
100 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
101 p_data => x_msg_data );
102
103 WHEN IEM_DOUBLE_ENCRIPTED THEN
104 ROLLBACK TO IEM_EncryptPassword_PVT;
105 x_return_status := FND_API.G_RET_STS_ERROR;
106 FND_MESSAGE.SET_NAME('IEM', 'IEM_DOUBLE_ENCRIPTED');
107
108 FND_MSG_PUB.Add;
109 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
110
111 WHEN FND_API.G_EXC_ERROR THEN
112 ROLLBACK TO IEM_EncryptPassword_PVT;
113 x_return_status := FND_API.G_RET_STS_ERROR ;
114 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
115 p_data => x_msg_data );
116 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
117 ROLLBACK TO IEM_EncryptPassword_PVT;
118 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
119 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
120 p_data => x_msg_data );
121
122 WHEN OTHERS THEN
123 ROLLBACK TO IEM_EncryptPassword_PVT;
124 x_return_status := FND_API.G_RET_STS_ERROR;
125
126 IF FND_MSG_PUB.Check_Msg_Level
127 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
128 THEN
129 FND_MSG_PUB.Add_Exc_Msg
130 (G_PKG_NAME, l_api_name);
131 END IF;
132
133 FND_MSG_PUB.Count_And_Get
134 (p_count => x_msg_count,
135 p_data => x_msg_data
136 );
137 END IEM_EncryptPassword;
138
139
140
141
142 PROCEDURE IEM_DecryptPassword(
143 P_Api_Version_Number IN NUMBER,
144 P_Init_Msg_List IN VARCHAR2,
145 P_Commit IN VARCHAR2,
146 p_input_data IN VARCHAR2,
147 p_decrypted_key IN VARCHAR2,
148 x_decrypted_data OUT NOCOPY VARCHAR2,
149 x_msg_count OUT NOCOPY NUMBER,
150 x_return_status OUT NOCOPY VARCHAR2,
151 x_msg_data OUT NOCOPY VARCHAR2)
152
153 IS
154 l_api_name VARCHAR2(255):='DecryptPassword';
155 l_api_version_number NUMBER:=1.0;
156
157 l_decrypted_data VARCHAR2(200);
158
159 IEM_PASSWORD_NULL EXCEPTION;
160 IEM_INVALID_INPUT EXCEPTION; -- not a multiple of 8 bytes
161
162 PRAGMA EXCEPTION_INIT( IEM_PASSWORD_NULL, -28231 );
163 PRAGMA EXCEPTION_INIT( IEM_INVALID_INPUT, -28232 );
164
165 BEGIN
166 -- Standard Start of API savepoint
167 SAVEPOINT IEM_DecryptPassword_PVT;
168
169 -- Standard call to check for call compatibility.
170 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
171 p_api_version_number,
172 l_api_name,
173 G_PKG_NAME)
174 THEN
175 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
176 END IF;
177
178 -- Initialize message list if p_init_msg_list is set to TRUE.
179 IF FND_API.to_Boolean( p_init_msg_list ) THEN
180 FND_MSG_PUB.initialize;
181 END IF;
182
183 -- Initialize API return status to SUCCESS
184 x_return_status := FND_API.G_RET_STS_SUCCESS;
185
186 -- Decrypt the data
187 dbms_obfuscation_toolkit.DESDecrypt(
188 input_string => p_input_data,
189 key_string => p_decrypted_key,
190 decrypted_string => l_decrypted_data );
191
192
193 -- Normalize output
194 x_decrypted_data := RTRIM(LTRIM(l_decrypted_data));
195
196 -- Standard Check Of p_commit.
197 IF FND_API.To_Boolean(p_commit) THEN
198 COMMIT WORK;
199 END IF;
200
201 -- Standard callto get message count and if count is 1, get message info.
202 FND_MSG_PUB.Count_And_Get
203 ( p_count => x_msg_count,
204 p_data => x_msg_data
205 );
206
207 EXCEPTION
208 WHEN IEM_PASSWORD_NULL THEN
209 ROLLBACK TO IEM_DecryptPassword_PVT;
210 x_return_status := FND_API.G_RET_STS_ERROR ;
211 FND_MESSAGE.SET_NAME('IEM', 'IEM_PASSWORD_NULL');
212
213 FND_MSG_PUB.ADD;
214 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
215 p_data => x_msg_data );
216
217 WHEN IEM_INVALID_INPUT THEN
218 ROLLBACK TO IEM_DecryptPassword_PVT;
219 x_return_status := FND_API.G_RET_STS_ERROR;
220 FND_MESSAGE.SET_NAME('IEM', 'IEM_INVALID_INPUT');
221
222 FND_MSG_PUB.Add;
223 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
224
225 WHEN FND_API.G_EXC_ERROR THEN
226 ROLLBACK TO IEM_DecryptPassword_PVT;
227 x_return_status := FND_API.G_RET_STS_ERROR ;
228 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
229 p_data => x_msg_data );
230
231 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
232 ROLLBACK TO IEM_DecryptPassword_PVT;
233 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
234 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
235 p_data => x_msg_data );
236
237 WHEN OTHERS THEN
238
239 ROLLBACK TO IEM_DecryptPassword_PVT;
240 x_return_status := FND_API.G_RET_STS_ERROR;
241 IF FND_MSG_PUB.Check_Msg_Level
242 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
243 THEN
244 FND_MSG_PUB.Add_Exc_Msg
245 (G_PKG_NAME, l_api_name);
246 END IF;
247
248 FND_MSG_PUB.Count_And_Get
249 (p_count => x_msg_count,
250 p_data => x_msg_data
251 );
252 END IEM_DecryptPassword;
253
254 --transfer string containing elements seperated by ; to table
255 FUNCTION varchar_to_table ( inString IN VARCHAR2 )
256 return jtf_varchar2_Table_100
257 is
258 l_indx number:=0;
259 l_temp varchar2(200);
260 l_rem varchar2(2000);
261 l_table jtf_varchar2_Table_100:=jtf_varchar2_Table_100();
262 i BINARY_INTEGER :=1;
263 BEGIN
264 l_rem := inString ;
265
266 loop
267 l_indx := INSTR(l_rem, ';');
268 if (l_indx <> 0)then
269 l_temp := SUBSTR( l_rem, 1, l_indx-1 );
270 l_rem := SUBSTR( l_rem, l_indx+1);
271 l_table.extend;
272 l_table(i) := l_temp;
273 i := i + 1;
274 else
275 exit;
276 end if;
277 end loop;
278
279 return l_table;
280
281 END varchar_to_table;
282
283 END IEM_UTILS_PVT;