4:8
  9   ˆl–ßi~”*j"Tâ‚À‚à]S�ÿÁƒh¹a–ßi~”*j"Tâ‚À‚à€¦-ÿÄ      4:10
     �Æ¾Ä      File not found.
      ˆl–ßi~”*j"Tâ‚À‚à€¦-ÿÃ0¿Å  1   ˆl–Ãa¾”jC]Š€và¸”Å£ÄƒÍ?_�uÐb&=LyZof¯ÁÇ 9    ‹     ÕXmo7þ®_1'4•\[kIu�V��s»p‰KnrÀ	µËÕn½KnH®ázÿýžáJ¶äªiœË—
P,‡Ãyyæ…	Â&�WNÂe‘ÈóÍ¥’F8ÓlEc¯„¢“ wBm¿œdE™Kú>8é4‚°É_š8¡bab*�Å,—O>ýJŸFKš”‘¿JãU%[ŠHR{™JEKI‘P-G••ŒÇP,KÈQ`K
~Xø•âU#¼¬_g,ë…œgŠÒÌ`~AN~t� q4|ÓT‚¯¤0ü¦wHò¡ï9rƒ3ÏÈÞ�Ð¤$«è•
#"'9#”ÍqL+Kpû*–I¦àkëL¦æ6 
¿kw:´ÌòÜ‹šg	fªÔž½p-ÅÂ¦GÌ8yÆš©Ì<í_Í-š \&ÎŠuÅg?TÚÉ#=˜ov™M6OÝg­Ððð±B¤²&Á1eæ˜;”YŽBLNCÒô–Þt/É¥ÒÈDIKÍ±›AîBd9ó®ï}¿QtØ"ù±äÄ¾oÂ¦ŒN’#/Ii—Â}LužJë±°Ì\JÃçgˆ‹3¶¿{ÓA(-§a¸hu‚Þ¢¦­N¯l…¶Ó?\ÿ>mÛ[»€�„Âÿ„èFÓZàš€p”Y½ÞÚ¡jW§'ÕÁ·í^qÚÇ
Žy¹ýªµý»ÃqÊ`¿¦^²\”þ©¸î§ÅýXK»×ß‡c€I³y¿ºÙYÁíÛ«¯Z3þ·Èü±~Û²ßvt(·/zÿ~û¢Vkë¢­[6W¬+Ê…�D)É"®0Zpž!—8ýëŒ¡Äè‚æõ–¥[ÀR#S}ªEàãÆ®›{o�€vâBõgMmÝ_<J™tIÕÁrâÑgÝ#™§Êº>B—X~$© 4Ó
ÅÒ†^ïÌåØhÓ«ƒ#J¥À./'¼´ÕÌÊ¨. M@‚]/FåA�Ÿþ/jsI!Ì2Ëƒúíó3vÇøú%\x�P¤+c‘Ù+]±š©@š"WJ£#i-›äEéÊ••c.pç	‹ðeª�BÁŸI•S‚4…bÁ½GÎ:Ã­Â0Ç–ÃIÌ )¾©b÷k]¶ê’9zëk¢2d.©ëëð:øÒz§çwâærà‘>?=í<ä›?xù°ö°©åo–® »lÀ5;ta¨ž…®‰E¿é•ØðAÔ? ëô´¿+Ž?PçëùˆvIýƒtó—¿†MøÊíŽ=?zKSÆ5§Òºþ`p>/|9�£ƒezEû÷¨Ùïö{�î��îOÈíRšœ?ß÷ƒ–·–k·fTÍ*nõcÞ©£ª Ô|‡ª#‰2Z×Yr•QÄAÿ­².KÐ‚™Ž8Ï—beöÓU‰–ìw¨Ú;i½4ð’µ¢Há_´e”*ßÔãµ6Øôl�Båš\Qóõù«‹fc¯Ía‡Þ¤m„	è2Ž–¼D«¶P¥>þòb2¼�§£ë×µƒ¯|Z>Ú˜¦ÈøBÇ|�üYd1ÔÌ¡/Ò<YopFAº@÷š}'ÕÁW>ëfIM„q.&¥°„G•ªœs"±Ð¿ÊrV¹ÊË›ÔÚ^Þ¾²F“]]·ÈSôS?úpóÄ\¦¢é5áa�0DºTÇ¾B±*Q.¬Öí,�©ù½ƒ›è”ÂäE­Ÿ|g«ùºÈ¸}&(Û'¾fúaÒ¾ÙœÂæ_„ò#T·�«ö°ÃÌñK_%öé¶/èaçì‹Uþ"yû,Ù'¨sögöÕè2’óÅÒ�\/D^1D2ƒùe"÷ŽÖ…J(íL¨™ëÝÆÛ¤ªb&M°i]™Bjùðot²--óÙ�Ìd®—^’-e„¤Æ�¡×1PÅ«<ŸUyìç3šk�ÎKqD(<yùN9<”äV#Ìê3àeä‡*3OG×Ï}
\Üÿ/¶ž¤ï—ˆ{:²÷w–W¸¶Â�ì[²P—ÚÜqæîõ)LÝ)½TïêŠû¹xÚf_v9¿GOÖñ©¢>?{úÛ`gë€¸rýa˜tŽò³„Õé†Þ©ëTfÌê|%æ[ÀæE¯[íäúöfx±Ûg74¶Þb^ŽÐ<ùqad©mæ´YyÌz'ozp¢1Ã�Føm˜ŒRçÊÁññóz5"]3sØy…Gï±ó?þ‰®õxu>z=Å÷âæQÓ´ÌSŒF¿à¡Sô\~Ô1”Fx#ÚÌÏv1ñ¼õÝç·Ó«ëÇ÷>kØõ›>ûðzüï›Ñ/WÓÝû·ÈC]®êÿ¡ÀlÛ¥OK†?ÇãÖ¨ ¨6#,1’c™8<fäÏü
ò�CùÉìzæ‘¯¯c¼â ´,Y1�Ÿ8uu² =`dðTÃlåçæÌñKª¾pù��å"àâÅçY$••–£Ýø–Â­Hx       ˆÀÅƒh¹ÁÇ      4:57
     ˆÆÅƒeÑÄÁÇ ˆ    /* Extract X.509 certificate in DER form from PKCS#11 or PEM.
 *
 * Copyright Â© 2014-2015 Red Hat, Inc. All Rights Reserved.
 * Copyright Â© 2015      Intel Corporation.
 *
 * Authors: David Howells <dhowells@redhat.com>
 *          David Woodhouse <dwmw2@infradead.org>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2.1
 * of the licence, or (at your option) any later version.
 */
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <err.h>
#include <openssl/bio.h>
#include <openssl/pem.h>
#include <openssl/err.h>
#include <openssl/engine.h>

/*
 * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API.
 *
 * Remove this if/when that API is no longer used
 */
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

#define PKEY_ID_PKCS7 2

static __attribute__((noreturn))
void format(void)
{
	fprintf(stderr,
		"Usage: scripts/extract-cert <source> <dest>\n");
	exit(2);
}

static void display_openssl_errors(int l)
{
	const char *file;
	char buf[120];
	int e, line;

	if (ERR_peek_error() == 0)
		return;
	fprintf(stderr, "At main.c:%d:\n", l);

	while ((e = ERR_get_error_line(&file, &line))) {
		ERR_error_string(e, buf);
		fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
	}
}

static void drain_openssl_errors(void)
{
	const char *file;
	int line;

	if (ERR_peek_error() == 0)
		return;
	while (ERR_get_error_line(&file, &line)) {}
}

#define ERR(cond, fmt, ...)				\
	do {						\
		bool __cond = (cond);			\
		display_openssl_errors(__LINE__);	\
		if (__cond) {				\
			err(1, fmt, ## __VA_ARGS__);	\
		}					\
	} while(0)

static const char *key_pass;
static BIO *wb;
static char *cert_dst;
static int kbuild_verbose;

static void write_cert(X509 *x509)
{
	char buf[200];

	if (!wb) {
		wb = BIO_new_f