19 lines
368 B
C
19 lines
368 B
C
#include "asn1.h"
|
|
|
|
int scan_asn1length(const char* src,const char* max,unsigned long* length) {
|
|
const char* orig=src;
|
|
if (src>max) return 0;
|
|
if (*src&0x80) {
|
|
int chars=*src&0x7f;
|
|
long l=0;
|
|
while (chars>0) {
|
|
if (++src>=max) return 0;
|
|
l=l*256+*src;
|
|
--chars;
|
|
}
|
|
*length=l;
|
|
} else
|
|
*length=*src&0x7f;
|
|
return src-orig+1;
|
|
}
|