iiop-openjdk/src/main/java/org/wildfly/iiop/openjdk/csiv2/CSIv2Util.java
public static byte[] decodeGssExportedName(byte[] encodedName) {
        if (encodedName[0] != 0x04 || encodedName[1] != 0x01)
            return null;

        int mechOidLength = (encodedName[2] & 0xFF) << 8; //MECH_OID_LEN
        mechOidLength += (encodedName[3] & 0xFF);      // MECH_OID_LEN

        byte[] oidArray = new byte[mechOidLength];
        System.arraycopy(encodedName, 4, oidArray, 0, mechOidLength);

        for (int i = 0; i < mechOidLength; i++) {
            if (gssUpMechOidArray[i] != oidArray[i]) {
                return null;
            }
        }

        int offset = 4 + mechOidLength;
        int nameLength = (encodedName[offset] & 0xFF) << 24;
        nameLength += (encodedName[++offset] & 0xFF) << 16;
        nameLength += (encodedName[++offset] & 0xFF) << 8;
        nameLength += (encodedName[++offset] & 0xFF);

        byte[] name = new byte[nameLength];
        System.arraycopy(encodedName, ++offset, name, 0, nameLength);

        return name;
    }
public static byte[] decodeGssExportedName(byte[] encodedName) {
        if (encodedName[0] != 0x04 || encodedName[1] != 0x01)
            return null;

        int mechOidLength = (encodedName[2] & 0xFF) << 8; //MECH_OID_LEN
        mechOidLength += (encodedName[3] & 0xFF);      // MECH_OID_LEN

        byte[] oidArray = new byte[mechOidLength];
        System.arraycopy(encodedName, 4, oidArray, 0, mechOidLength);

        for (int i = 0; i < mechOidLength; i++) {
            if (gssUpMechOidArray[i] != oidArray[i]) {
                return null;
            }
        }

        int offset = 4 + mechOidLength;
        int nameLength = (encodedName[offset] & 0xFF) << 24;
        nameLength += (encodedName[++offset] & 0xFF) << 16;
        nameLength += (encodedName[++offset] & 0xFF) << 8;
        nameLength += (encodedName[++offset] & 0xFF);

        byte[] name = new byte[nameLength];
        System.arraycopy(encodedName, ++offset, name, 0, nameLength);

        return name;
    }
public static byte [ ] decodeGssExportedName ( byte [ ] encodedName ) { if ( encodedName [ 0 ] != 0x04 || encodedName [ 1 ] != 0x01 ) return null ; int mechOidLength = ( encodedName [ 2 ] & 0xFF ) << 8 ; //MECH_OID_LEN mechOidLength += ( encodedName [ 3 ] & 0xFF ) ; // MECH_OID_LEN byte [ ] oidArray = new byte [ mechOidLength ] ; System . arraycopy ( encodedName , 4 , oidArray , 0 , mechOidLength ) ; for ( int i = 0 ; i < mechOidLength ; i ++ ) { if ( gssUpMechOidArray [ i ] != oidArray [ i ] ) { return null ; } } int offset = 4 + mechOidLength ; int nameLength = ( encodedName [ offset ] & 0xFF ) << 24 ; nameLength += ( encodedName [ ++ offset ] & 0xFF ) << 16 ; nameLength += ( encodedName [ ++ offset ] & 0xFF ) << 8 ; nameLength += ( encodedName [ ++ offset ] & 0xFF ) ; byte [ ] name = new byte [ nameLength ] ; System . arraycopy ( encodedName , ++ offset , name , 0 , nameLength ) ; return name ; }
<p>
Decodes a GSS exported name that has been encoded with the GSSUP mechanism OID. See {@code createGSSExportedName}
for a description of the encoding format.
</p>

@param encodedName the encoded exported name.
@return a {@code byte[]} representing the decoded exported name.
@see #createGSSExportedName(byte[], byte[])
<p > Decodes a GSS exported name that has been encoded with the GSSUP mechanism OID . See { @code createGSSExportedName } for a description of the encoding format . < / p >