aboutsummaryrefslogtreecommitdiff
path: root/ber/obj.go
diff options
context:
space:
mode:
Diffstat (limited to 'ber/obj.go')
-rw-r--r--ber/obj.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/ber/obj.go b/ber/obj.go
index 735ef97..f2e76d1 100644
--- a/ber/obj.go
+++ b/ber/obj.go
@@ -1,12 +1,13 @@
package ber
func base128(n int) (b []byte) {
+ if n == 0 {
+ return []byte{0x00}
+ }
l := 0
-
for i := n; i > 0; i >>= 7 {
l++
}
-
for i := l - 1; i >= 0; i-- {
o := byte(n >> uint(i*7))
o &= 0x7F
@@ -22,8 +23,13 @@ func debase128(b []byte) int {
return 0
}
-func marshalObj(obj []int) []byte {
- return []byte{}
+func marshalObj(obj []int) (b []byte) {
+ first := obj[0]*40 + obj[1]
+ b = append(b, base128(first)...)
+ for _, o := range obj[2:] {
+ b = append(b, base128(o)...)
+ }
+ return b
}
func unmarshalObj(b []byte) []int {