in yubikey/pkg/value/encryption/envelope/piv/manager.go [103:123]
func (o *pivOpener) tryOpen(name string, wantSerial uint32) (*gopiv.YubiKey, error) {
// Open card
card, err := gopiv.Open(name)
if err != nil {
return nil, fmt.Errorf("cannot open PIV card: %w", err)
}
// Read serial number
gotSerial, err := card.Serial()
if err != nil {
return nil, fmt.Errorf("cannot get PIV card serial: %w", err)
}
// Compare with given
if gotSerial != wantSerial {
return nil, fmt.Errorf("unwanted serial: %08x", gotSerial)
}
// No error
return card, nil
}