krb5_encode_test.c (main): Add tests for encode_krb5_padata_sequence()
authorTheodore Tso <tytso@mit.edu>
Sat, 26 Aug 1995 02:03:30 +0000 (02:03 +0000)
committerTheodore Tso <tytso@mit.edu>
Sat, 26 Aug 1995 02:03:30 +0000 (02:03 +0000)
krb5_decode_test.c (main): Add tests for decode_krb5_padata_sequence().

ktest.c (ktest_make_sample_empty_pa_data_array): New function which creates
an empty pa_data array.

trval.c:  Various -Wall cleanups.

Makefile.in (trval): Add rule to build the standalone trval program.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6594 dc483132-0cff-0310-8789-dd5450dbe970

src/tests/asn.1/ChangeLog
src/tests/asn.1/Makefile.in
src/tests/asn.1/krb5_decode_test.c
src/tests/asn.1/krb5_encode_test.c
src/tests/asn.1/ktest.c
src/tests/asn.1/ktest.h
src/tests/asn.1/reference_encode.out
src/tests/asn.1/trval.c
src/tests/asn.1/trval_reference.out

index f39e74ab86660194b0568174a84bbe75f98e233b..f5d4b1420095383630bc017555a08577bcdd76ad 100644 (file)
@@ -1,3 +1,18 @@
+Fri Aug 25 21:50:37 1995  Theodore Y. Ts'o  <tytso@dcl>
+
+       * krb5_encode_test.c (main): Add tests for
+               encode_krb5_padata_sequence(). 
+
+       * krb5_decode_test.c (main): Add tests for
+               decode_krb5_padata_sequence().
+
+       * ktest.c (ktest_make_sample_empty_pa_data_array): New function
+               which creates an empty pa_data array.
+
+       * trval.c:  Various -Wall cleanups.
+
+       * Makefile.in (trval): Add rule to build the standalone trval
+               program. 
 
 Thu Jul 27 15:29:10 EDT 1995   Paul Park       (pjpark@mit.edu)
        * krb5_{en,de}code_test.c - Use k5-int instead of krb5 and asn1.h.
index 96010e12bb316e4740a692db91f66d941b070528..db2221bf4915b1ce87154267c1aadb5ca6e6e169 100644 (file)
@@ -2,7 +2,7 @@ CFLAGS = $(CCOPTS) $(DEFS) $(LOCALINCLUDES)
 
 COMERRLIB=$(TOPLIBD)/libcom_err.a
 
-all:: krb5_encode_test krb5_decode_test
+all:: krb5_encode_test krb5_decode_test trval
 
 LOCALINCLUDES = -I$(srcdir)/../../lib/krb5/asn.1
 
@@ -16,6 +16,9 @@ DECOBJS = krb5_decode_test.o ktest.o ktest_equal.o utility.o
 krb5_decode_test: $(DECOBJS) $(DEPLIBS)
        $(LD) $(LDFLAGS) $(LDARGS) -o krb5_decode_test $(DECOBJS) $(LIBS)
 
+trval: $(srcdir)/trval.c
+       $(CC) -o trval $(CFLAGS) -DSTANDALONE $(srcdir)/trval.c
+
 check:: krb5_decode_test krb5_encode_test
        LD_LIBRARY_PATH=$(TOPLIBD) ./krb5_decode_test
        $(RM) test.out
index 69040344f3be943df964b7331cedd4bc1a3fc9c1..266683bc6ca30e3a2f2604481a8b538091adb5b9 100644 (file)
@@ -352,5 +352,43 @@ void main()
     decode_run("PasswdData","","30 3D A0 03 02 01 02 A1 36 30 34 30 18 A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 0A 04 08 6B 72 62 35 64 61 74 61 30 18 A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 0A 04 08 6B 72 62 35 64 61 74 61",decode_krb5_pwd_data,ktest_equal_krb5_pwd_data);
   }
 
