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}