Search in sources :

Example 21 with Any

use of org.omg.CORBA.Any in project wildfly by wildfly.

the class CSIv2Util method decodeInitialContextToken.

/**
     * <p>
     * Decodes an ASN.1-encoded {@code InitialContextToken}. See {@code encodeInitialContextToken} for a description of
     * the encoded token format.
     * </p>
     *
     * @param encodedToken the encoded token.
     * @param codec        the {@code Codec} used to decode the token.
     * @return the decoded {@code InitialContextToken} instance.
     * @see #encodeInitialContextToken(org.omg.GSSUP.InitialContextToken, org.omg.IOP.Codec)
     */
public static InitialContextToken decodeInitialContextToken(byte[] encodedToken, Codec codec) {
    if (encodedToken[0] != 0x60)
        return null;
    int encodedLength = 0;
    int n = 0;
    if (encodedToken[1] >= 0)
        encodedLength = encodedToken[1];
    else {
        n = encodedToken[1] & 0x7F;
        for (int i = 1; i <= n; i++) {
            encodedLength += (encodedToken[1 + i] & 0xFF) << (n - i) * 8;
        }
    }
    int length = encodedLength - gssUpMechOidArray.length;
    byte[] encodedInitialContextToken = new byte[length];
    System.arraycopy(encodedToken, 2 + n + gssUpMechOidArray.length, encodedInitialContextToken, 0, length);
    Any any;
    try {
        any = codec.decode_value(encodedInitialContextToken, InitialContextTokenHelper.type());
    } catch (Exception e) {
        return null;
    }
    return InitialContextTokenHelper.extract(any);
}
Also used : Any(org.omg.CORBA.Any) GSSException(org.ietf.jgss.GSSException)

Example 22 with Any

use of org.omg.CORBA.Any in project wildfly by wildfly.

the class CSIv2Util method createSSLTaggedComponent.

/**
     * <p>
     * Return a top-level {@code IOP::TaggedComponent} to be stuffed into an IOR, containing a structure
     * {@code SSLIOP::SSL}, tagged as {@code TAG_SSL_SEC_TRANS}.
     * </p>
     * <p>
     * Should be called with non-null metadata, in which case we probably don't want to include security info in the IOR.
     * </p>
     *
     * @param metadata the metadata object that contains the SSL configuration info.
     * @param codec    the {@code Codec} used to encode the SSL component.
     * @param sslPort  an {@code int} representing the SSL port.
     * @param orb      a reference to the running {@code ORB}.
     * @return a {@code TaggedComponent} representing the encoded SSL component.
     */
public static TaggedComponent createSSLTaggedComponent(IORSecurityConfigMetaData metadata, Codec codec, int sslPort, ORB orb) {
    if (metadata == null) {
        IIOPLogger.ROOT_LOGGER.debug("Method createSSLTaggedComponent() called with null metadata");
        return null;
    }
    if (sslPort == 0) {
        // no support for transport security.
        return null;
    }
    TaggedComponent tc;
    try {
        int supports = createTargetSupports(metadata.getTransportConfig());
        int requires = createTargetRequires(metadata.getTransportConfig());
        SSL ssl = new SSL((short) supports, (short) requires, (short) sslPort);
        Any any = orb.create_any();
        SSLHelper.insert(any, ssl);
        byte[] componentData = codec.encode_value(any);
        tc = new TaggedComponent(TAG_SSL_SEC_TRANS.value, componentData);
    } catch (InvalidTypeForEncoding e) {
        throw IIOPLogger.ROOT_LOGGER.unexpectedException(e);
    }
    return tc;
}
Also used : TaggedComponent(org.omg.IOP.TaggedComponent) SSL(org.omg.SSLIOP.SSL) Any(org.omg.CORBA.Any) InvalidTypeForEncoding(org.omg.IOP.CodecPackage.InvalidTypeForEncoding)

Example 23 with Any

use of org.omg.CORBA.Any in project wildfly by wildfly.

the class CSIv2Util method createSecurityTaggedComponent.