+  /****************************************************************/
+  /* decode_krb5_padata_sequence */
+  {
+    krb5_pa_data **ref, **var;
+    retval = ktest_make_sample_pa_data_array(&ref);
+    if(retval){
+      com_err("making sample pa_data array",retval,"");
+      exit(1);
+    }
+    retval = krb5_data_hex_parse(&code,"30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61");
+    if(retval){
+      com_err("parsing padata_sequence",retval,"");
+      exit(1);
+    }
+    retval = decode_krb5_padata_sequence(&code,&var);
+    if(retval) com_err("decoding padata_sequence",retval,"");
+    assert(ktest_equal_sequence_of_pa_data(ref,var),"pa_data\n")
+  }
+  
+  /****************************************************************/
+  /* decode_krb5_padata_sequence (empty) */
+  {
+    krb5_pa_data **ref, **var;
+    retval = ktest_make_sample_empty_pa_data_array(&ref);
+    if(retval){
+      com_err("making sample empty pa_data array",retval,"");
+      exit(1);
+    }
+    retval = krb5_data_hex_parse(&code,"30 00");
+    if(retval){
+      com_err("parsing padata_sequence (empty)",retval,"");
+      exit(1);
+    }
+    retval = decode_krb5_padata_sequence(&code,&var);
+    if(retval) com_err("decoding padata_sequence (empty)",retval,"");
+    assert(ktest_equal_sequence_of_pa_data(ref,var),"pa_data (empty)\n")
+  }
+  
   exit(error_count);
 }
index f25f73e2d0c0c11156afeec9b9e6296cfd74a88b..c7b3487d45fec7d518951e942dc888887823cbdd 100644 (file)
@@ -435,5 +435,27 @@ void main(argc, argv)
     encode_run(pd,krb5_pwd_data,"pwd_data","",encode_krb5_pwd_data);
   }
 
+  /****************************************************************/
+  /* encode_padata_sequence */
+  {
+    krb5_pa_data **pa;
+    
+    setup(pa,krb5_pa_data,"PreauthData",ktest_make_sample_pa_data_array);
+    retval = encode_krb5_padata_sequence((const krb5_pa_data**)pa,&(code));
+    if(retval) com_err("encoding padata_sequence",retval,"");
+    encoder_print_results(code, "padata_sequence", "");
+  }
+
+  /****************************************************************/
+  /* encode_padata_sequence (empty) */
+  {
+    krb5_pa_data **pa;
+    
+    setup(pa,krb5_pa_data,"EmptyPreauthData",ktest_make_sample_empty_pa_data_array);
+    retval = encode_krb5_padata_sequence((const krb5_pa_data**)pa,&(code));
+    if(retval) com_err("encoding padata_sequence(empty)",retval,"");
+    encoder_print_results(code, "padata_sequence(empty)", "");
+  }
+
   exit(error_count);
 }
index b3a1c53632551a547f708043fe601313a5055b7b..4951e15d3e68b0588357fa861fc89117ecab42d8 100644 (file)
@@ -300,6 +300,17 @@ krb5_error_code ktest_make_sample_pa_data_array(pad)
   return 0;
 }
 
