2024-01-26 01:16:37 +00:00
|
|
|
package asn1obj
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/asn1"
|
|
|
|
"math/big"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Integer returns an ASN.1 OBJECT IDENTIFIER with the oidValue bytes
|
|
|
|
func Integer(bigInt *big.Int) []byte {
|
|
|
|
// should never error
|
|
|
|
asn1result, err := asn1.Marshal(bigInt)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return asn1result
|
|
|
|
}
|
2024-01-27 16:35:35 +00:00
|
|
|
|
|
|
|
// IntegerExplicitValue returns bigInt encoded as an Integer, however
|
|
|
|
// instead of tagging it with Integer it is instead tagged with an
|
|
|
|
// explicit tag of the specified tag number
|
|
|
|
func IntegerExplicitValue(explicitTagNumber int, bigInt *big.Int) []byte {
|
|
|
|
intBytes := Integer(bigInt)
|
|
|
|
|
|
|
|
asn1Obj := asn1.RawValue{}
|
|
|
|
rest, err := asn1.Unmarshal(intBytes, &asn1Obj)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
} else if len(rest) > 0 {
|
|
|
|
panic("invalid extra data")
|
|
|
|
}
|
|
|
|
|
|
|
|
return ExplicitValue(explicitTagNumber, asn1Obj.Bytes)
|
|
|
|
}
|