X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=z39.50%2Fz-accdes1.c;fp=z39.50%2Fz-accdes1.c;h=cf68af7a11e02a359ec02063886df4652f381037;hb=69abdf35bf2cb6927d34b9fb1f526a0962f0fe8f;hp=0000000000000000000000000000000000000000;hpb=007a366af5ddaebf813e39588f1c09646d33bcef;p=yaz-moved-to-github.git diff --git a/z39.50/z-accdes1.c b/z39.50/z-accdes1.c new file mode 100644 index 0000000..cf68af7 --- /dev/null +++ b/z39.50/z-accdes1.c @@ -0,0 +1,35 @@ +/* YC 0.2 Tue Feb 29 16:45:07 CET 2000 */ +/* Module-C: AccessControlFormat-des-1 */ + +#include + +int z_DES_RN_Object (ODR o, Z_DES_RN_Object **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DES_RN_Object_challenge, + (Odr_fun) z_DRNType, "challenge"}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_DES_RN_Object_response, + (Odr_fun) z_DRNType, "response"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int z_DRNType (ODR o, Z_DRNType **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_octetstring, + &(*p)->userId, ODR_CONTEXT, 1, 1, "userId") && + odr_implicit_tag (o, odr_octetstring, + &(*p)->salt, ODR_CONTEXT, 2, 1, "salt") && + odr_implicit_tag (o, odr_octetstring, + &(*p)->randomNumber, ODR_CONTEXT, 3, 0, "randomNumber") && + odr_sequence_end (o); +}