package com.airlock.iam.oauth2.application.configuration.token;

import com.airlock.iam.common.domain.model.jwt.SignatureVerificationInformation;
import com.airlock.iam.common.domain.service.jwt.signature.PrivateKeyJwtSigner;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.license.PluginLicenseRestriction;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;

@Plugin(
   description = "JWT Access Tokens will not be signed.<p><b>Security Warning:</b> The consumer must not trust the content of the JWT and therefore not use it as authenticated data.",
   displayName = "JWT Access Token No Signature"
)
@PluginLicenseRestriction(moduleAffiliation = "OAuthServer")
public final class JwtAccessTokenNoSignature implements JwtAccessTokenSignature {
   public static final String JWT_ACCESS_TOKEN_NO_SIGNATURE_DISPLAY_NAME = "JWT Access Token No Signature";

   @Override
   public Optional<PrivateKeyJwtSigner> getOptionalSigner() {
      return Optional.empty();
   }

   @Override
   public Optional<SignatureVerificationInformation> getOptionalSignatureVerificationInformation() {
      return Optional.empty();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static JwtAccessTokenNoSignature.JwtAccessTokenNoSignatureBuilder builder() {
      return new JwtAccessTokenNoSignature.JwtAccessTokenNoSignatureBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class JwtAccessTokenNoSignatureBuilder {
      @SuppressFBWarnings(justification = "generated code")
      JwtAccessTokenNoSignatureBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public JwtAccessTokenNoSignature build() {
         return new JwtAccessTokenNoSignature();
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "JwtAccessTokenNoSignature.JwtAccessTokenNoSignatureBuilder()";
      }
   }
}
