Skip to content

Instantly share code, notes, and snippets.

@mizzy
Created March 19, 2018 09:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mizzy/971319689e1dde7fb2d884bd1d35a06b to your computer and use it in GitHub Desktop.
Save mizzy/971319689e1dde7fb2d884bd1d35a06b to your computer and use it in GitHub Desktop.
package main
import (
"encoding/asn1"
"fmt"
)
type attr struct {
Type int
Version int
Value []byte
}
func main() {
var ra1 attr
ra1.Type = 0
v1, _ := asn1.Marshal("ProductionSandbox")
ra1.Value = v1
var ra2 attr
ra2.Type = 2
v2, _ := asn1.Marshal(34)
ra2.Value = v2
data, _ := asn1.Marshal([]attr{ra1, ra2})
var r asn1.RawValue
asn1.Unmarshal(data, &r)
data = r.Bytes
for len(data) > 0 {
var ra attr
data, _ = asn1.Unmarshal(data, &ra)
switch ra.Type {
case 0:
var s string
if _, err := asn1.Unmarshal(ra.Value, &s); err != nil {
fmt.Println(err)
} else {
fmt.Println(s)
}
case 2:
var i int64
if _, err := asn1.Unmarshal(ra.Value, &i); err != nil {
fmt.Println(err)
} else {
fmt.Println(i)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment