In RFC6979, on page 14, Section 3.6 "Variants":
o. Additional data may be added to the input of HMAC, concatenated after bits2octets(H(m)):
K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')
However, in the terminology of SP800-90Ar1, k' is the "additional input" that can be set as a parameter when generating pseudorandom bits.
The line
K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')
appears to be from step d in section 3.2 "Generation of k".
Q1: Additional data k' is concatenated after bits2octets(H(m)) in HMAC input in step d. May we also need to concatenate k' after bits2octets(H(m)) in HMAC input in step f?
I.e., step f becomes
K = HMAC_K(V || 0x01 || int2octets(x) || bits2octets(h1) || k')
Q2: As said
In SP800-90Ar1 terminology, k' is the "additional input"
In SP800-90A, Section 10.1.2.3, pages 46 and 57, "Instantiation of HMAC_DRBG",there is no "additional input" in "HMAC_DRBG Instantiate Process" but k' appears to be passed as "personalization_string" as in SP800-90Ar1 section 10.1.2.3. If k' is used as "personalization_string", then in Q1, we may also concatenate k' after bits2octets(H(m)) in HMAC input in step f, no?
Q3:
In SP800-90A terminology, k' is the "additional input"
In SP800-90Ar1 document section 10.1.2.5 "Generating Pseudorandom Bits Using HMAC_DRBG", there is an "additional_input" argument. Does the "additional input" in RFC6979, Section 3.6, refer to the "additional_input" in SP800-90Ar1 document section 10.1.2.5?
If so, may we need to pass additional data k' as "additional_input" also to "HMAC_DRBG_Generate Process", i.e., in RFC6979 section 3.2. step h.1~h.3?
Presumably as a result, RFC6979 Section 3.2. step h may become:
Inserting a new step before step h.1:
(K, V) = HMAC_DRBG_Update(k', K, V); //step 2 of "HMAC_DRBG_Generate Process"
and the later half of step h.3 may be modified, if k is rejected and generating a new k is needed, the original process appears to be step 6 of "HMAC_DRBG_Generate Process":
(K, V) = HMAC_DRBG_Update(null, K, V)
ie
K = HMAC_K(V || 0x00)
V = HMAC_K(V)
may become
(K, V) = HMAC_DRBG_Update(k', K, V)
ie
K = HMAC_K(V || 0x00 || k')
V = HMAC_K(V)
K = HMAC_K(V || 0x01 || k')
V = HMAC_K(V)
as later half of step h.3.
May such modifications be needed?