001package com.nimbusds.oauth2.sdk.jose.jwk;
002
003
004import java.util.List;
005
006import com.nimbusds.jose.jwk.JWK;
007import com.nimbusds.jose.jwk.JWKSelector;
008import com.nimbusds.jose.jwk.JWKSet;
009import com.nimbusds.jose.jwk.OctetSequenceKey;
010import com.nimbusds.oauth2.sdk.auth.Secret;
011import com.nimbusds.oauth2.sdk.id.ClientID;
012import com.nimbusds.oauth2.sdk.id.Identifier;
013import net.jcip.annotations.Immutable;
014
015
016/**
017 * Immutable client secret.
018 */
019@Immutable
020public final class ImmutableClientSecret extends ImmutableJWKSet {
021
022
023        /**
024         * Creates a new immutable client secret.
025         *
026         * @param id     The client identifier. Must not be {@code null}.
027         * @param secret The client secret. Must not be {@code null}.
028         */
029        public ImmutableClientSecret(final ClientID id, final Secret secret) {
030
031                this(id, new OctetSequenceKey.Builder(secret.getValueBytes()).build());
032        }
033
034
035        /**
036         * Creates a new immutable client secret.
037         *
038         * @param id     The client identifier. Must not be {@code null}.
039         * @param secret The client secret. Must not be {@code null}.
040         */
041        public ImmutableClientSecret(final ClientID id, final OctetSequenceKey secret) {
042                super(id, new JWKSet(secret));
043        }
044
045
046        /**
047         * Returns the client secret.
048         *
049         * @return The client secret.
050         */
051        public OctetSequenceKey getClientSecret() {
052
053                return (OctetSequenceKey) getJWKSet().getKeys().get(0);
054        }
055
056
057        @Override
058        public List<JWK> get(final Identifier id, final JWKSelector jwkSelector) {
059                // Owner not checked
060                return jwkSelector.select(getJWKSet());
061        }
062}