I think that's what I'm supposed to be doing. Here's how that section of the HMAC spec reads:
ipad = the byte 0x36 repeated B times
opad = the byte 0x5C repeated B times.
Here's the actual formula for computing the HMAC:
H(K XOR opad, H(K XOR ipad, text))
And here's a step by step:
(1) append zeros to the end of K to create a B byte string (e.g., if
K is of length 20 bytes and B=64, then K will be appended with
44 zero bytes 0x00)
(2) XOR (bitwise exclusive-OR) the B byte string computed in step
(1) with ipad
(3) append the stream of data 'text' to the B byte string resulting
from step (2)
(4) apply H to the stream generated in step (3)
(5) XOR (bitwise exclusive-OR) the B byte string computed in step
(1) with opad
(6) append the H result from step (4) to the B byte string
resulting from step (5)
(7) apply H to the stream generated in step (6) and output the
result
These are the variables:
H = the hash function (MD5 in this case)
K = the key used
B = the byte length of the blocks of data computed by the hash (64 for MD5)
L = the byte lenght of the hash outputs (16 for MD5)
ipad = the byte 0x36 repeated B times
opad = the byte 0x5c repeated B times