Index: src/XMPPDiscoEntity.m ================================================================== --- src/XMPPDiscoEntity.m +++ src/XMPPDiscoEntity.m @@ -88,14 +88,16 @@ OF_GETTER(_capsNode, YES); } - (OFString*)capsHash { - OFMutableString *caps = [OFMutableString string]; OFEnumerator *enumerator; XMPPDiscoIdentity *identity; OFString *feature; + OFMutableString *caps = [OFMutableString string]; + OFSHA1Hash *hash = [OFSHA1Hash hash]; + OFDataArray *digest = [OFDataArray dataArray]; enumerator = [_identities objectEnumerator]; while ((identity = [enumerator nextObject]) != nil) [caps appendFormat: @"%@/%@//%@<", [identity category], [identity type], [identity name]]; @@ -102,11 +104,17 @@ enumerator = [_features objectEnumerator]; while ((feature = [enumerator nextObject]) != nil) [caps appendFormat: @"%@<", feature]; - return [caps SHA1Hash]; + [hash updateWithBuffer: [caps UTF8String] + length: [caps UTF8StringLength]]; + + [digest addItems: [hash digest] + count: [OFSHA1Hash digestSize]]; + + return [digest stringByBase64Encoding]; } - (void)connection: (XMPPConnection*)connection wasBoundToJID: (XMPPJID*)JID {