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