      * lowercase-hex-encoded first 16 bytes of the SHA-256 hash of the
      * bytes of kB.
      */
-    class func computeClientState(kB: NSData) -> String? {
+    public class func computeClientState(kB: NSData) -> String? {
         if kB.length != 32 {
             return nil
         }
         return kB.sha256.subdataWithRange(NSRange(location: 0, length: 16)).hexEncodedString
     }
 
-    class func quickStretchPW(email: NSData, password: NSData) -> NSData {
+    public class func quickStretchPW(email: NSData, password: NSData) -> NSData {
         let salt: NSMutableData = NSMutableData(data: KW("quickStretch")!)
         salt.appendData(":".utf8EncodedData!)
         salt.appendData(email)
         return password.derivePBKDF2HMACSHA256KeyWithSalt(salt, iterations: 1000, length: 32)
     }
 
-    class func computeUnwrapKey(stretchedPW: NSData) -> NSData {
+    public class func computeUnwrapKey(stretchedPW: NSData) -> NSData {
         let salt: NSData = NSData()
         let contextInfo: NSData = KW("unwrapBkey")!
         let bytes = stretchedPW.deriveHKDFSHA256KeyWithSalt(salt, contextInfo: contextInfo, length: UInt(KeyLength))

        return deferred
    }

    func keys(keyFetchToken: NSData) -> Deferred<Result<FxAKeysResponse>> {
        let deferred = Deferred<Result<FxAKeysResponse>>()

        let salt: NSData = NSData()

    }
}

public struct FxASignResponse {
    public let certificate: String

    init(certificate: String) {
        self.certificate = certificate
