001 package com.nimbusds.jose;
002
003
004 import java.util.Map;
005 import java.util.Set;
006
007 import net.minidev.json.JSONObject;
008
009 import com.nimbusds.jose.util.Base64URL;
010
011
012 /**
013 * Read-only view of a {@link Header header}.
014 *
015 * @author Vladimir Dzhuvinov
016 * @version $version$ (2012-12-09)
017 */
018 public interface ReadOnlyHeader {
019
020
021 /**
022 * Gets the algorithm ({@code alg}) parameter.
023 *
024 * @return The algorithm parameter.
025 */
026 public Algorithm getAlgorithm();
027
028
029 /**
030 * Gets the type ({@code typ}) parameter.
031 *
032 * @return The type parameter, {@code null} if not specified.
033 */
034 public JOSEObjectType getType();
035
036
037 /**
038 * Gets the content type ({@code cty}) parameter.
039 *
040 * @return The content type parameter, {@code null} if not specified.
041 */
042 public String getContentType();
043
044
045 /**
046 * Gets a custom (non-reserved) parameter.
047 *
048 * @param name The name of the custom parameter. Must not be
049 * {@code null}.
050 *
051 * @return The custom parameter, {@code null} if not specified.
052 */
053 public Object getCustomParameter(final String name);
054
055
056 /**
057 * Gets the custom (non-reserved) parameters.
058 *
059 * @return The custom parameters, as a unmodifiable map, empty map if
060 * none.
061 */
062 public Map<String,Object> getCustomParameters();
063
064
065 /**
066 * Gets the names of all included parameters (reserved and custom) in
067 * the header instance.
068 *
069 * @return The included parameters.
070 */
071 public Set<String> getIncludedParameters();
072
073
074 /**
075 * Returns a JSON object representation of the header. All custom
076 * parameters are included if they serialise to a JSON entity and
077 * their names don't conflict with the reserved ones.
078 *
079 * @return The JSON object representation of the header.
080 */
081 public JSONObject toJSONObject();
082
083
084 /**
085 * Returns a Base64URL representation of the header.
086 *
087 * @return The Base64URL representation of the header.
088 */
089 public Base64URL toBase64URL();
090 }