All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.msl.msg.RespondMessageContext Maven / Gradle / Ivy

There is a newer version: 1.2226.0
Show newest version
/**
 * Copyright (c) 2015 Netflix, Inc.  All rights reserved.
 */
package com.netflix.msl.msg;

import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.netflix.msl.MslCryptoException;
import com.netflix.msl.MslEncodingException;
import com.netflix.msl.MslException;
import com.netflix.msl.MslKeyExchangeException;
import com.netflix.msl.MslMessageException;
import com.netflix.msl.ProxyMslError;
import com.netflix.msl.crypto.ICryptoContext;
import com.netflix.msl.keyx.KeyRequestData;
import com.netflix.msl.tokens.MslUser;
import com.netflix.msl.userauth.UserAuthenticationData;

/**
 * 

A trusted services network message context used to generate server * messages.

* * @author Wesley Miaw */ public class RespondMessageContext implements MessageContext { /** *

Create a new receive message context.

* * @param appdata the application data to include in the response. * @param entityServiceTokens entity-associated service token name/value * pairs. * @param userServiceTokens user-associated service token name/value pairs. * @param cryptoContext default service token crypto context. * @param user optional user to attach to the response. May be {@code null}. * @param dbgCtx optional message debug context. May be {@code null}. */ public RespondMessageContext(final byte[] appdata, final Map entityServiceTokens, final Map userServiceTokens, final ICryptoContext cryptoContext, final MslUser user, final MessageDebugContext dbgCtx) { this.appdata = appdata; this.entityServiceTokens = entityServiceTokens; this.userServiceTokens = userServiceTokens; final Map cryptoContexts = new HashMap(); cryptoContexts.put("", cryptoContext); this.cryptoContexts = Collections.unmodifiableMap(cryptoContexts); this.user = user; this.dbgCtx = dbgCtx; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getCryptoContexts() */ @Override public Map getCryptoContexts() { return cryptoContexts; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getRemoteEntityIdentity() */ @Override public String getRemoteEntityIdentity() { return null; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#isEncrypted() */ @Override public boolean isEncrypted() { return true; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#isIntegrityProtected() */ @Override public boolean isIntegrityProtected() { return true; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#isNonReplayable() */ @Override public boolean isNonReplayable() { return false; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#isRequestingTokens() */ @Override public boolean isRequestingTokens() { return false; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getUserId() */ @Override public String getUserId() { return null; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getUserAuthData(com.netflix.msl.msg.MessageContext.ReauthCode, boolean, boolean) */ @Override public UserAuthenticationData getUserAuthData(final ReauthCode reauthCode, final boolean renewable, final boolean required) { return null; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getUser() */ @Override public MslUser getUser() { return user; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getKeyRequestData() */ @Override public Set getKeyRequestData() throws MslKeyExchangeException { return null; } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#updateServiceTokens(com.netflix.msl.msg.MessageServiceTokenBuilder, boolean) */ @Override public void updateServiceTokens(final MessageServiceTokenBuilder builder, final boolean handshake) throws MslEncodingException, MslCryptoException, MslException { // Attach tokens. Throw an exception if a desired token cannot be // attached. for (final Map.Entry entry : entityServiceTokens.entrySet()) { final String name = entry.getKey(); final byte[] value = entry.getValue(); final boolean added = builder.addMasterBoundPrimaryServiceToken(name, value, true, null); if (!added) throw new MslMessageException(ProxyMslError.SERVICETOKEN_REQUIRES_MASTERTOKEN, name); } for (final Map.Entry entry : userServiceTokens.entrySet()) { final String name = entry.getKey(); final byte[] value = entry.getValue(); final boolean added = builder.addUserBoundPrimaryServiceToken(name, value, true, null); if (!added) throw new MslMessageException(ProxyMslError.SERVICETOKEN_REQUIRES_USERIDTOKEN, name); } } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#write(com.netflix.msl.msg.MessageOutputStream) */ @Override public void write(final MessageOutputStream output) throws IOException { output.write(appdata); output.close(); } /* (non-Javadoc) * @see com.netflix.msl.msg.MessageContext#getDebugContext() */ @Override public MessageDebugContext getDebugContext() { return dbgCtx; } /** Application data. */ private final byte[] appdata; /** Entity service tokens. */ private final Map entityServiceTokens; /** User service tokens. */ private final Map userServiceTokens; /** Service token crypto context. */ private final Map cryptoContexts; /** MSL user. */ private final MslUser user; /** Message debug context. */ private final MessageDebugContext dbgCtx; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy