1 /* 2 * Copyright (c) 2008 Sonatype, Inc. All rights reserved. 3 * 4 * This program is licensed to you under the Apache License Version 2.0, 5 * and you may not use this file except in compliance with the Apache License Version 2.0. 6 * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0. 7 * 8 * Unless required by applicable law or agreed to in writing, 9 * software distributed under the Apache License Version 2.0 is distributed on an 10 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under. 12 */ 13 14 package org.codehaus.plexus.components.secdispatcher; 15 16 import java.util.Map; 17 18 import static java.util.Objects.requireNonNull; 19 20 /** 21 * Dispatcher. 22 * 23 * @author Oleg Gusakov 24 * @version $Id$ 25 * 26 */ 27 public interface Dispatcher { 28 /** 29 * The "encrypt payload" prepared by dispatcher. 30 */ 31 final class EncryptPayload { 32 private final Map<String, String> attributes; 33 private final String encrypted; 34 35 public EncryptPayload(Map<String, String> attributes, String encrypted) { 36 this.attributes = requireNonNull(attributes); 37 this.encrypted = requireNonNull(encrypted); 38 } 39 40 public Map<String, String> getAttributes() { 41 return attributes; 42 } 43 44 public String getEncrypted() { 45 return encrypted; 46 } 47 } 48 49 /** 50 * Encrypt given plaintext string. Implementation must return at least same attributes it got, but may add more 51 * attributes to returned payload. 52 * 53 * @param str string to encrypt, never {@code null} 54 * @param attributes attributes, never {@code null} 55 * @param config configuration from settings-security.xml, never {@code null} 56 * @return encrypted string and attributes in {@link EncryptPayload} 57 */ 58 EncryptPayload encrypt(String str, Map<String, String> attributes, Map<String, String> config) 59 throws SecDispatcherException; 60 61 /** 62 * Decrypt given encrypted string. 63 * 64 * @param str string to decrypt, never {@code null} 65 * @param attributes attributes, never {@code null} 66 * @param config configuration from settings-security.xml, never {@code null} 67 * @return decrypted string 68 */ 69 String decrypt(String str, Map<String, String> attributes, Map<String, String> config) 70 throws SecDispatcherException; 71 72 /** 73 * Validates dispatcher configuration. 74 */ 75 SecDispatcher.ValidationResponse validateConfiguration(Map<String, String> config); 76 }