Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Support Go native FIPS 140 mode (GODEBUG=fips140=only)

Open
#1,441 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
go

Research direction

Locate ComputeSKI, FillTemplate, and the other cryptographic helpers named in the issue, then inspect their callers and run the relevant package tests with GODEBUG=fips140=only. Confirm which suggested approach is selected; done means cfssl operates in native FIPS mode without non-FIPS runtime failures while preserving the default behavior unless configured otherwise.

Written by the indexing model from the issue text.

Description

Go 1.24 introduced native FIPS 140-3 support via GODEBUG=fips140=only, which rejects all non-FIPS algorithms at runtime, including crypto/sha1.

cfssl uses SHA-1 in several hardcoded places that can't be configured:

  1. ComputeSKI(): hardcoded sha1.Sum() for SubjectKeyId computation, no option to use SHA-256
  2. FillTemplate(): unconditionally calls ComputeSKI(), overwriting any pre-set SubjectKeyId
  3. Various helpers: use crypto primitives that trigger fips140=only panics

While SHA-1 for SKI is recommended by RFC 5280 §4.2.1.2, it's not mandatory, the RFC allows any method that provides unique identification. SHA-256 truncated to 20 bytes is a FIPS-compliant alternative.

Suggested fixes (any of):
- Make the SKI hash algorithm configurable (default SHA-1, option for SHA-256)
- Don't overwrite SubjectKeyId in FillTemplate if the caller already set it
- Detect fips140=only at runtime and switch to SHA-256 automatically

Dominant language
Go
Stars
9.5k
Forks
1.2k
Avg merge
12h 48m
Merged PRs (30d)
2

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from cloudflare/cfssl

All issues in cloudflare/cfssl

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.