/**
 * Type
 * 
 * A few Asn-1 structures
 * Copyright (c) 2007 Henri Torgemane
 * 
 * See LICENSE.txt for full license information.
 */
package com.hurlant.util.der
{
    import com.hurlant.util.Hex;
    
    public class Type
    {
        public static const TLS_CERT:Array = [ 
            {name:"signedCertificate", extract:true, value: [
                {name:"versionHolder", optional:true, value: [
                    {name:"version"}
                ], defaultValue: function():Sequence{ 
                        var s:Sequence = new Sequence(0, 0); 
                        var v:Integer = new Integer(2,1, Hex.toArray("00"));
                        s.push(v);
                        s.version = v;
                        return s;
                    }()
                },
                {name:"serialNumber"},
                {name:"signature", value: [
                    {name:"algorithmId"}
                ]},
                {name:"issuer", extract:true, value: [ 
                    {name:"type"},
                    {name:"value"}
                ]},
                {name:"validity", value: [
                    {name:"notBefore"},
                    {name:"notAfter"}
                ]},
                {name:"subject", extract:true, value: [
                ]},
                {name:"subjectPublicKeyInfo", value: [
                    {name:"algorithm", value: [
                        {name:"algorithmId"}
                    ]},
                    {name:"subjectPublicKey"}
                ]},
                {name:"extensions", value: [
                ]}
            ]}, 
            {name:"algorithmIdentifier",value:[
                {name:"algorithmId"}
            ]}, 
            {name:"encrypted", value:null}
        ];
        public static const CERTIFICATE:Array = [
            {name:"tbsCertificate", value:[
                {name:"tag0", value:[
                    {name:"version"}
                ]},
                {name:"serialNumber"},
                {name:"signature"},
                {name:"issuer", value:[
                    {name:"type"},
                    {name:"value"}
                ]},
                {name:"validity", value:[
                    {name:"notBefore"},
                    {name:"notAfter"}
                ]},
                {name:"subject"},
                {name:"subjectPublicKeyInfo", value:[
                    {name:"algorithm"},
                    {name:"subjectPublicKey"}
                ]},
                {name:"issuerUniqueID"},
                {name:"subjectUniqueID"},
                {name:"extensions"}
            ]},
            {name:"signatureAlgorithm"},
            {name:"signatureValue"}
        ];
        public static const RSA_PUBLIC_KEY:Array = [
            {name:"modulus"},
            {name:"publicExponent"}
        ];
        public static const RSA_SIGNATURE:Array = [
            {name:"algorithm", value:[
                {name:"algorithmId"}
             ]},
            {name:"hash"}
        ];
        
    }
}