/*
* Copyright 2015 Red Hat, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.vertx.ext.auth;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.codegen.annotations.Fluent;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonObject;
import java.security.KeyStore;
import java.util.HashMap;
import java.util.Map;
Options describing how an JWT KeyStore should behave. This is an extended version core's KeyStoreOptions
. This extension sets the default type to the runtime keystore type (for compatibility, reasons) plus it allows the configuration of password per key using setPasswordProtection(Map<String,String>)
.
Author: Paulo Lopes
/**
* Options describing how an JWT KeyStore should behave.
* This is an extended version core's {@link io.vertx.core.net.KeyStoreOptions}.
* <p>
* This extension sets the default type to the runtime keystore type (for compatibility, reasons)
* plus it allows the configuration of password per key using {@link #setPasswordProtection(Map)}.
*
* @author <a href="mailto:plopes@redhat.com">Paulo Lopes</a>
*/
@DataObject(generateConverter = true)
public class KeyStoreOptions {
// Defaults
private static final String DEFAULT_TYPE = KeyStore.getDefaultType();
private String type;
private String provider;
private String password;
private String path;
private Buffer value;
private Map<String, String> passwordProtection;
Default constructor
/**
* Default constructor
*/
public KeyStoreOptions() {
type = DEFAULT_TYPE;
}
Copy constructor
Params: - other – the options to copy
/**
* Copy constructor
*
* @param other the options to copy
*/
public KeyStoreOptions(KeyStoreOptions other) {
type = other.getType();
if (type == null) {
type = DEFAULT_TYPE;
}
password = other.getPassword();
path = other.getPath();
value = other.getValue();
passwordProtection = other.getPasswordProtection();
}
Constructor to create an options from JSON
Params: - json – the JSON
/**
* Constructor to create an options from JSON
*
* @param json the JSON
*/
public KeyStoreOptions(JsonObject json) {
KeyStoreOptionsConverter.fromJson(json, this);
}
@Fluent
public KeyStoreOptions setType(String type) {
this.type = type;
return this;
}
@Fluent
public KeyStoreOptions setProvider(String provider) {
this.provider = provider;
return this;
}
@Fluent
public KeyStoreOptions setPassword(String password) {
this.password = password;
return this;
}
@Fluent
public KeyStoreOptions setPath(String path) {
this.path = path;
return this;
}
@Fluent
public KeyStoreOptions setValue(Buffer value) {
this.value = value;
return this;
}
@Fluent
public KeyStoreOptions setPasswordProtection(Map<String, String> passwordProtection) {
this.passwordProtection = passwordProtection;
return this;
}
public String getType() {
return type;
}
public String getProvider() {
return provider;
}
@Fluent
public String getPassword() {
return password;
}
public String getPath() {
return path;
}
public Buffer getValue() {
return value;
}
public Map<String, String> getPasswordProtection() {
return passwordProtection;
}
public KeyStoreOptions putPasswordProtection(String alias, String password) {
if (passwordProtection == null) {
passwordProtection = new HashMap<>();
}
this.passwordProtection.put(alias, password);
return this;
}
}