| /* | |
| * Copyright 2012 gitblit.com. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package com.gitblit.authority; | |
| import java.util.Date; | |
| import org.eclipse.jgit.lib.Config; | |
| import org.eclipse.jgit.lib.Config.SectionParser; | |
| import com.gitblit.utils.StringUtils; | |
| import com.gitblit.utils.TimeUtils; | |
| import com.gitblit.utils.X509Utils.X509Metadata; | |
| /** | |
| * Certificate config file parser. | |
| * | |
| * @author James Moger | |
| */ | |
| public class NewCertificateConfig { | |
| public static final SectionParser<NewCertificateConfig> KEY = new SectionParser<NewCertificateConfig>() { | |
| @Override | |
| public NewCertificateConfig parse(final Config cfg) { | |
| return new NewCertificateConfig(cfg); | |
| } | |
| }; | |
| public String OU; | |
| public String O; | |
| public String L; | |
| public String ST; | |
| public String C; | |
| public int duration; | |
| private NewCertificateConfig(final Config c) { | |
| duration = c.getInt("new", null, "duration", 0); | |
| OU = c.getString("new", null, "organizationalUnit"); | |
| O = c.getString("new", null, "organization"); | |
| L = c.getString("new", null, "locality"); | |
| ST = c.getString("new", null, "stateProvince"); | |
| C = c.getString("new", null, "countryCode"); | |
| } | |
| public void update(X509Metadata metadata) { | |
| update(metadata, "OU", OU); | |
| update(metadata, "O", O); | |
| update(metadata, "L", L); | |
| update(metadata, "ST", ST); | |
| update(metadata, "C", C); | |
| if (duration > 0) { | |
| metadata.notAfter = new Date(System.currentTimeMillis() + duration*TimeUtils.ONEDAY); | |
| } | |
| } | |
| private void update(X509Metadata metadata, String oid, String value) { | |
| if (!StringUtils.isEmpty(value)) { | |
| metadata.oids.put(oid, value); | |
| } | |
| } | |
| public void store(Config c, X509Metadata metadata) { | |
| store(c, "new", "organizationalUnit", metadata.getOID("OU", null)); | |
| store(c, "new", "organization", metadata.getOID("O", null)); | |
| store(c, "new", "locality", metadata.getOID("L", null)); | |
| store(c, "new", "stateProvince", metadata.getOID("ST", null)); | |
| store(c, "new", "countryCode", metadata.getOID("C", null)); | |
| if (duration <= 0) { | |
| c.unset("new", null, "duration"); | |
| } else { | |
| c.setInt("new", null, "duration", duration); | |
| } | |
| } | |
| private void store(Config c, String section, String name, String value) { | |
| if (StringUtils.isEmpty(value)) { | |
| c.unset(section, null, name); | |
| } else { | |
| c.setString(section, null, name, value); | |
| } | |
| } | |
| } |