in sec/sign.go [315:339]
func (key *PubSignKey) SigType() (SigType, error) {
if key.Rsa != nil {
switch key.Rsa.Size() {
case 2048 / 8:
return SIG_TYPE_RSA2048, nil
case 3072 / 8:
return SIG_TYPE_RSA3072, nil
default:
return 0, errors.Errorf("unknown RSA key size (bytes): %d", key.Rsa.Size())
}
} else if key.Ec != nil {
switch key.Ec.Curve.Params().Name {
case "P-224":
return SIG_TYPE_ECDSA224, nil
case "P-256":
return SIG_TYPE_ECDSA256, nil
default:
return 0, errors.Errorf("unknown EC curve: %s", key.Ec.Curve.Params().Name)
}
} else if key.Ed25519 != nil {
return SIG_TYPE_ED25519, nil
}
return 0, errors.Errorf("invalid key: no non-nil members")
}