|
|
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.