diff --git a/Server-Side Components/Script Includes/Convert base64 to Hex (Object GUID)/README.md b/Server-Side Components/Script Includes/Convert base64 to Hex (Object GUID)/README.md new file mode 100644 index 0000000000..8d7c0ee6e8 --- /dev/null +++ b/Server-Side Components/Script Includes/Convert base64 to Hex (Object GUID)/README.md @@ -0,0 +1,16 @@ +**Description:** +This Script Include converts a Base64-encoded Active Directory (AD) Object GUID into its corresponding hexadecimal format. +When importing AD objects from an on-premises directory using LDAP, the object GUIDs are typically stored in Base64 format. +However, in OOB integrations such as the AD V2 Spoke, the GUID must be provided in hexadecimal format. +This Script Include bridges that gap by decoding the Base64 string and converting it into the required hex representation. + +**Usage:** +Can be used in the LDAP Transofrm scripts to convert the base64 code to HEX code + +**Sample:** + +var base64Code ='ayn8QMpHEGezHQDdAQZi2g=='; +gs.print(new global.LDAP_AD_Utils().base64ToHex(base64Code)); + +**Output:** +40fc296b-47ca-6710-b31d-00dd010662da diff --git a/Server-Side Components/Script Includes/Convert base64 to Hex (Object GUID)/script.js b/Server-Side Components/Script Includes/Convert base64 to Hex (Object GUID)/script.js new file mode 100644 index 0000000000..a076894cbe --- /dev/null +++ b/Server-Side Components/Script Includes/Convert base64 to Hex (Object GUID)/script.js @@ -0,0 +1,79 @@ +var LDAP_AD_Utils = Class.create(); +LDAP_AD_Utils.prototype = { + initialize: function() {}, + + base64ToHex: function(str) { + + var decoded = GlideStringUtil.base64DecodeAsBytes(str); + + var n = decoded.length; + + if (n < 16) { + + return ''; + + } + + var retVal = ''; + + retVal = retVal + this.prefixZeros(decoded[3] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[2] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[1] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[0] & 0xFF).toUpperCase(); + + retVal = retVal + '-'; + + retVal = retVal + this.prefixZeros(decoded[5] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[4] & 0xFF).toUpperCase(); + + retVal = retVal + '-'; + + retVal = retVal + this.prefixZeros(decoded[7] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[6] & 0xFF).toUpperCase(); + + retVal = retVal + '-'; + + retVal = retVal + this.prefixZeros(decoded[8] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[9] & 0xFF).toUpperCase(); + + retVal = retVal + '-'; + + retVal = retVal + this.prefixZeros(decoded[10] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[11] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[12] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[13] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[14] & 0xFF).toUpperCase(); + + retVal = retVal + this.prefixZeros(decoded[15] & 0xFF).toUpperCase(); + + return retVal.toLowerCase(); + + }, + + + prefixZeros: function(value) { + + if (value <= 0xF) { + + return '0' + value.toString(16); + + } else { + + return value.toString(16); + + } + + }, + + type: 'LDAP_AD_Utils' +};