HMAC implementation based on RFC2104 H(K XOR opad, H(K XOR ipad, text)) modified by jrandom to use the session key byte array directly and to cache a frequently used buffer (called on doFinal).
This is from some very old version of bouncycastle, part of package org.bouncycastle.crypto. Android bundled something similar in pre-Gingerbread, but upgraded to a later, incompatible version in Gingerbread. As of Java 1.4 these are in javax.crypto - more or less. To avoid having to make two different versions of our Android app, we rename to org.bouncycastle.oldcrypto.