Java Doc for ASN1Choice.java in  » Apache-Harmony-Java-SE » org-package » org » apache » harmony » security » asn1 » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Apache Harmony Java SE » org package » org.apache.harmony.security.asn1 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.apache.harmony.security.asn1.ASN1Type
      org.apache.harmony.security.asn1.ASN1Choice

All known Subclasses:   org.apache.harmony.jndi.provider.ldap.asn1.ASN1ChoiceWrap,
ASN1Choice
abstract public class ASN1Choice extends ASN1Type (Code)
This abstract class represents ASN.1 Choice type. To implement custom ASN.1 choice type an application class must provide implementation for the following methods: getIndex() getObjectToEncode() There are two ways to implement custom ASN.1 choice type: with application class that represents ASN.1 custom choice type or without. The key point is how a value of choice type is stored by application classes. For example, let's consider the following ASN.1 notations (see http://www.ietf.org/rfc/rfc3280.txt) Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } Validity ::= SEQUENCE { notBefore Time, notAfter Time } 1)First approach: No application class to represent ASN.1 Time notation The Time notation is a choice of different time formats: UTC and Generalized. Both of them are mapped to java.util.Date object, so an application class that represents ASN.1 Validity notation may keep values as Date objects. So a custom ASN.1 Time choice type should map its notation to Date object. class Time { // custom ASN.1 choice class: maps Time to is notation public static final ASN1Choice asn1 = new ASN1Choice(new ASN1Type[] { ASN1GeneralizedTime.asn1, ASN1UTCTime.asn1 }) { public int getIndex(java.lang.Object object) { return 0; // always encode as ASN1GeneralizedTime } public Object getObjectToEncode(Object object) { // A value to be encoded value is a Date object // pass it to custom time class return object; } }; } class Validity { private Date notBefore; // choice as Date private Date notAfter; // choice as Date ... // constructors and other methods go here // custom ASN.1 sequence class: maps Validity class to is notation public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] {Time.asn1, Time.asn1 }) { protected Object getObject(Object[] values) { // ASN.1 Time choice passed Data object - use it return new Validity((Date) values[0], (Date) values[1]); } protected void getValues(Object object, Object[] values) { Validity validity = (Validity) object; // pass Date objects to ASN.1 Time choice values[0] = validity.notBefore; values[1] = validity.notAfter; } } } 2)Second approach: There is an application class to represent ASN.1 Time notation If it is a matter what time format should be used to decode/encode Date objects a class to represent ASN.1 Time notation must be created. For example, class Time { private Date utcTime; private Date gTime; ... // constructors and other methods go here // custom ASN.1 choice class: maps Time to is notation public static final ASN1Choice asn1 = new ASN1Choice(new ASN1Type[] { ASN1GeneralizedTime.asn1, ASN1UTCTime.asn1 }) { public Object getDecodedObject(BerInputStream in) { // create Time object to pass as decoded value Time time = new Time(); if (in.choiceIndex==0) { // we decoded GeneralizedTime // store decoded Date value in corresponding field time.gTime = in.content; // return it return time; } else { // we decoded UTCTime // store decoded Date value in corresponding field time.utcTime = in.content; // return it return time; } } public int getIndex(java.lang.Object object) { Time time = (Time)object; if(time.utcTime!=null){ // encode Date as UTCTime return 1; } else { // otherwise encode Date as GeneralizedTime return 0; } } public Object getObjectToEncode(Object object) { Time time = (Time)object; if(time.utcTime!=null){ // encode Date as UTCTime return 1; } else { // otherwise encode Date as GeneralizedTime return 0; } } }; } So now Validity class must keep all values in Time object and its custom ASN.1 sequence class must handle this class of objects class Validity { private Time notBefore; // now it is a Time!!! private Time notAfter; // now it is a Time!!! ... // constructors and other methods go here // custom ASN.1 sequence class: maps Validity class to is notation public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] {Time.asn1, Time.asn1 }) { protected Object getObject(Object[] values) { // We've gotten Time objects here !!! return new Validity((Time) values[0], (Time) values[1]); } protected void getValues(Object object, Object[] values) { Validity validity = (Validity) object; // pass Time objects to ASN.1 Time choice values[0] = validity.notBefore; values[1] = validity.notAfter; } } }
See Also:    http://asn1.elibel.tm.fr/en/standards/index.htm


Field Summary
final public  ASN1Type[]type
    

Constructor Summary
public  ASN1Choice(ASN1Type[] type)
     Constructs ASN.1 choice type.

Method Summary
final public  booleancheckTag(int identifier)
     Tests whether one of choice alternatives has the same identifier or not.
public  Objectdecode(BerInputStream in)
    
public  voidencodeASN(BerOutputStream out)
    
final public  voidencodeContent(BerOutputStream out)
    
abstract public  intgetIndex(Object object)
    
abstract public  ObjectgetObjectToEncode(Object object)
    
final public  voidsetEncodingContent(BerOutputStream out)
    

Field Detail
type
final public ASN1Type[] type(Code)




Constructor Detail
ASN1Choice
public ASN1Choice(ASN1Type[] type)(Code)
Constructs ASN.1 choice type.
Parameters:
  type - -an array of one or more ASN.1 type alternatives.
throws:
  IllegalArgumentException - -type parameter is invalid




Method Detail
checkTag
final public boolean checkTag(int identifier)(Code)
Tests whether one of choice alternatives has the same identifier or not.
Parameters:
  identifier - -ASN.1 identifier to be verified - true if one of choice alternatives has the same identifier,otherwise false;



decode
public Object decode(BerInputStream in) throws IOException(Code)



encodeASN
public void encodeASN(BerOutputStream out)(Code)



encodeContent
final public void encodeContent(BerOutputStream out)(Code)



getIndex
abstract public int getIndex(Object object)(Code)
TODO Put method description here
Parameters:
  object - - an object to be encoded



getObjectToEncode
abstract public Object getObjectToEncode(Object object)(Code)



setEncodingContent
final public void setEncodingContent(BerOutputStream out)(Code)



Fields inherited from org.apache.harmony.security.asn1.ASN1Type
final public int constrId(Code)(Java Doc)
final public int id(Code)(Java Doc)

Methods inherited from org.apache.harmony.security.asn1.ASN1Type
abstract public boolean checkTag(int identifier)(Code)(Java Doc)
final public Object decode(byte[] encoded) throws IOException(Code)(Java Doc)
final public Object decode(byte[] encoded, int offset, int encodingLen) throws IOException(Code)(Java Doc)
final public Object decode(InputStream in) throws IOException(Code)(Java Doc)
abstract public Object decode(BerInputStream in) throws IOException(Code)(Java Doc)
final public byte[] encode(Object object)(Code)(Java Doc)
abstract public void encodeASN(BerOutputStream out)(Code)(Java Doc)
abstract public void encodeContent(BerOutputStream out)(Code)(Java Doc)
protected Object getDecodedObject(BerInputStream in) throws IOException(Code)(Java Doc)
public int getEncodedLength(BerOutputStream out)(Code)(Java Doc)
abstract public void setEncodingContent(BerOutputStream out)(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final public void verify(byte[] encoded) throws IOException(Code)(Java Doc)
final public void verify(InputStream in) throws IOException(Code)(Java Doc)

Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.