Return-Path: Delivered-To: apmail-incubator-harmony-commits-archive@www.apache.org Received: (qmail 103 invoked from network); 15 Nov 2006 04:52:43 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Nov 2006 04:52:43 -0000 Received: (qmail 99595 invoked by uid 500); 15 Nov 2006 04:52:53 -0000 Delivered-To: apmail-incubator-harmony-commits-archive@incubator.apache.org Received: (qmail 99561 invoked by uid 500); 15 Nov 2006 04:52:53 -0000 Mailing-List: contact harmony-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-commits@incubator.apache.org Received: (qmail 99547 invoked by uid 99); 15 Nov 2006 04:52:53 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Nov 2006 20:52:53 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Nov 2006 20:52:41 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 01E461A9846; Tue, 14 Nov 2006 20:52:10 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r475121 - in /incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509: AccessDescription.java Extension.java InfoAccessSyntax.java Date: Wed, 15 Nov 2006 04:52:10 -0000 To: harmony-commits@incubator.apache.org From: smishura@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061115045211.01E461A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: smishura Date: Tue Nov 14 20:52:10 2006 New Revision: 475121 URL: http://svn.apache.org/viewvc?view=rev&rev=475121 Log: Apply patch for HARMONY-2182 ([classlib][security] Add classes to org.apache.harmony.security.x509) Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/AccessDescription.java (with props) incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/InfoAccessSyntax.java (with props) Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/AccessDescription.java URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/AccessDescription.java?view=auto&rev=475121 ============================================================================== --- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/AccessDescription.java (added) +++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/AccessDescription.java Tue Nov 14 20:52:10 2006 @@ -0,0 +1,121 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.harmony.security.x509; + +import org.apache.harmony.security.asn1.ASN1Oid; +import org.apache.harmony.security.asn1.ASN1Sequence; +import org.apache.harmony.security.asn1.ASN1Type; +import org.apache.harmony.security.asn1.BerInputStream; +import org.apache.harmony.security.asn1.ObjectIdentifier; + +/** + * The class incapsulates the ASN.1 DER encoding/decoding work + * with the AccessDescription which is a part of X.509 framework + * (as specified in RFC 3280 - + * Internet X.509 Public Key Infrastructure. + * Certificate and Certificate Revocation List (CRL) Profile. + * http://www.ietf.org/rfc/rfc3280.txt): + * + * AccessDescription ::= SEQUENCE { + * accessMethod OBJECT IDENTIFIER, + * accessLocation GeneralName } + * + */ +public class AccessDescription { + + // the value of access method + private final String accessMethod; + + // the value of accessLocation + private final GeneralName accessLocation; + + private byte [] encoding; + + public AccessDescription(String accessMethod, GeneralName accessLocation) { + this.accessMethod = accessMethod; + this.accessLocation = accessLocation; + } + + private AccessDescription(String accessMethod, GeneralName accessLocation, + byte[] encoding) { + this.accessMethod = accessMethod; + this.accessLocation = accessLocation; + this.encoding = encoding; + } + + /** + * Returns ASN.1 encoded form of this X.509 AccessDescription. + * @return a byte array containing ASN.1 encoded form. + */ + public byte[] getEncoded() { + if (encoding == null) { + encoding = ASN1.encode(this); + } + return encoding; + } + + public String toString() { + StringBuffer res = new StringBuffer(); + res.append("\n-- AccessDescription:"); //$NON-NLS-1$ + res.append("\naccessMethod: "); //$NON-NLS-1$ + res.append(accessMethod); + res.append("\naccessLocation: "); //$NON-NLS-1$ + res.append(accessLocation); + res.append("\n-- AccessDescription END\n"); //$NON-NLS-1$ + return res.toString(); + } + + /** + * @return Returns the accessLocation. + */ + public GeneralName getAccessLocation() { + return accessLocation; + } + + /** + * @return Returns the accessMethod. + */ + public String getAccessMethod() { + return accessMethod; + } + + /** + * Custom AccessDescription DER encoder/decoder + */ + public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] { + ASN1Oid.getInstance(), + GeneralName.ASN1 }) { + + protected Object getDecodedObject(BerInputStream in) { + Object[] values = (Object[]) in.content; + return new AccessDescription( + ObjectIdentifier.toString((int[]) values[0]), + (GeneralName) values[1], in.getEncoded()); + } + + protected void getValues(Object object, Object[] values) { + + AccessDescription ad = (AccessDescription) object; + + values[0] = ObjectIdentifier.toIntArray(ad.accessMethod); + values[1] = ad.accessLocation; + } + }; + +} + Propchange: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/AccessDescription.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java?view=diff&rev=475121&r1=475120&r2=475121 ============================================================================== --- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java (original) +++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java Tue Nov 14 20:52:10 2006 @@ -315,6 +315,8 @@ extnValueObject = new CRLNumber(extnValue); } else if (oidEquals(extnID, ISSUING_DISTR_POINTS)) { extnValueObject = IssuingDistributionPoint.decode(extnValue); + } else if (oidEquals(extnID, AUTHORITY_INFO_ACCESS)) { + extnValueObject = InfoAccessSyntax.decode(extnValue); } } Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/InfoAccessSyntax.java URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/InfoAccessSyntax.java?view=auto&rev=475121 ============================================================================== --- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/InfoAccessSyntax.java (added) +++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/InfoAccessSyntax.java Tue Nov 14 20:52:10 2006 @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.harmony.security.x509; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import org.apache.harmony.security.asn1.ASN1SequenceOf; +import org.apache.harmony.security.asn1.ASN1Type; +import org.apache.harmony.security.asn1.BerInputStream; +import org.apache.harmony.security.internal.nls.Messages; + +/** + * The class incapsulates the ASN.1 DER encoding/decoding work + * with the SubjectInfoAccessSyntax and SubjectInfoAccessSyntax + * which are a part of X.509 framework + * (as specified in RFC 3280 - + * Internet X.509 Public Key Infrastructure. + * Certificate and Certificate Revocation List (CRL) Profile. + * http://www.ietf.org/rfc/rfc3280.txt): + * + * SubjectInfoAccessSyntax ::= + * SEQUENCE SIZE (1..MAX) OF AccessDescriptions + + * AuthorityInfoAccessSyntax ::= + * SEQUENCE SIZE (1..MAX) OF AccessDescriptions + * + * AccessDescription ::= SEQUENCE { + * accessMethod OBJECT IDENTIFIER, + * accessLocation GeneralName } + * + */ +public class InfoAccessSyntax extends ExtensionValue { + + private final List accessDescriptions; + + public InfoAccessSyntax(List accessDescriptions) throws IOException { + this(accessDescriptions, null); + } + + private InfoAccessSyntax(List accessDescriptions, byte[] encoding) + throws IOException { + if (accessDescriptions == null || accessDescriptions.isEmpty()) { + // "AccessDescriptions list is null or empty" + throw new IOException(Messages.getString("security.1A3")); //$NON-NLS-1$ + } + this.accessDescriptions = accessDescriptions; + this.encoding = encoding; + } + + public List getAccessDescriptions() { + return new ArrayList(accessDescriptions); + } + + /** + * Returns ASN.1 encoded form of this X.509 InfoAccessSyntax. + * @return a byte array containing ASN.1 encoded form. + */ + public byte[] getEncoded() { + if (encoding == null) { + encoding = ASN1.encode(this); + } + return encoding; + } + + public static InfoAccessSyntax decode(byte[] encoding) throws IOException { + return ((InfoAccessSyntax) ASN1.decode(encoding)); + } + + public String toString() { + StringBuffer res = new StringBuffer(); + res.append("\n---- InfoAccessSyntax:"); //$NON-NLS-1$ + if (accessDescriptions != null) { + for (Iterator it = accessDescriptions.iterator(); it.hasNext();) { + res.append('\n'); + res.append(it.next()); + } + } + res.append("\n---- InfoAccessSyntax END\n"); //$NON-NLS-1$ + return res.toString(); + } + + /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("AccessDescriptions:\n"); //$NON-NLS-1$ + if (accessDescriptions == null || accessDescriptions.isEmpty()) { + buffer.append("NULL\n"); //$NON-NLS-1$ + } else { + Iterator itr = accessDescriptions.iterator(); + while (itr.hasNext()) { + buffer.append(itr.next().toString()); + } + } + } + + + /** + * ASN.1 DER X.509 AuthorityInfoAccessSyntax and SubjectInfoAccessSyntax + * encoder/decoder class. + */ + public static final ASN1Type ASN1 = new ASN1SequenceOf(AccessDescription.ASN1) { + + public Object getDecodedObject(BerInputStream in) throws IOException { + return new InfoAccessSyntax((List)in.content, in.getEncoded()); + } + + public Collection getValues(Object object) { + InfoAccessSyntax aias = (InfoAccessSyntax) object; + return aias.accessDescriptions; + } + }; + +} + Propchange: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/InfoAccessSyntax.java ------------------------------------------------------------------------------ svn:eol-style = native