func()

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
}