/**
     * <p>
     * Return a top-level {@code IOP:TaggedComponent} to be stuffed into an IOR, containing a {@code org.omg.CSIIOP}.
     * {@code CompoundSecMechList}, tagged as {@code TAG_CSI_SEC_MECH_LIST}. Only one such component can exist inside
     * an IOR.
     * </p>
     * <p>
     * Should be called with non-null metadata, in which case we probably don't want to include security info in the IOR.
     * </p>
     *
     * @param metadata the metadata object that contains the CSIv2 security configuration info.
     * @param codec    the {@code Codec} used to encode the CSIv2 security component.
     * @param sslPort  an {@code int} representing the SSL port.
     * @param orb      a reference to the running {@code ORB}.
     * @return a {@code TaggedComponent} representing the encoded CSIv2 security component.
     */
public static TaggedComponent createSecurityTaggedComponent(IORSecurityConfigMetaData metadata, Codec codec, int sslPort, ORB orb) {
    if (metadata == null) {
        IIOPLogger.ROOT_LOGGER.debug("Method createSecurityTaggedComponent() called with null metadata");
        return null;
    }
    TaggedComponent tc;
    // get the the supported security mechanisms.
    CompoundSecMech[] mechList = createCompoundSecMechanisms(metadata, codec, sslPort, orb);
    // the above is wrapped into a org.omg.CSIIOP.CompoundSecMechList structure, which is NOT a CompoundSecMech[].
    // we don't support stateful/reusable security contexts (false).
    CompoundSecMechList csmList = new CompoundSecMechList(false, mechList);
    // finally, the CompoundSecMechList must be encoded as a TaggedComponent
    try {
        Any any = orb.create_any();
        CompoundSecMechListHelper.insert(any, csmList);
        byte[] b = codec.encode_value(any);
        tc = new TaggedComponent(TAG_CSI_SEC_MECH_LIST.value, b);
    } catch (InvalidTypeForEncoding e) {
        throw IIOPLogger.ROOT_LOGGER.unexpectedException(e);
    }
    return tc;
}
Also used : CompoundSecMechList(org.omg.CSIIOP.CompoundSecMechList) TaggedComponent(org.omg.IOP.TaggedComponent) CompoundSecMech(org.omg.CSIIOP.CompoundSecMech) Any(org.omg.CORBA.Any) InvalidTypeForEncoding(org.omg.IOP.CodecPackage.InvalidTypeForEncoding)

Example 24 with Any

use of org.omg.CORBA.Any in project wildfly by wildfly.

the class CSIv2Util method encodeInitialContextToken.

/**
     * <p>
     * ASN.1-encode an {@code InitialContextToken} as defined in RFC 2743, Section 3.1, "Mechanism-Independent Token
     * Format", pp. 81-82. The encoded token contains the ASN.1 tag 0x60, followed by a token length (which is itself
     * stored in a variable-length format and takes 1 to 5 bytes), the GSSUP mechanism identifier, and a mechanism-specific
     * token, which in this case is a CDR encapsulation of the GSSUP {@code InitialContextToken} in the {@code authToken}
     * parameter.
     * </p>
     *
     * @param authToken the {@code InitialContextToken} to be encoded.
     * @param codec     the {@code Codec} used to encode the token.
     * @return a {@code byte[]} representing the encoded token.
     */
