Update Function GET_MXAPLUS_PASSWORD
This commit is contained in:
@@ -1 +1,76 @@
|
||||
牄禗袬蒨@\蚕謨@^@
|
||||
SET PATH *LIBL ;
|
||||
|
||||
CREATE OR REPLACE FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD ( )
|
||||
RETURNS CHAR(10)
|
||||
LANGUAGE SQL
|
||||
SPECIFIC CISTOOLS.GET_MXAPLUS_PASSWORD
|
||||
NOT DETERMINISTIC
|
||||
MODIFIES SQL DATA
|
||||
CALLED ON NULL INPUT
|
||||
SET OPTION ALWBLK = *ALLREAD ,
|
||||
ALWCPYDTA = *OPTIMIZE ,
|
||||
COMMIT = *NONE ,
|
||||
DECRESULT = (31, 31, 00) ,
|
||||
DYNDFTCOL = *NO ,
|
||||
DYNUSRPRF = *USER ,
|
||||
SRTSEQ = *HEX
|
||||
BEGIN
|
||||
DECLARE ENCRYPTED_PASSWORD CHAR ( 20 ) DEFAULT '' ;
|
||||
DECLARE DECRYPTED_PASSWORD CHAR ( 20 ) DEFAULT '' ;
|
||||
DECLARE INDEX_ARRAY INTEGER ;
|
||||
DECLARE INDEX_POSITION INTEGER ;
|
||||
DECLARE VALIDATION_TOKEN CHAR ( 16 ) DEFAULT 'RK2GSBV3FAV9N55S' ; --Infor's val--idation token, out in plain sight.., from their source
|
||||
-- Register SQL version of traditional RPG program in QTEMP
|
||||
CREATE OR REPLACE PROCEDURE QTEMP . AXZCSU0R ( IN ASET CHAR ( 10 ) , IN VLDD CHAR ( 16 ) , IN SCRD CHAR ( 1 ) , INOUT PRPW CHAR ( 20 ) ,
|
||||
INOUT SETD CHAR ( 40 ) DEFAULT '' , INOUT RTRN CHAR ( 7 ) DEFAULT '' )
|
||||
LANGUAGE RPGLE
|
||||
EXTERNAL NAME AMCESLIB / AXZCSU0R
|
||||
PARAMETER STYLE GENERAL ;
|
||||
CALL QTEMP . AXZCSU0R ( 'MXAPLUS' , VALIDATION_TOKEN , '1' , ENCRYPTED_PASSWORD) ;
|
||||
-- Decrypt the password
|
||||
SET INDEX_ARRAY = 1 ;
|
||||
WHILE INDEX_ARRAY <= 20 DO
|
||||
SET INDEX_POSITION =
|
||||
CASE INDEX_ARRAY
|
||||
WHEN 1 THEN 4
|
||||
WHEN 2 THEN 17
|
||||
WHEN 3 THEN 2
|
||||
WHEN 4 THEN 9
|
||||
WHEN 5 THEN 1
|
||||
WHEN 6 THEN 20
|
||||
WHEN 7 THEN 18
|
||||
WHEN 8 THEN 13
|
||||
WHEN 9 THEN 11
|
||||
WHEN 10 THEN 14
|
||||
WHEN 11 THEN 3
|
||||
WHEN 12 THEN 10
|
||||
WHEN 13 THEN 5
|
||||
WHEN 14 THEN 19
|
||||
WHEN 15 THEN 8
|
||||
WHEN 16 THEN 6
|
||||
WHEN 17 THEN 12
|
||||
WHEN 18 THEN 16
|
||||
WHEN 19 THEN 7
|
||||
WHEN 20 THEN 15
|
||||
END ;
|
||||
SET DECRYPTED_PASSWORD = LEFT ( DECRYPTED_PASSWORD , INDEX_POSITION - 1 ) || SUBSTRING ( ENCRYPTED_PASSWORD , INDEX_ARRAY , 1 )
|
||||
|| SUBSTRING ( DECRYPTED_PASSWORD , INDEX_POSITION + 1 ) ;
|
||||
SET INDEX_ARRAY = INDEX_ARRAY + 1 ;
|
||||
END WHILE ;
|
||||
-- Replace * with space (same as %xlate('*':' '))
|
||||
SET DECRYPTED_PASSWORD = REPLACE ( DECRYPTED_PASSWORD , '*' , ' ' ) ;
|
||||
-- Drop the temp procedure
|
||||
DROP PROCEDURE QTEMP . AXZCSU0R ;
|
||||
SET CISTOOLS . SQL_CLOB = DECRYPTED_PASSWORD ;
|
||||
-- Password starts from position 11
|
||||
RETURN SUBSTRING ( DECRYPTED_PASSWORD , 11 , 10 ) ;
|
||||
END ;
|
||||
|
||||
GRANT ALTER , EXECUTE
|
||||
ON SPECIFIC FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD
|
||||
TO AMAPICS WITH GRANT OPTION ;
|
||||
|
||||
GRANT EXECUTE
|
||||
ON SPECIFIC FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD
|
||||
TO PUBLIC ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user