libnvme(9)
π libnvme(9) β the API Manual, bestie edition β¨
Okay so picture this: you're deep in the libnvme API manual, section 9, and you've stumbled onto a whole enum of NBFT security flags. Don't panic. Sit down, grab a strawberry π, and let's go through it together, because honestly it's giving "spec document that ate" and I'm obsessed.
πΈ NAME πΈ
enum nbft_security_flags β the Security Profile Descriptor Flags, straight out of Figure 24, no cap.
β SYNOPSIS β
Like, here's the whole squad in order π€
enum nbft_security_flags {
NBFT_SECURITY_VALID ,
NBFT_SECURITY_IN_BAND_AUTH_MASK ,
NBFT_SECURITY_IN_BAND_AUTH_NOT_SUPPORTED ,
NBFT_SECURITY_IN_BAND_AUTH_NOT_REQUIRED ,
NBFT_SECURITY_IN_BAND_AUTH_REQUIRED ,
NBFT_SECURITY_AUTH_POLICY_LIST_MASK ,
NBFT_SECURITY_AUTH_POLICY_LIST_NOT_SUPPORTED ,
NBFT_SECURITY_AUTH_POLICY_LIST_DRIVER ,
NBFT_SECURITY_AUTH_POLICY_LIST_ADMIN ,
NBFT_SECURITY_SEC_CHAN_NEG_MASK ,
NBFT_SECURITY_SEC_CHAN_NEG_NOT_SUPPORTED ,
NBFT_SECURITY_SEC_CHAN_NEG_NOT_REQUIRED ,
NBFT_SECURITY_SEC_CHAN_NEG_REQUIRED ,
NBFT_SECURITY_SEC_POLICY_LIST_MASK ,
NBFT_SECURITY_SEC_POLICY_LIST_NOT_SUPPORTED ,
NBFT_SECURITY_SEC_POLICY_LIST_DRIVER ,
NBFT_SECURITY_SEC_POLICY_LIST_ADMIN ,
NBFT_SECURITY_CIPHER_RESTRICTED ,
NBFT_SECURITY_AUTH_KX_GROUPS_RESTRICTED ,
NBFT_SECURITY_SEC_HASH_FUNC_POLICY_LIST
};
(Yes the blank line before the closing brace is canon. We respect it. π«Ά)
π Constants π
π The basics
NBFT_SECURITY_VALIDβ Descriptor Valid: set to1hand this descriptor is valid, like, actually valid. Cleared to0hand nope, it's not valid. Simple as that. β¨NBFT_SECURITY_IN_BAND_AUTH_MASKβ the mask you use to get the In-Band Authentication Required field. It's literally the key to the door πNBFT_SECURITY_IN_BAND_AUTH_NOT_SUPPORTEDβ in-band authentication? The NVM subsystem simply does not support it. Not its thing. Not its era. πNBFT_SECURITY_IN_BAND_AUTH_NOT_REQUIREDβ in-band authentication is supported by the NVM subsystem, it's just not required. Supportive but chill π¦NBFT_SECURITY_IN_BAND_AUTH_REQUIREDβ in-band authentication is supported by the NVM subsystem and it's required. No skipping, bestie. π
π The authentication policy list crew
NBFT_SECURITY_AUTH_POLICY_LIST_MASKβ mask for the Authentication Policy List flag π this field tells you whether authentication protocols were indicated by policy from driver defaults or from administrative configuration.NBFT_SECURITY_AUTH_POLICY_LIST_NOT_SUPPORTEDβ the Authentication Protocols Heap Object Reference field'sOffsetandLengthare reserved. Reserved. As in, don't touch, not for you πNBFT_SECURITY_AUTH_POLICY_LIST_DRIVERβ the Authentication Protocols Offset field and the Authentication Protocols Length field point at a list of authentication protocols used by the driver π₯NBFT_SECURITY_AUTH_POLICY_LIST_ADMINβ same two fields, but now they point at a list of authentication protocols that were administratively set and used by the driver. Administrative main character energy π
π§ Secure channel negotiation (a.k.a. TLS things)
NBFT_SECURITY_SEC_CHAN_NEG_MASKβ mask to get the Secure Channel Negotiation Required flag π this one tells you whether secure channel negotiation (e.g.TLS) is required. Very "do we need the secure tunnel or not" of it.NBFT_SECURITY_SEC_CHAN_NEG_NOT_SUPPORTEDβ secure channel negotiation is not supported by the NVM subsystem. It said no πNBFT_SECURITY_SEC_CHAN_NEG_NOT_REQUIREDβ supported by the NVM subsystem, but not required. Available, optional, lowkey gorgeous πΈNBFT_SECURITY_SEC_CHAN_NEG_REQUIREDβ supported and required. Mandatory secure channel negotiations, periodt π
π The security policy list crew
NBFT_SECURITY_SEC_POLICY_LIST_MASKβ mask to get the Security Policy List flag β¨ this field indicates whether secure channel protocols were indicated by policy from driver defaults or administrative configuration.NBFT_SECURITY_SEC_POLICY_LIST_NOT_SUPPORTEDβ theOffsetfield andLengthfield in the Secure Channel Algorithm Heap Object Reference field are reserved. Nothing to see here π«ΆNBFT_SECURITY_SEC_POLICY_LIST_DRIVERβ the Heap Object specified by the Secure Channel Algorithm Heap Object Reference field indicates a list of authentication protocols used by the driver. (Yes, that's exactly what the original says. We report, we don't editorialise π)NBFT_SECURITY_SEC_POLICY_LIST_ADMINβ the Heap Object specified by the Secure Channel Algorithm Heap Object Reference field indicates a list of authentication protocols that were administratively set and used by the driver. Admin said what admin said π
π₯ The big three at the end
NBFT_SECURITY_CIPHER_RESTRICTEDβ Cipher Suites Restricted by Policy: set to1hand the Cipher Suite Offset field and the Ciper Suite Length field indicate a list of supported cipher suites by the driver. Cleared to0hand the Cipher Suite Offset field and the Cipher Suite Length field are reserved. (And yes,Ciperis spelled that way in the original β I'm just the messenger, don't come for me π)NBFT_SECURITY_AUTH_KX_GROUPS_RESTRICTEDβ Authentication KX Groups Restricted by Policy List: set to1hand connections shall use one of the authentication KX groups in the Authentication KX Groups List β it's required. Cleared to0hand no Authentication KX Groups List is indicated, and use of an authentication KX group is not required. So basically: required, or not required. The duality π¦NBFT_SECURITY_SEC_HASH_FUNC_POLICY_LISTβ Secure Hash Functions Policy List: set to1hand connections shall use one of the secure hash functions in the Secure Hash Functions Policy List β required. Cleared to0hand no Secure Hash Functions Policy List is indicated, and use of a secure hash function is not required. Hashing: optional unless it's literally not. β
π Friendly reminder:1hmeans set,0hmeans cleared, and "reserved" means hands off. That's the whole vibe check. β
π Sign-off π
That was enum nbft_security_flags (the one and only, as listed in the libnvme(9) API Manual) and honestly? You ate that. This page was dated October 2026 β so yeah, future us wrote it, and future us slayed. Go forth and negotiate your secure channels responsibly, bestie πβ¨π¦π
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms