[Redbutton-devel] SF.net SVN: redbutton: [437] redbutton-author/trunk
Brought to you by:
skilvington
|
From: <ski...@us...> - 2007-10-15 08:52:30
|
Revision: 437
http://redbutton.svn.sourceforge.net/redbutton/?rev=437&view=rev
Author: skilvington
Date: 2007-10-15 01:52:29 -0700 (Mon, 15 Oct 2007)
Log Message:
-----------
forgot these files
Added Paths:
-----------
redbutton-author/trunk/asn1decode.c.header
redbutton-author/trunk/asn1decode.h.footer
redbutton-author/trunk/asn1decode.h.header
Added: redbutton-author/trunk/asn1decode.c.header
===================================================================
--- redbutton-author/trunk/asn1decode.c.header (rev 0)
+++ redbutton-author/trunk/asn1decode.c.header 2007-10-15 08:52:29 UTC (rev 437)
@@ -0,0 +1,111 @@
+#include "asn1decode.h"
+#include "der_decode.h"
+#include "asn1tag.h"
+
+void verbose(char *, ...);
+
+int asn1decode_BOOLEAN(FILE *der, FILE *out, int length)
+{
+ int left = length;
+ int sublen;
+ struct der_tag tag;
+
+ verbose("<BOOLEAN>\n");
+
+ if((sublen = der_decode_Tag(der, &tag)) < 0)
+ return der_error("BOOLEAN");
+ left -= sublen;
+
+ if(is_BOOLEAN(tag.class, tag.number))
+ {
+ der_decode_BOOLEAN(der, out, tag.length);
+ left -= tag.length;
+ }
+ else
+ {
+ return der_error("BOOLEAN");
+ }
+
+ if(left != 0)
+ return der_error("BOOLEAN: %d bytes left", left);
+
+ verbose("</BOOLEAN>\n");
+
+ return length;
+}
+
+bool is_BOOLEAN(unsigned char class, unsigned int number)
+{
+ return MATCH_TAGCLASS(class, number, ASN1TAGCLASS_BOOLEAN);
+}
+
+int asn1decode_INTEGER(FILE *der, FILE *out, int length)
+{
+ int left = length;
+ int sublen;
+ struct der_tag tag;
+
+ verbose("<INTEGER>\n");
+
+ if((sublen = der_decode_Tag(der, &tag)) < 0)
+ return der_error("INTEGER");
+ left -= sublen;
+
+ if(is_INTEGER(tag.class, tag.number))
+ {
+ der_decode_INTEGER(der, out, tag.length);
+ left -= tag.length;
+ }
+ else
+ {
+ return der_error("INTEGER");
+ }
+
+ if(left != 0)
+ return der_error("INTEGER: %d bytes left", left);
+
+ verbose("</INTEGER>\n");
+
+ return length;
+}
+
+bool is_INTEGER(unsigned char class, unsigned int number)
+{
+ return MATCH_TAGCLASS(class, number, ASN1TAGCLASS_INTEGER);
+}
+
+int asn1decode_Null(FILE *der, FILE *out, int length)
+{
+ int left = length;
+ int sublen;
+ struct der_tag tag;
+
+ verbose("<Null>\n");
+
+ if((sublen = der_decode_Tag(der, &tag)) < 0)
+ return der_error("Null");
+ left -= sublen;
+
+ if(is_Null(tag.class, tag.number))
+ {
+ der_decode_Null(der, out, tag.length);
+ left -= tag.length;
+ }
+ else
+ {
+ return der_error("Null");
+ }
+
+ if(left != 0)
+ return der_error("Null: %d bytes left", left);
+
+ verbose("</Null>\n");
+
+ return length;
+}
+
+bool is_Null(unsigned char class, unsigned int number)
+{
+ return MATCH_TAGCLASS(class, number, ASN1TAGCLASS_NULL);
+}
+
Added: redbutton-author/trunk/asn1decode.h.footer
===================================================================
--- redbutton-author/trunk/asn1decode.h.footer (rev 0)
+++ redbutton-author/trunk/asn1decode.h.footer 2007-10-15 08:52:29 UTC (rev 437)
@@ -0,0 +1,2 @@
+#endif /* __ASN1DECODE_H__ */
+
Added: redbutton-author/trunk/asn1decode.h.header
===================================================================
--- redbutton-author/trunk/asn1decode.h.header (rev 0)
+++ redbutton-author/trunk/asn1decode.h.header 2007-10-15 08:52:29 UTC (rev 437)
@@ -0,0 +1,15 @@
+#ifndef __ASN1DECODE_H__
+#define __ASN1DECODE_H__
+
+#include <stdio.h>
+#include <stdbool.h>
+
+int asn1decode_BOOLEAN(FILE *, FILE *, int);
+bool is_BOOLEAN(unsigned char, unsigned int);
+
+int asn1decode_INTEGER(FILE *, FILE *, int);
+bool is_INTEGER(unsigned char, unsigned int);
+
+int asn1decode_Null(FILE *, FILE *, int);
+bool is_Null(unsigned char, unsigned int);
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|