diff --git a/Limelight/Crypto/CryptoManager.h b/Limelight/Crypto/CryptoManager.h index 8fe40dd..ba384d3 100644 --- a/Limelight/Crypto/CryptoManager.h +++ b/Limelight/Crypto/CryptoManager.h @@ -16,6 +16,7 @@ + (NSData*) readKeyFromFile; + (NSData*) readP12FromFile; + (NSData*) getSignatureFromCert:(NSData*)cert; ++ (NSData*) nullTerminateString:(NSData*)data; - (NSData*) createAESKeyFromSalt:(NSData*)saltedPIN; - (NSData*) SHA1HashData:(NSData*)data; diff --git a/Limelight/Crypto/CryptoManager.m b/Limelight/Crypto/CryptoManager.m index 3269494..62144b0 100644 --- a/Limelight/Crypto/CryptoManager.m +++ b/Limelight/Crypto/CryptoManager.m @@ -76,8 +76,14 @@ static NSData* p12 = nil; return (((int)[data length] + 15) / 16) * 16; } ++ (NSData*) nullTerminateString:(NSData*)data { + NSMutableData* mutData = [NSMutableData dataWithData:data]; + [mutData appendBytes:"" length:1]; + return mutData; +} + - (bool) verifySignature:(NSData *)data withSignature:(NSData*)signature andCert:(NSData*)cert { - const char* buffer = [cert bytes]; + const char* buffer = [[CryptoManager nullTerminateString:cert] bytes]; X509* x509; BIO* bio = BIO_new(BIO_s_mem()); BIO_puts(bio, buffer); @@ -105,7 +111,7 @@ static NSData* p12 = nil; } - (NSData *)signData:(NSData *)data withKey:(NSData *)key { - const char* buffer = [key bytes]; + const char* buffer = [[CryptoManager nullTerminateString:key] bytes]; BIO* bio = BIO_new(BIO_s_mem()); BIO_puts(bio, buffer); @@ -188,7 +194,7 @@ static NSData* p12 = nil; } + (NSData *)getSignatureFromCert:(NSData *)cert { - const char* buffer = [cert bytes]; + const char* buffer = [[CryptoManager nullTerminateString:cert] bytes]; X509* x509; BIO* bio = BIO_new(BIO_s_mem()); BIO_puts(bio, buffer);