001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.crypto.asn1.x509;
019
020 import java.io.IOException;
021
022 import org.apache.geronimo.crypto.asn1.DERBMPString;
023 import org.apache.geronimo.crypto.asn1.DERIA5String;
024 import org.apache.geronimo.crypto.asn1.DERObject;
025 import org.apache.geronimo.crypto.asn1.DERObjectIdentifier;
026 import org.apache.geronimo.crypto.asn1.DERPrintableString;
027 import org.apache.geronimo.crypto.asn1.DERUTF8String;
028
029 /**
030 * The default converter for X509 DN entries when going from their
031 * string value to
032 */
033 public class X509DefaultEntryConverter
034 extends X509NameEntryConverter
035 {
036 /**
037 * Apply default coversion for the given value depending on the oid
038 * and the character range of the value.
039 *
040 * @param oid the object identifier for the DN entry
041 * @param value the value associated with it
042 * @return the ASN.1 equivalent for the string value.
043 */
044 public DERObject getConvertedValue(
045 DERObjectIdentifier oid,
046 String value)
047 {
048 if (value.length() != 0 && value.charAt(0) == '#')
049 {
050 try
051 {
052 return convertHexEncoded(value, 1);
053 }
054 catch (IOException e)
055 {
056 throw new RuntimeException("can't recode value for oid " + oid.getId(), e);
057 }
058 }
059 else if (oid.equals(X509Name.EmailAddress))
060 {
061 return new DERIA5String(value);
062 }
063 else if (canBePrintable(value))
064 {
065 return new DERPrintableString(value);
066 }
067 else if (canBeUTF8(value))
068 {
069 return new DERUTF8String(value);
070 }
071
072 return new DERBMPString(value);
073 }
074 }