С помощью командной строки и openssl команды я конечно могу преобразовать PEM, но вот в iOS доступа к командной строке нет.
По поводу указанного вами пример - sdk/openssl/samples/Common/VerifyCMS
Папки Common не существует. Но есть файл VerifyCMS в sdk/openssl/samples/sources, думаю это оно.
Но тут новая проблема - в примере есть функция PEM_read_bio_CMS, но она не дсотупна в моем проекте, а так же в сэмпл-проекте iOS в SDK.
В итоге сейчас я делаю следующее
let file = Bundle.main.url(forResource: "PHOTO.jpg", withExtension: "sig")
var fo = fopen(file!.path, "r")
let inBio = BIO_new_file(file!.path, "r")
let cert1 = PEM_read_bio_PKCS7(inBio, nil, nil, nil)
let fileChecked = Bundle.main.url(forResource: "PHOTO", withExtension: "jpg")
let inData = BIO_new_file(fileChecked!.path, "r")
let r = PKCS7_verify(cert1, nil, nil, inData, nil, 0)
Тут намешан Swift и C (это допустимо). Но в итоге в r у меня 0 и ERR_get_error показывает ошибку 276824181.
Возможно нужно использовать как в примере CMS_verify, но туда нужно передать cms, который нужно получить через PEM_read_bio_CMS, которого нет.
Я уже пятый раз подхожу к этому вопросу и нигде не могу найти четкую последовательно команд