apc-p15-tool/pkg/tools/asn1obj/bitstring.go

28 lines
499 B
Go
Raw Permalink Normal View History

package asn1obj
import (
"encoding/asn1"
"math/bits"
)
// BitString returns a BIT STRING of the content
func BitString(content []byte) []byte {
bs := asn1.BitString{
Bytes: content,
}
// drop trailing 0s by removing them from overall length
if len(content) > 0 {
trailing0s := bits.TrailingZeros8(content[len(content)-1])
bs.BitLength = 8*len(content) - trailing0s
}
// should never error
asn1result, err := asn1.Marshal(bs)
if err != nil {
panic(err)
}
return asn1result
}