aboutsummaryrefslogtreecommitdiff
path: root/ber/len.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-08-08 13:05:41 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-08-08 13:05:41 +0200
commit4c4272628632cc881eb52f675e1219b4fbd491aa (patch)
treec3b5d0d5468a70c9fe251766bcb8c4aaf29e5f33 /ber/len.go
parent0eb96c8c2494cfa093dd289efa35be9b0db6727c (diff)
Parse len
Diffstat (limited to 'ber/len.go')
-rw-r--r--ber/len.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/ber/len.go b/ber/len.go
new file mode 100644
index 0000000..aea9965
--- /dev/null
+++ b/ber/len.go
@@ -0,0 +1,12 @@
+package ber
+
+func UnmarshalLen(b []byte) (i, n int) {
+ if b[0]&0x80 == 0 {
+ return int(b[0]), 1
+ }
+ n = int(b[0]&0x7f)
+ for k := n; k > 0; k-- {
+ i += int(b[k]) << uint((k-1)*8)
+ }
+ return i, n
+}