1+ /*
2+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3+ *
4+ * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
5+ *
6+ * The contents of this file are subject to the terms of either the GNU
7+ * General Public License Version 2 only ("GPL") or the Common Development
8+ * and Distribution License("CDDL") (collectively, the "License"). You
9+ * may not use this file except in compliance with the License. You can
10+ * obtain a copy of the License at
11+ * https://oss.oracle.com/licenses/CDDL+GPL-1.1
12+ * or LICENSE.txt. See the License for the specific
13+ * language governing permissions and limitations under the License.
14+ *
15+ * When distributing the software, include this License Header Notice in each
16+ * file and include the License file at LICENSE.txt.
17+ *
18+ * GPL Classpath Exception:
19+ * Oracle designates this particular file as subject to the "Classpath"
20+ * exception as provided by Oracle in the GPL Version 2 section of the License
21+ * file that accompanied this code.
22+ *
23+ * Modifications:
24+ * If applicable, add the following below the License Header, with the fields
25+ * enclosed by brackets [] replaced by your own identifying information:
26+ * "Portions Copyright [year] [name of copyright owner]"
27+ *
28+ * Contributor(s):
29+ * If you wish your version of this file to be governed by only the CDDL or
30+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
31+ * elects to include this software in this distribution under the [CDDL or GPL
32+ * Version 2] license." If you don't indicate a single choice of license, a
33+ * recipient has the option to distribute your version of this file under
34+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
35+ * its licensees as provided above. However, if you add GPL Version 2 code
36+ * and therefore, elected the GPL Version 2 license, then the option applies
37+ * only if the new code is made subject to such option by the copyright
38+ * holder.
39+ */
40+
41+ package org .glassfish .soteria .test ;
42+ import java .util .Map ;
43+
44+ import javax .enterprise .context .Dependent ;
45+ import javax .security .enterprise .identitystore .PasswordHash ;
46+
47+ @ Dependent
48+ public class PlaintextPasswordHash implements PasswordHash {
49+
50+ @ Override
51+ public void initialize (Map <String , String > parameters ) {
52+
53+ }
54+
55+ @ Override
56+ public String generate (char [] password ) {
57+ return new String (password );
58+ }
59+
60+ @ Override
61+ public boolean verify (char [] password , String hashedPassword ) {
62+ //don't bother with constant time comparison; more portable
63+ //this way, and algorithm will be used only for testing.
64+ return (password != null && password .length > 0 &&
65+ hashedPassword != null && hashedPassword .length () > 0 &&
66+ hashedPassword .equals (new String (password )));
67+ }
68+ }
0 commit comments