|
|
1.1 ! root 1: -- af-enc.py - manually-augmented AuthenticationFramework module ! 2: ! 3: -- $Header: /f/osi/dsap/x500as/RCS/af-enc.py,v 7.0 89/11/23 21:50:03 mrose Rel $ ! 4: -- ! 5: -- ! 6: -- $Log: af-enc.py,v $ ! 7: -- Revision 7.0 89/11/23 21:50:03 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 encode_UNIV_UTCTime build_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: ENCODER encode ! 64: ! 65: Version [[P int *]] ! 66: ::= ! 67: %{ ! 68: DLOG(log_dsap, LLOG_TRACE, ("About to encode Version (AF)")); ! 69: %} ! 70: INTEGER [[i *parm]] ! 71: %{ ! 72: DLOG(log_dsap, LLOG_TRACE, ("Done encode Version (AF)")); ! 73: %} ! 74: ! 75: CertificateSerialNumber [[P int *]] ! 76: ::= ! 77: %{ ! 78: DLOG(log_dsap, LLOG_TRACE, ("About to encode CertificateSerialNumber (AF)")); ! 79: %} ! 80: INTEGER [[i *parm]] ! 81: %{ ! 82: DLOG(log_dsap, LLOG_TRACE, ("Done encode CertificateSerialNumber (AF)")); ! 83: %} ! 84: ! 85: Validity [[P struct validity *]] ! 86: ::= ! 87: %{ ! 88: DLOG(log_dsap, LLOG_TRACE, ("About to encode 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 encode Validity (AF)")); ! 99: %} ! 100: ! 101: AlgorithmIdentifier [[P struct alg_id *]] ! 102: ::= ! 103: %{ ! 104: DLOG(log_dsap, LLOG_TRACE, ("About to encode AlgorithmIdentifier (AF)")); ! 105: if (parm->p_type == ALG_PARM_ABSENT) ! 106: parm->asn = NULLPE; ! 107: else if (parm->asn == NULLPE) ! 108: if (parm -> p_type = ALG_PARM_NUMERIC) ! 109: parm->asn = int2prim(parm->un.numeric); ! 110: ! 111: %} ! 112: SEQUENCE ! 113: { ! 114: algorithm ! 115: OBJECT IDENTIFIER [[O parm->algorithm]], ! 116: parameters ! 117: ANY [[a parm->asn]] ! 118: OPTIONAL <<parm->asn>> ! 119: } ! 120: %{ ! 121: DLOG(log_dsap, LLOG_TRACE, ("Done encode AlgorithmIdentifier (AF)")); ! 122: %} ! 123: ! 124: SubjectPublicKeyInfo [[P struct key_info *]] ! 125: ::= ! 126: %{ ! 127: DLOG(log_dsap, LLOG_TRACE, ("About to encode SubjectPublicKeyInfo (AF)")); ! 128: %} ! 129: SEQUENCE ! 130: { ! 131: algorithm ! 132: AlgorithmIdentifier [[p &(parm->alg)]], ! 133: subjectPublicKey ! 134: BIT STRING [[x parm->value $ parm->n_bits]] ! 135: } ! 136: %{ ! 137: DLOG(log_dsap, LLOG_TRACE, ("Done encode SubjectPublicKeyInfo (AF)")); ! 138: %} ! 139: ! 140: CertificateToSign [[P struct certificate *]] ! 141: ::= ! 142: %{ ! 143: DLOG(log_dsap, LLOG_TRACE, ("About to encode CertificateToSign (AF)")); ! 144: %} ! 145: SEQUENCE ! 146: { ! 147: version ! 148: [0] Version [[p &(parm->version)]] ! 149: -- DEFAULT v1988 , ! 150: OPTIONAL <<parm -> version>>, ! 151: serialNumber ! 152: CertificateSerialNumber [[p &(parm->serial)]] , ! 153: signature ! 154: AlgorithmIdentifier [[p &(parm -> alg)]], ! 155: issuer ! 156: Name [[p parm->issuer]] , ! 157: validity ! 158: Validity [[p &(parm->valid)]], ! 159: subject ! 160: Name [[p parm->subject]] , ! 161: subjectPublicKeyInfo ! 162: SubjectPublicKeyInfo [[p &(parm -> key)]] ! 163: } ! 164: %{ ! 165: DLOG(log_dsap, LLOG_TRACE, ("Done encode CertificateToSign (AF)")); ! 166: %} ! 167: ! 168: Certificate [[P struct certificate *]] ! 169: ::= ! 170: %{ ! 171: DLOG(log_dsap, LLOG_TRACE, ("About to encode Certificate (AF)")); ! 172: %} ! 173: SEQUENCE ! 174: { ! 175: CertificateToSign [[p parm]], ! 176: AlgorithmIdentifier [[p &(parm->sig.alg)]], ! 177: BIT STRING [[x parm->sig.encrypted $ parm->sig.n_bits]] ! 178: } ! 179: %{ ! 180: DLOG(log_dsap, LLOG_TRACE, ("Done encode Certificate (AF)")); ! 181: %} ! 182: ! 183: CrossCertificates [[P struct certificate_list *]] ! 184: %{ ! 185: struct certificate_list *tmp; ! 186: %} ! 187: ::= ! 188: %{ ! 189: DLOG(log_dsap, LLOG_TRACE, ("About to encode CrossCertificates (AF)")); ! 190: %} ! 191: SET OF ! 192: <<tmp=parm;tmp;tmp=tmp->next>> ! 193: Certificate [[p tmp->cert]] ! 194: %{ ! 195: DLOG(log_dsap, LLOG_TRACE, ("Done encode CrossCertificates (AF)")); ! 196: %} ! 197: ! 198: ForwardCertificationPath [[P struct certificate_list *]] ! 199: %{ ! 200: struct certificate_list *tmp; ! 201: %} ! 202: ::= ! 203: %{ ! 204: DLOG(log_dsap, LLOG_TRACE, ("About to encode ForwardCertificationPath (AF)")); ! 205: %} ! 206: SEQUENCE OF ! 207: <<tmp=parm;tmp;tmp=tmp->superior>> ! 208: CrossCertificates [[p tmp]] ! 209: %{ ! 210: DLOG(log_dsap, LLOG_TRACE, ("Done encode ForwardCertificationPath (AF)")); ! 211: %} ! 212: ! 213: Certificates [[P struct certificate_list *]] ! 214: ::= ! 215: %{ ! 216: DLOG(log_dsap, LLOG_TRACE, ("About to encode Certificates (AF)")); ! 217: %} ! 218: SEQUENCE ! 219: { ! 220: certificate ! 221: Certificate [[p parm->cert]], ! 222: certificationPath ! 223: ForwardCertificationPath [[p parm->superior]] ! 224: OPTIONAL <<parm->superior>> ! 225: } ! 226: %{ ! 227: DLOG(log_dsap, LLOG_TRACE, ("Done encode Certificates (AF)")); ! 228: %} ! 229: ! 230: CertificatePair [[P struct certificate_list *]] ! 231: ::= ! 232: %{ ! 233: DLOG(log_dsap, LLOG_TRACE, ("About to encode CertificatePair (AF)")); ! 234: %} ! 235: SEQUENCE ! 236: { ! 237: forward ! 238: [0] Certificate [[p parm->cert]] ! 239: OPTIONAL <<parm->cert>>, ! 240: reverse ! 241: [1] Certificate [[p parm->reverse]] ! 242: OPTIONAL <<parm->reverse>> ! 243: } ! 244: %{ ! 245: DLOG(log_dsap, LLOG_TRACE, ("Done encode CertificatePair (AF)")); ! 246: %} ! 247: ! 248: CertificationPath [[P struct certificate_list *]] ! 249: %{ ! 250: struct certificate_list *tmp; ! 251: %} ! 252: ::= ! 253: %{ ! 254: DLOG(log_dsap, LLOG_TRACE, ("Abou to encode CertificationPath (AF)")); ! 255: %} ! 256: SEQUENCE ! 257: { ! 258: userCertificate ! 259: Certificate [[p parm->cert]], ! 260: theCACertificates ! 261: SEQUENCE OF ! 262: <<tmp = parm->superior; tmp; tmp = tmp->superior>> ! 263: CertificatePair [[p tmp]] ! 264: OPTIONAL <<parm->superior>> ! 265: } ! 266: %{ ! 267: DLOG(log_dsap, LLOG_TRACE, ("Done encode CertificationPath (AF)")); ! 268: %} ! 269: ! 270: RevokedCertificateToSign [[P struct revoked_certificate *]] ! 271: ::= ! 272: %{ ! 273: DLOG(log_dsap, LLOG_TRACE, ("About to encode RevokedCertificateToSign (AF)")); ! 274: %} ! 275: SEQUENCE ! 276: { ! 277: signature ! 278: AlgorithmIdentifier [[p &(parm->alg)]], ! 279: issuer ! 280: Name [[p parm->subject]] , ! 281: subject ! 282: CertificateSerialNumber [[p &(parm->serial)]], ! 283: revokationDate ! 284: UTCTime [[s parm->revocation_date]] ! 285: } ! 286: %{ ! 287: DLOG(log_dsap, LLOG_TRACE, ("Done encode RevokedCertificateToSign (AF)")); ! 288: %} ! 289: ! 290: RevokedCertificates [[P struct revocation_list *]] ! 291: %{ ! 292: struct revoked_certificate *tmp; ! 293: %} ! 294: ::= ! 295: %{ ! 296: DLOG(log_dsap, LLOG_TRACE, ("About to encode RevokedCertificates (AF)")); ! 297: %} ! 298: SEQUENCE ! 299: { ! 300: SEQUENCE OF <<tmp = parm->revoked; tmp; tmp=tmp->next>> ! 301: RevokedCertificateToSign [[p tmp]], ! 302: AlgorithmIdentifier [[p &(parm->sig2.alg)]], ! 303: BIT STRING [[x parm->sig2.encrypted $ parm->sig2.n_bits]] ! 304: } ! 305: %{ ! 306: DLOG(log_dsap, LLOG_TRACE, ("Done encode RevokedCertificates (AF)")); ! 307: %} ! 308: ! 309: CertificateListToSign [[P struct revocation_list *]] ! 310: ::= ! 311: %{ ! 312: DLOG(log_dsap, LLOG_TRACE, ("About to encode CertificateListToSign (AF)")); ! 313: %} ! 314: SEQUENCE ! 315: { ! 316: signature ! 317: AlgorithmIdentifier [[p &(parm->alg)]], ! 318: issuer ! 319: Name [[p parm->issuer]] , ! 320: lastUpdate ! 321: UTCTime [[s parm->last_update]], ! 322: revokedCertificates ! 323: RevokedCertificates [[p parm]] ! 324: OPTIONAL <<parm->revoked>> ! 325: } ! 326: %{ ! 327: DLOG(log_dsap, LLOG_TRACE, ("Done encode CertificateListToSign (AF)")); ! 328: %} ! 329: ! 330: CertificateList [[P struct revocation_list *]] ! 331: ::= ! 332: %{ ! 333: DLOG(log_dsap, LLOG_TRACE, ("About to encode CertificateList (AF)")); ! 334: %} ! 335: SEQUENCE ! 336: { ! 337: CertificateListToSign [[p parm]], ! 338: AlgorithmIdentifier [[p &(parm->sig.alg)]], ! 339: BIT STRING [[x parm->sig.encrypted $ parm->sig.n_bits]] ! 340: } ! 341: %{ ! 342: DLOG(log_dsap, LLOG_TRACE, ("Done encode CertificateList (AF)")); ! 343: %} ! 344: ! 345: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.