Annotation of 43BSDReno/contrib/isode-beta/dsap/x500as/af-dec.py, revision 1.1

1.1     ! root        1: -- af-dec.py - manually-augmented AuthenticationFramework module
        !             2: 
        !             3: -- $Header: /f/osi/dsap/x500as/RCS/af-dec.py,v 7.0 89/11/23 21:50:01 mrose Rel $
        !             4: --
        !             5: --
        !             6: -- $Log:       af-dec.py,v $
        !             7: -- Revision 7.0  89/11/23  21:50:01  mrose
        !             8: -- Release 6.0
        !             9: -- 
        !            10: 
        !            11: --
        !            12: --                               NOTICE
        !            13: --
        !            14: --    Acquisition, use, and distribution of this module and related
        !            15: --    materials are subject to the restrictions of a license agreement.
        !            16: --    Consult the Preface in the User's Manual for the full terms of
        !            17: --    this agreement.
        !            18: --
        !            19: --
        !            20: 
        !            21: 
        !            22: AF
        !            23:        {
        !            24:        joint-iso-ccitt
        !            25:        ds(5)
        !            26:        modules(1)
        !            27:        authenticationFramework(7)
        !            28:        }
        !            29: 
        !            30: DEFINITIONS ::=
        !            31: 
        !            32: %{
        !            33: #include <stdio.h>
        !            34: #include "quipu/util.h"
        !            35: #include "quipu/name.h"
        !            36: #include "quipu/bind.h"
        !            37: 
        !            38: #define decode_UNIV_UTCTime parse_UNIV_UTCTime
        !            39: 
        !            40: extern  LLog    * log_dsap;
        !            41: %}
        !            42: 
        !            43: PREFIXES encode decode print
        !            44: 
        !            45: BEGIN
        !            46: 
        !            47: -- EXPORTS
        !            48: --     AlgorithmIdentifier ,
        !            49: --     Certificate ,
        !            50: --     Certificates ,
        !            51: --     CertificationPath;
        !            52: 
        !            53: IMPORTS
        !            54:        Name
        !            55:                FROM IF
        !            56:                        {
        !            57:                        joint-iso-ccitt
        !            58:                        ds(5)
        !            59:                        modules(1)
        !            60:                        informationFramework(1)
        !            61:                        };
        !            62: 
        !            63: DECODER decode
        !            64: 
        !            65: Version [[P int *]]
        !            66:        ::=
        !            67:         %{
        !            68:         DLOG(log_dsap, LLOG_TRACE, ("At decode Version (AF)"));
        !            69:         %}
        !            70:        INTEGER [[i *parm]]
        !            71:         %{
        !            72:         DLOG(log_dsap, LLOG_TRACE, ("Done decode Version (AF)"));
        !            73:         %}
        !            74: 
        !            75: CertificateSerialNumber [[P int *]]
        !            76:        ::=
        !            77:         %{
        !            78:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CertificateSerialNumber (AF)"));
        !            79:         %}
        !            80:        INTEGER [[i *parm]]
        !            81:         %{
        !            82:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CertificateSerialNumber (AF)"));
        !            83:         %}
        !            84: 
        !            85: Validity [[P struct validity *]]
        !            86:        ::=
        !            87:         %{
        !            88:         DLOG(log_dsap, LLOG_TRACE, ("About to decode Validity (AF)"));
        !            89:         %}
        !            90:        SEQUENCE
        !            91:        {
        !            92:        notBefore
        !            93:                UTCTime [[s parm->not_before]],
        !            94:        notAfter
        !            95:                UTCTime [[s parm->not_after]]
        !            96:        }
        !            97:         %{
        !            98:         DLOG(log_dsap, LLOG_TRACE, ("Done decode Validity (AF)"));
        !            99:         %}
        !           100: 
        !           101: AlgorithmIdentifier [[P struct alg_id *]]
        !           102:        ::=
        !           103:         %{
        !           104:         DLOG(log_dsap, LLOG_TRACE, ("About to decode AlgorithmIdentifier (AF)"));
        !           105:        parm->p_type = ALG_PARM_ABSENT;
        !           106:        parm->un.numeric = 0;
        !           107:         %}
        !           108:        SEQUENCE
        !           109:        {
        !           110:        algorithm
        !           111:                OBJECT IDENTIFIER [[O parm->algorithm]],
        !           112:        parameters
        !           113:                ANY [[a parm->asn]]
        !           114:                %{
        !           115:                    parm->p_type = ALG_PARM_UNKNOWN;
        !           116:                %}
        !           117:                    OPTIONAL
        !           118:        }
        !           119:         %{
        !           120:         DLOG(log_dsap, LLOG_TRACE, ("Done decode AlgorithmIdentifier (AF)"));
        !           121:         %}
        !           122: 
        !           123: SubjectPublicKeyInfo [[P struct key_info *]]
        !           124: %{
        !           125: struct qbuf *qb;
        !           126: int exponent;
        !           127: %}
        !           128:        ::=
        !           129:         %{
        !           130:         DLOG(log_dsap, LLOG_TRACE, ("About to decode SubjectPublicKeyInfo (AF)"));
        !           131:         %}
        !           132:        SEQUENCE
        !           133:        {
        !           134:        algorithm
        !           135:                AlgorithmIdentifier [[p &(parm->alg)]],
        !           136:        subjectPublicKey
        !           137:                 CHOICE {
        !           138:                        BIT STRING [[x parm->value $ parm->n_bits]],
        !           139:                        SEQUENCE {
        !           140:                                [UNIVERSAL 2] IMPLICIT OCTET STRING
        !           141:                                         [[q qb]]
        !           142:                                %{
        !           143:                                parm->value = qb2str(qb);
        !           144:                                parm->n_bits = qb->qb_len*8;
        !           145:                                /* Really should total up pieces ... */
        !           146:                                qb_free(qb);
        !           147:                                %},
        !           148:                                INTEGER [[i exponent]]
        !           149:                        }
        !           150:                }
        !           151:        }
        !           152:         %{
        !           153:         DLOG(log_dsap, LLOG_TRACE, ("Done decode SubjectPublicKeyInfo (AF)"));
        !           154:         %}
        !           155: 
        !           156: CertificateToSign [[P struct certificate **]]
        !           157:        ::=
        !           158:         %{
        !           159:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CertificateToSign (AF)"));
        !           160:        (*parm)->version = 0;
        !           161:         %}
        !           162:        SEQUENCE
        !           163:        {
        !           164:        version
        !           165:                [0] Version [[p &((*parm)->version)]]
        !           166:                    OPTIONAL ,
        !           167:        serialNumber
        !           168:                CertificateSerialNumber [[p &((*parm)->serial)]],
        !           169:        signature
        !           170:                AlgorithmIdentifier [[p &((*parm)->alg)]],
        !           171:        issuer
        !           172:                Name [[p &((*parm)->issuer)]] ,
        !           173:        validity
        !           174:                Validity [[p &((*parm)->valid)]],
        !           175:        subject
        !           176:                Name [[p &((*parm)->subject)]] ,
        !           177:        subjectPublicKeyInfo
        !           178:                SubjectPublicKeyInfo [[p &((*parm)->key)]]
        !           179:        }
        !           180:         %{
        !           181:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CertificateToSign (AF)"));
        !           182:         %}
        !           183: 
        !           184: Certificate [[P struct certificate **]]
        !           185:        ::=
        !           186:         %{
        !           187:         DLOG(log_dsap, LLOG_TRACE, ("About to decode Certificate (AF)"));
        !           188:        (*parm) = (struct certificate *) calloc(1, sizeof(struct certificate));
        !           189:         %}
        !           190:        SEQUENCE
        !           191:        {
        !           192:                CertificateToSign [[p parm]],
        !           193:                AlgorithmIdentifier [[p &((*parm)->sig.alg)]],
        !           194:                BIT STRING [[x (*parm)->sig.encrypted $ (*parm)->sig.n_bits]]
        !           195:        }
        !           196:         %{
        !           197:         DLOG(log_dsap, LLOG_TRACE, ("Done decode Certificate (AF)"));
        !           198:         %}
        !           199: 
        !           200: CrossCertificates [[P struct certificate_list **]]
        !           201:        ::=
        !           202:        SET OF
        !           203:         %{
        !           204:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CrossCertificates (AF)"));
        !           205:        (*parm) = (struct certificate_list *)
        !           206:                calloc(1, sizeof(struct certificate_list));
        !           207:        (*parm)->reverse = (struct certificate *) 0;
        !           208:        (*parm)->next = (struct certificate_list *) 0;
        !           209:        (*parm)->superior = (struct certificate_list *) 0;
        !           210:         %}
        !           211:                Certificate [[p &((*parm)->cert)]]
        !           212:         %{
        !           213:        parm = &((*parm)->next);
        !           214:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CrossCertificates (AF)"));
        !           215:         %}
        !           216: 
        !           217: ForwardCertificationPath [[P struct certificate_list **]]
        !           218:        ::=
        !           219:        SEQUENCE OF
        !           220:         %{
        !           221:         DLOG(log_dsap, LLOG_TRACE, ("About to decode ForwardCertificationPath (AF)"));
        !           222:         %}
        !           223:                CrossCertificates [[p parm]]
        !           224:         %{
        !           225:        parm = &((*parm)->superior);
        !           226:         DLOG(log_dsap, LLOG_TRACE, ("Done decode ForwardCertificationPath (AF)"));
        !           227:         %}
        !           228: 
        !           229: Certificates [[P struct certificate_list **]]
        !           230:        ::=
        !           231:         %{
        !           232:         DLOG(log_dsap, LLOG_TRACE, ("About to decode Certificates (AF)"));
        !           233:        (*parm) = (struct certificate_list *)
        !           234:                calloc(1, sizeof(struct certificate_list));
        !           235:        (*parm)->reverse = (struct certificate *) 0;
        !           236:        (*parm)->next = (struct certificate_list *) 0;
        !           237:        (*parm)->superior = (struct certificate_list *) 0;
        !           238:         %}
        !           239:        SEQUENCE
        !           240:        {
        !           241:        certificate
        !           242:                Certificate [[p &((*parm)->cert)]],
        !           243:        certificationPath
        !           244:                ForwardCertificationPath [[p &((*parm)->superior)]]
        !           245:                    OPTIONAL
        !           246:        }
        !           247:         %{
        !           248:         DLOG(log_dsap, LLOG_TRACE, ("Done decode Certificates (AF)"));
        !           249:         %}
        !           250: 
        !           251: CertificatePair [[P struct certificate_list **]]
        !           252:        ::=
        !           253:         %{
        !           254:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CertificatePair (AF)"));
        !           255:        (*parm) = (struct certificate_list *)
        !           256:                calloc(1, sizeof(struct certificate_list));
        !           257:        (*parm)->cert = (struct certificate *) 0;
        !           258:        (*parm)->reverse = (struct certificate *) 0;
        !           259:        (*parm)->next = (struct certificate_list *) 0;
        !           260:        (*parm)->superior = (struct certificate_list *) 0;
        !           261:         %}
        !           262:        SEQUENCE
        !           263:        {
        !           264:        forward
        !           265:                [0] Certificate [[p &((*parm)->cert)]]
        !           266:                    OPTIONAL ,
        !           267:        reverse
        !           268:                [1] Certificate [[p &((*parm)->reverse)]]
        !           269:                    OPTIONAL
        !           270:        }
        !           271:         %{
        !           272:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CertificatePair (AF)"));
        !           273:         %}
        !           274: 
        !           275: CertificationPath [[P struct certificate_list **]]
        !           276:        ::=
        !           277:         %{
        !           278:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CertificationPath (AF)"));
        !           279:        (*parm) = (struct certificate_list *)
        !           280:                calloc(1, sizeof(struct certificate_list));
        !           281:        (*parm)->next = (struct certificate_list *) 0;
        !           282:        (*parm)->superior = (struct certificate_list *) 0;
        !           283:        (*parm)->reverse = (struct certificate *) 0;
        !           284:         %}
        !           285:        SEQUENCE
        !           286:        {
        !           287:        userCertificate
        !           288:                Certificate [[p &((*parm)->cert)]],
        !           289:        theCACertificates
        !           290:                SEQUENCE OF
        !           291:                        CertificatePair [[p &((*parm)->superior)]]
        !           292:                    OPTIONAL
        !           293:        }
        !           294:         %{
        !           295:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CertificationPath (AF)"));
        !           296:         %}
        !           297: 
        !           298: RevokedCertificateToSign [[P struct revoked_certificate **]]
        !           299:        ::=
        !           300:        %{
        !           301:        DLOG(log_dsap, LLOG_TRACE, ("About to decode RevokedCertificateToSign (AF)"));
        !           302:        (*parm) = (struct revoked_certificate *)
        !           303:                calloc(1, sizeof(struct revoked_certificate));
        !           304:        %}
        !           305:        SEQUENCE
        !           306:        {
        !           307:        signature
        !           308:                AlgorithmIdentifier [[p &((*parm)->alg)]],
        !           309:        issuer
        !           310:                Name [[p &((*parm)->subject)]],
        !           311:        subject
        !           312:                CertificateSerialNumber [[p &((*parm)->serial)]],
        !           313:        revokationDate
        !           314:                UTCTime [[s (*parm)->revocation_date]]
        !           315:        } 
        !           316:        %{
        !           317:        DLOG(log_dsap, LLOG_TRACE, ("Done decode RevokedCertificateToSign (AF)"));
        !           318:        %}
        !           319: 
        !           320: RevokedCertificates [[P struct revocation_list **]]
        !           321: %{
        !           322: struct revoked_certificate **tmp;
        !           323: %}
        !           324:        ::=
        !           325:        %{
        !           326:        DLOG(log_dsap, LLOG_TRACE, ("About to decode RevokedCertificates (AF)"));
        !           327:        tmp = (struct revoked_certificate **) &((*parm)->revoked);
        !           328:        %}
        !           329:        SEQUENCE
        !           330:        {
        !           331:        SEQUENCE OF 
        !           332:                RevokedCertificateToSign [[p tmp]]
        !           333:                %{
        !           334:                tmp = &((*tmp)->next);
        !           335:                %},
        !           336:        AlgorithmIdentifier [[p &((*parm)->sig2.alg)]],
        !           337:        BIT STRING [[x (*parm)->sig2.encrypted $ (*parm)->sig2.n_bits]]
        !           338:        }
        !           339:        %{
        !           340:        DLOG(log_dsap, LLOG_TRACE, ("Done decode RevokedCertificates (AF)"));
        !           341:        %}
        !           342: 
        !           343: CertificateListToSign [[P struct revocation_list **]]
        !           344: %{
        !           345: %}
        !           346:        ::=
        !           347:         %{
        !           348:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CertificateListToSign (AF)"));
        !           349:         %}
        !           350:        SEQUENCE
        !           351:        {
        !           352:        signature
        !           353:                AlgorithmIdentifier [[p &((*parm)->alg)]],
        !           354:        issuer
        !           355:                Name [[p &((*parm)->issuer)]],
        !           356:        lastUpdate
        !           357:                UTCTime [[s (*parm)->last_update]],
        !           358:        revokedCertificates
        !           359:                RevokedCertificates [[p parm]]
        !           360:                    OPTIONAL
        !           361:        }
        !           362:         %{
        !           363:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CertificateListToSign (AF)"));
        !           364:         %}
        !           365: 
        !           366: CertificateList [[P struct revocation_list **]]
        !           367:        ::=
        !           368:         %{
        !           369:         DLOG(log_dsap, LLOG_TRACE, ("About to decode CertificateList (AF)"));
        !           370:        (*parm) = (struct revocation_list *) 
        !           371:                calloc(1, sizeof(struct revocation_list));
        !           372:         %}
        !           373:        SEQUENCE
        !           374:        {
        !           375:                CertificateListToSign [[p parm]],
        !           376:                AlgorithmIdentifier [[p &((*parm)->sig.alg)]],
        !           377:                BIT STRING [[x (*parm)->sig.encrypted $ (*parm)->sig.n_bits]]
        !           378:        }
        !           379:         %{
        !           380:         DLOG(log_dsap, LLOG_TRACE, ("Done decode CertificateList (AF)"));
        !           381:         %}
        !           382: 
        !           383: END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.