public static byte[] encodeInitialContextToken(InitialContextToken authToken, Codec codec) {
    byte[] out;
    Any any = ORB.init().create_any();
    InitialContextTokenHelper.insert(any, authToken);
    try {
        out = codec.encode_value(any);
    } catch (Exception e) {
        return new byte[0];
    }
    int length = out.length + gssUpMechOidArray.length;
    int n;
    if (length < (1 << 7)) {
        n = 0;
    } else if (length < (1 << 8)) {
        n = 1;
    } else if (length < (1 << 16)) {
        n = 2;
    } else if (length < (1 << 24)) {
        n = 3;
    } else {
        // if (length < (1 << 32))
        n = 4;
    }
    byte[] encodedToken = new byte[2 + n + length];
    encodedToken[0] = 0x60;
    if (n == 0) {
        encodedToken[1] = (byte) length;
    } else {
        encodedToken[1] = (byte) (n | 0x80);
        switch(n) {
            case 1:
                encodedToken[2] = (byte) length;
                break;
            case 2:
                encodedToken[2] = (byte) (length >> 8);
                encodedToken[3] = (byte) length;
                break;
            case 3:
                encodedToken[2] = (byte) (length >> 16);
                encodedToken[3] = (byte) (length >> 8);
                encodedToken[4] = (byte) length;
                break;
            default:
                // case 4:
                encodedToken[2] = (byte) (length >> 24);
                encodedToken[3] = (byte) (length >> 16);
                encodedToken[4] = (byte) (length >> 8);
                encodedToken[5] = (byte) length;
        }
    }
    System.arraycopy(gssUpMechOidArray, 0, encodedToken, 2 + n, gssUpMechOidArray.length);
    System.arraycopy(out, 0, encodedToken, 2 + n + gssUpMechOidArray.length, out.length);
    return encodedToken;
}
Also used : Any(org.omg.CORBA.Any) GSSException(org.ietf.jgss.GSSException)

Example 25 with Any

use of org.omg.CORBA.Any in project wildfly by wildfly.

the class ElytronSASClientInterceptor method receive_exception.

@Override
public void receive_exception(ClientRequestInfo ri) throws ForwardRequest {
    try {
        ServiceContext sc = ri.get_reply_service_context(SAS_CONTEXT_ID);
        Any msg = codec.decode_value(sc.context_data, SASContextBodyHelper.type());
        SASContextBody contextBody = SASContextBodyHelper.extract(msg);
        // At this point contextBody may contain either a CompleteEstablishContext message or a ContextError message.
        // Neither message requires any treatment. We decoded the context body just to check that it contains
        // a well-formed message.
        IIOPLogger.ROOT_LOGGER.tracef("receive_exception: got SAS reply, type %d", contextBody.discriminator());
    } catch (BAD_PARAM e) {
    // no service context with sasContextId: do nothing.
    } catch (FormatMismatch | TypeMismatch e) {
        throw IIOPLogger.ROOT_LOGGER.errorParsingSASReply(e, 0, CompletionStatus.COMPLETED_MAYBE);
    }
}
Also used : ServiceContext(org.omg.IOP.ServiceContext) BAD_PARAM(org.omg.CORBA.BAD_PARAM) SASContextBody(org.omg.CSI.SASContextBody) Any(org.omg.CORBA.Any) FormatMismatch(org.omg.IOP.CodecPackage.FormatMismatch) TypeMismatch(org.omg.IOP.CodecPackage.TypeMismatch)

Aggregations

Any (org.omg.CORBA.Any)89 MonitorBlob (alma.TMCDB.MonitorBlob)20 MonitorDataBlock (alma.TMCDB.MonitorDataBlock)20 ComponentData (alma.acs.monitoring.DAO.ComponentData)15 ServiceContext (org.omg.IOP.ServiceContext)11 SASContextBody (org.omg.CSI.SASContextBody)10 AcsJException (alma.acs.exceptions.AcsJException)9 BAD_PARAM (org.omg.CORBA.BAD_PARAM)9 Description (org.omg.CORBA.ContainedPackage.Description)9 FormatMismatch (org.omg.IOP.CodecPackage.FormatMismatch)8 TypeMismatch (org.omg.IOP.CodecPackage.TypeMismatch)8 TMCDB.doubleBlobData (alma.TMCDB.doubleBlobData)7 TMCDB.floatBlobData (alma.TMCDB.floatBlobData)7 ContainedOperations (org.omg.CORBA.ContainedOperations)7 TMCDB.doubleSeqBlobData (alma.TMCDB.doubleSeqBlobData)6 TMCDB.floatSeqBlobData (alma.TMCDB.floatSeqBlobData)6 MonitorPointTimeSeries (alma.acs.monitoring.MonitorPointTimeSeries)6 MonitorPointValue (alma.acs.monitoring.MonitorPointValue)6 Test (org.junit.Test)6 InvalidTypeForEncoding (org.omg.IOP.CodecPackage.InvalidTypeForEncoding)6