func()

in pkg/cmd/jwks/root.go [57:93]


func (jc *jwksCmd) run() error {
	mlog.Debug("generating JSON Web Key Set", "publicKeys", jc.publicKeys)

	var pubKeys []interface{}
	for _, file := range jc.publicKeys {
		pubKey, err := keyutil.PublicKeysFromFile(file)
		if err != nil {
			return errors.Wrap(err, "failed to read public key file")
		}
		pubKeys = append(pubKeys, pubKey...)
	}

	keySet, err := publicJWKSFromKeys(pubKeys)
	if err != nil {
		return errors.Wrap(err, "failed to construct JSONWebKeySet from a list of keys")
	}
	keysetJSON, err := json.MarshalIndent(keySet, "", "  ")
	if err != nil {
		return errors.Wrap(err, "failed to marshal JSONWebKeySet")
	}

	if jc.outputFile != "" {
		// write the keyset to the file
		if err = os.WriteFile(jc.outputFile, keysetJSON, 0600); err != nil {
			return errors.Wrap(err, "failed to write JWKS to file")
		}
		mlog.Debug("wrote JWKS", "file", jc.outputFile)
		return nil
	}

	mlog.Debug("writing JWKS to stdout")
	// write the keyset to stdout
	if _, err = os.Stdout.Write(keysetJSON); err != nil {
		return errors.Wrap(err, "failed to write JWKS to stdout")
	}
	return nil
}