+krb5_error_code ktest_make_sample_empty_pa_data_array(pad)
+     krb5_pa_data *** pad;
+{
+  *pad = (krb5_pa_data**)calloc(1,sizeof(krb5_pa_data*));
+  if(*pad == NULL) return ENOMEM;
+
+  (*pad)[0] = NULL;
+
+  return 0;
+}
+
 krb5_error_code ktest_make_sample_pa_data(pad)
      krb5_pa_data * pad;
 {
index 512eb3184a68499b05985fd12b8b4ca42e5e5756..752a5f83426cab3ad511512df0d60bb6b2aec825 100644 (file)
@@ -50,6 +50,8 @@ krb5_error_code ktest_make_sample_kdc_rep
        KRB5_PROTOTYPE((krb5_kdc_rep *kdcr));
   krb5_error_code ktest_make_sample_pa_data_array
        KRB5_PROTOTYPE((krb5_pa_data ***pad));
+  krb5_error_code ktest_make_sample_empty_pa_data_array
+       KRB5_PROTOTYPE((krb5_pa_data ***pad));
   krb5_error_code ktest_make_sample_pa_data
        KRB5_PROTOTYPE((krb5_pa_data *pad));
 krb5_error_code ktest_make_sample_ap_req
index 87601210358b5a5b3a901f66a85931dd8c5c87ac..8022948fd603ba61a6ad06b79c36e4b5640b8be4 100644 (file)
@@ -37,3 +37,5 @@ encode_krb5_error(optionals NULL): 7E 60 30 5E A0 03 02 01 05 A1 03 02 01 1E A3
 encode_krb5_authorization_data: 30 22 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72 30 0F A0 03 02 01 01 A1 08 04 06 66 6F 6F 62 61 72
 encode_krb5_pwd_sequence: 30 18 A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 0A 04 08 6B 72 62 35 64 61 74 61
 encode_krb5_pwd_data: 30 3D A0 03 02 01 02 A1 36 30 34 30 18 A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 0A 04 08 6B 72 62 35 64 61 74 61 30 18 A0 0A 04 08 6B 72 62 35 64 61 74 61 A1 0A 04 08 6B 72 62 35 64 61 74 61
+encode_krb5_padata_sequence: 30 24 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61 30 10 A1 03 02 01 0D A2 09 04 07 70 61 2D 64 61 74 61
+encode_krb5_padata_sequence(empty): 30 00
index 196c19699fa3131573f1a0862ae57e6b74447a29..71e3102e35ed0147c2d9a5a4a072c39fc9fab4ec 100644 (file)
@@ -32,6 +32,8 @@
  * trval.c.c
  *****************************************************************************/
 
+#include <unistd.h>
+#include <stdlib.h>
 #include <stdio.h>
 #include <ctype.h>
 
@@ -100,6 +102,8 @@ int print_krb5_types = 0;
 int print_skip_krb5_tagnum = 0;
 #endif
 
+void print_tag_type();
+int trval(), trval2(), decode_len(), do_cons(), do_prim();
 
 /****************************************************************************/
 
@@ -110,7 +114,6 @@ int main(argc, argv)
        char **argv;
 {
        int optflg = 1;
-       int options = 0;
        FILE *fp;
        int r;
        
@@ -132,7 +135,7 @@ int main(argc, argv)
                                continue;
                        }
                        r = trval(fp, stdout);
-                       close(fp);
+                       fclose(fp);
                }
        }
        if (optflg) r = trval(stdin, stdout);
@@ -292,7 +295,7 @@ int do_prim(fp, tag, enc, len, lev)
        }
     }
     if ((j = (n % WIDTH)) != 0) {
-       fprintf(fp, "    ", j);
+       fprintf(fp, "    ");
        for (i=0; i<WIDTH-j; i++) fprintf(fp, "   ");
        for (i=n-j; i<n; i++)
            if (isprint(enc[i])) fprintf(fp, "%c", enc[i]);
@@ -312,7 +315,6 @@ int *rlen;
     int r;
     int rlen2;
     int rlent;
-    int l;
 
     for (n = 0, rlent = 0; n < len; n+=rlen2, rlent+=rlen2) {
        r = trval2(fp, enc+n, len-n, lev, &rlen2);
@@ -327,7 +329,7 @@ int *rlen;
     return(r);
 }
 
-print_tag_type(fp, eid, lev)
+void print_tag_type(fp, eid, lev)
        FILE *fp;
        int     eid;
        int     lev;
index e7c5d69389de33fed861cef25951de9605abcd4e..8fa2b7e7ecd9d9d70e1d50deacb8ec3074d34e4c 100644 (file)
@@ -1819,3 +1819,21 @@ encode_krb5_pwd_data:
 .  .  .  [1] [Octet String] <8>
             6b 72 62 35 64 61 74 61     krb5data
 
+encode_krb5_padata_sequence:
+
+[Sequence/Sequence Of] 
+.  [Sequence/Sequence Of] 
+.  .  [1] [Integer] <1>
+         0d                          .
+.  .  [2] [Octet String] <7>
+         70 61 2d 64 61 74 61        pa-data
+.  [Sequence/Sequence Of] 
+.  .  [1] [Integer] <1>
+         0d                          .
+.  .  [2] [Octet String] <7>
+         70 61 2d 64 61 74 61        pa-data
+
+encode_krb5_padata_sequence(empty):
+
+[Sequence/Sequence Of] 
+