Merge branch 'topic/mm-fixes' of git://208.110.73.182/silc into silc.1.1.branch
[silc.git] / lib / silcasn1 / tests / test_silcasn1.c
index 1400a2692627b9df669de167d915a3a274fc003f..74bd8c807f142bdb34d1c1c4fc3c8c62f237c6e1 100644 (file)
@@ -51,7 +51,7 @@ int main(int argc, char **argv)
   SilcBool val = TRUE;
   int i;
   unsigned char *str;
-  SilcUInt32 str_len;
+  SilcUInt32 str_len, tmpint;
   char tmp[32];
   SilcRng rng;
   SilcMPInt mpint, mpint2;
@@ -710,9 +710,45 @@ int main(int argc, char **argv)
   printf("\n");
 
 
-#endif
+  memset(&node, 0, sizeof(node));
+  SILC_LOG_DEBUG(("Encoding ASN.1 tree 12 (SHORT INTEGER)"));
+  str_len = 198761;
+  tmpint = 0;
+  SILC_LOG_DEBUG(("Short integer: %d", str_len));
+  SILC_LOG_DEBUG(("Short integer: %d", tmpint));
+  success =
+    silc_asn1_encode(asn1, &node,
+                    SILC_ASN1_SHORT_INT(str_len),
+                    SILC_ASN1_SHORT_INT_T(SILC_ASN1_IMPLICIT, 100, tmpint),
+                    SILC_ASN1_END);
+  if (!success) {
+    SILC_LOG_DEBUG(("Encoding failed"));
+    goto out;
+  }
+  SILC_LOG_DEBUG(("Encoding success"));
+  SILC_LOG_HEXDUMP(("ASN.1 tree"), node.data, silc_buffer_len(&node));
+  SILC_LOG_DEBUG(("Decoding ASN.1 tree 12 (SHORT INTEGER)"));
+  success =
+    silc_asn1_decode(asn1, &node,
+                    SILC_ASN1_SHORT_INT(&str_len),
+                    SILC_ASN1_SHORT_INT_T(SILC_ASN1_IMPLICIT, 100, &tmpint),
+                    SILC_ASN1_END);
+  if (!success) {
+    SILC_LOG_DEBUG(("Decoding failed"));
+    goto out;
+  }
+  SILC_LOG_DEBUG(("Short integer: %d", str_len));
+  SILC_LOG_DEBUG(("Short integer: %d", tmpint));
+  SILC_LOG_DEBUG(("Decoding success"));
+  printf("\n");
+
+#endif /* 1 */
   silc_asn1_free(asn1);
 
+  success = TRUE;
  out:
-  exit(success);
+  SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
+  fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
+
+  return success;
 }