INNER CODE UNIT · Go
marshalASN1
go-piv/piv-go · v2/piv/key.go:905
func marshalASN1(tag byte, data []byte) []byte {
l := marshalASN1Length(uint64(len(data)))
d := append([]byte{tag}, l...)
return append(d, data...)
}
// SetCertificate stores a certificate object in the provided slot. Setting a
// certificate isn't required to use the associated key for signing or
// decryption.
func (yk *YubiKey) SetCertificate(key []byte, slot Slot, cert *x509.Certificate) error {
if err := ykAuthenticate(yk.tx, key, yk.rand, yk.version); err != nil {
return fmt.Errorf("authenticating with management key: %w", err)
}
return ykStoreCertificate(yk.tx, slot, cert)
}
func ykStoreCertificate(tx *scTx, slot Slot, cert *x509.Certificate) error {
// https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-73-4.pdf#page=40