From 516db55483954d20b73c7076dc49eda6efbaef12 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sat, 28 Sep 2019 12:24:55 +0400 Subject: [PATCH] Fix pkey --- submodules/MtProtoKit/MTPKCS.m | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/submodules/MtProtoKit/MTPKCS.m b/submodules/MtProtoKit/MTPKCS.m index d5c297df00..3a8bf01e48 100644 --- a/submodules/MtProtoKit/MTPKCS.m +++ b/submodules/MtProtoKit/MTPKCS.m @@ -2,6 +2,7 @@ #include #include +#include static NSString * _Nullable readName(X509_NAME *subject) { BIO *subjectBio = BIO_new(BIO_s_mem()); @@ -13,6 +14,16 @@ static NSString * _Nullable readName(X509_NAME *subject) { return result; } +static NSData * _Nullable readPublicKey(EVP_PKEY *subject) { + BIO *subjectBio = BIO_new(BIO_s_mem()); + PEM_write_bio_PUBKEY(subjectBio, subject); + char *dataStart = NULL; + long nameLength = BIO_get_mem_data(subjectBio, &dataStart); + NSString *result = [[NSString alloc] initWithBytes:dataStart length:nameLength encoding:NSUTF8StringEncoding]; + BIO_free(subjectBio); + return [result dataUsingEncoding:NSUTF8StringEncoding]; +} + @implementation MTPKCS - (instancetype)initWithIssuerName:(NSString *)issuerName subjectName:(NSString *)subjectName data:(NSData *)data { @@ -68,7 +79,10 @@ static NSString * _Nullable readName(X509_NAME *subject) { NSString *issuerNameString = readName(issuerName); NSString *subjectNameString = readName(subjectName); - result = [[MTPKCS alloc] initWithIssuerName:issuerNameString subjectName:subjectNameString data:[NSData data]]; + EVP_PKEY *publicKey = X509_get_pubkey(cert); + NSData *data = readPublicKey(publicKey); + + result = [[MTPKCS alloc] initWithIssuerName:issuerNameString subjectName:subjectNameString data:data]; return result; }