INNER CODE UNIT · Go
ykStoreCertificate
go-piv/piv-go · v2/piv/key.go:921
func ykStoreCertificate(tx *scTx, slot Slot, cert *x509.Certificate) error {
// https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-73-4.pdf#page=40
data := marshalASN1(0x70, cert.Raw)
// "for a certificate encoded in uncompressed form CertInfo shall be 0x00"
data = append(data, marshalASN1(0x71, []byte{0x00})...)
// Error Detection Code
data = append(data, marshalASN1(0xfe, nil)...)
// https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-73-4.pdf#page=94
data = append([]byte{
0x5c, // Tag list
0x03, // Length of tag
byte(slot.Object >> 16),
byte(slot.Object >> 8),
byte(slot.Object),
}, marshalASN1(0x53, data)...)
cmd := apdu{
instruction: insPutData,
param1: 0x3f,