#include <stdio.h>
static const char *certB64 =
"MIIFyjCCBLKgAwIBAgIEAlEqGjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQGEwJLUjENMAsGA1UECgwES0lDQTEVMBMGA1UECwwMQWNjcmVkaXRl"
"ZENBMRUwEwYDVQQDDAxzaWduR0FURSBDQTQwHhcNMTMwNjE4MDQxOTUyWhcNMTQwNzExMTQ1OTU5WjCBkjELMAkGA1UEBhMCS1IxDTALBgNVBAoM"
"BEtJQ0ExEzARBgNVBAsMCmxpY2Vuc2VkQ0ExFjAUBgNVBAsMDVRFU1TrsJzquInsmqkxFjAUBgNVBAsMDVRFU1Tsnbjspp3shJwxETAPBgNVBAsM"
"CFJB7IS87YSwMRwwGgYDVQQDDBPthYzsiqTtirgo6rCc7J24LUEpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqMvo0a+XEcu46zBr"
"ScFFstA9br1I/23/0rZAzbka9trkbavX/yU/WrqcR/OW1T3C9jzEc9wsJV6Holvy+5Nfrs0rT9dKLShv62dNOI4HNQuUJ82p8Mf9hE1aor/q65v7"
"LFlhldSfqQwcmQHVkhE92T54gBYM3tiI14pTRxHXTCC9J0RgR73lyj2K9DCi3EHSFDWxQsrk7498r4bDXmCSLy8N+9cgp0ycf+a16cF2IgkD9fCp"
"GB47MjD6YK6J4G/AlhrYeE3GgNFs2DcdoUXA2tu3RMEQtL/jUc7RkfrCYXVUeQzNs9yU+qkf9gE27FZoOLasTn+iRKLNI1BTxbMACQIDAQABo4IC"
"bTCCAmkwgY8GA1UdIwSBhzCBhIAUrlL9Dg4B+DCGN372GMZJJUpgCXChaKRmMGQxCzAJBgNVBAYTAktSMQ0wCwYDVQQKDARLSVNBMS4wLAYDVQQL"
"DCVLb3JlYSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBDZW50cmFsMRYwFAYDVQQDDA1LSVNBIFJvb3RDQSA0ggIQCjAdBgNVHQ4EFgQUNwJ6J8tk"
"JTw196s9SyXGLvK7hawwDgYDVR0PAQH/BAQDAgbAMHUGA1UdIARuMGwwagYKKoMajJpEBQIBAjBcMCwGCCsGAQUFBwIBFiBodHRwOi8vd3d3LnNp"
"Z25nYXRlLmNvbS9jcHMuaHRtbDAsBggrBgEFBQcCAjAgHh7HdAAgx3jJncEcspQAIKz1x3jHeMmdwRzHhbLIsuQwgYgGA1UdEQSBgDB+gRNoeWNo"
"dWxAc2lnbmdhdGUuY29toGcGCSqDGoyaRAoBAaBaMFgME+2FjOyKpO2KuCjqsJzsnbgtQSkwQTA/BgoqgxqMmkQKAQEBMDEwCwYJYIZIAWUDBAIB"
"oCIEIF1OVexuxxa06/5bQkFRznWf2JV6UaEST0o8H2CX8BanMF4GA1UdHwRXMFUwU6BRoE+GTWxkYXA6Ly9sZGFwLnNpZ25nYXRlLmNvbTozODkv"
"b3U9ZHA2cDk0NzQsb3U9Y3JsZHAsb3U9QWNjcmVkaXRlZENBLG89S0lDQSxjPUtSMEQGCCsGAQUFBwEBBDgwNjA0BggrBgEFBQcwAYYoaHR0cDov"
"L29jc3Auc2lnbmdhdGUuY29tOjkwMjAvT0NTUFNlcnZlcjANBgkqhkiG9w0BAQsFAAOCAQEAHdOAJIjVc+ToFRb08LbciVZQVhxcqOE48gq98Q+2"
"1bUH919MeRMnkENw362YHtpluRlLTWxquHVoGutB20ciHRMScdqCRShGQv+Nb2756ZmmOPsC1q+LFiImOlmv2wnyQir5zATktvwuiM4/aXWL6wA+"
"P1hq2rw3IqUC4Idk21MJZY8EDa71AOwo2tUy/vodMLxqI5N48iuEyKles5TG/Iw5tWhh6qdOX4VF8QEsFY7kLdKoW8PnlFgjHt6vARtswfUTVI5X"
"EaSlxjvQ6LCUJpGp5iwxJxzaXJ+kKQEGyVRTcucKlzTZ0mgJwk71DmZN1cfSqYtpmr0nM1X14hEAXA==";
static unsigned char certBytes[4096] = { 0, };
static int certBytesLen = 0;
static const char *priKeyB64 =
"MIIFEDAaBggqgxqMmkQBDzAOBAjoS6syNypRxAICBAAEggTwPM2aWi0mIFieUG3EfeX2hJuQkS7mE/oPwwe8xpSvJrZBSU8Z1QZjKIsA5T+/2cR4"
"9t/OWqqs8Gi0NFz9F2/MsErMUenVsSdfz+TrKtMpmY+vtzeaWcaKhjLI0jkUfQFjQC1/HE+JTBbPbWiTZbBppNslBpOvB8LwiQ6hhYRlsV7JQUrA"
"+sRGeiwaWlPtZ4tv7XRC2L4qt9rzPLCywR4kbm9KwD20STCXZIOCthjCS0epoTlF9FB0JLurXY/1Oy+xsOJkH3j+6XVo7On6DIw+2VHBtOczhvvp"
"b79htB3kcPfr02bHZ0QeypMmYLthjUlBBqRgciX7O8jUbAcKUTlojrQh/8KaK8qUkLt8WoNmtLQGoq0h8jeFqdGjSHafSP25kyKFQv3AM0hIQd1n"
"ZmVlDJyMyVDz8EriFXolyKVg0YagEKG8sRDA79Kn/ftHskriZyEldM1/8hgCTtbWnBbTuZsWDMIrO1Z16CtpYTVmFkE0Ix1n4J3uJtHJJsT63WpY"
"KzRMAQBg1w0PFQ4IisnJbLS4G7pxmkENaQT8or6jOb1e+G/qyU0rTK4H7+oab5g7XyaJp8NxH8a+cGSFqBK3RPTWHt9YUpGpv9y0v+WpgorQLMA1"
"v/qIoBxg3mp9zs0kKjAHvOGySQ/vZ8ave9611LTfWoaHde8BVCCCoaNYdAKM6642zqEcpXAsp0JB6YqCzgm0UskuLbZ4LXg9zcFSO+jmHhTp6DPo"
"xvCrh3M3NNaOpoM/MLofbL43MDmfkTe9RQBdssRCGV6quGvjVDuZt98b/nYVcF10+PTY9YnYwLzW3/V87L/O+4AoHqVGCt4xPBWjMgBCjyvdVZYw"
"MzdwaFZvb/DWr2Y8zu6g0kWcELOATrjhYOKfysYO7qn/rSvXBE4/IvwnBA4gKTPjwePQ18uDQmlURbsgnAuMzKdnafFgQyE/48FC//mL9PisfBLO"
"sVucdMpelCdzvzXxeMphjA3mQo4P/QD/LMqvVtgoGhNPPhthqz5eEq8iGyZm6sxoA9wJeyt7EGEWlsgttvV1zJiXsHiejZtiJaGWiU2jjX3qhJhb"
"TIarsphm/bRUkWBzy8qxHIo3AMsBcMIX0Mvch0BQ6Uvd/fK81I2KmuAPM4KNilQqVQRwYaczC5Syhj84zTPGLFCTXLwTShJDI5m7jquaazylZ0iW"
"zzl1T17EjvSARUZ6I5i4Uubvo7t7qxJC47gHVrlW9bk2oqKrej8A7IZ7lHElZaZv3eo+8gi1SAX+bOfXLJNd3MhUKYPPmd/jYDpA3wkpb3ZU3kP0"
"kAqfAocJ/KQIDrPjpdgzMrBRylKZWseyPha3W8Fffk+woYlD1jsiZZ6dROqw1YkLJ/nWaDT9/6W0T6oTSz9X1zEhD5ov2bkHV8WZmmZ5Ll7cBoqp"
"q6yyfVZclEZu8y1WiMvHnruTABLaW+I9yo81Y3o3QC2bssfvftKWd21joV22yUB6lhBnBeTm2vyDjunHdPabO0BdzfjQvpA0M7cMCXZC3JSntctS"
"fCmvnnxVamkiuCpB8zQaP836jw1S1YslSSZfdeb85vgoFb21UDfu+aeezPJ3oVxN+isYlhptTls0IadyTUslyN6rveIrZzTOSVwsaBZspnHJm4Bp"
"cBWODaQ7iaqX0r1NbfDTlYpkRVeaQ8htR396alvaO0KjcPaVuMO5VA==";
static unsigned char priKeyBytes[2048] = { 0, };
static int priKeyBytesLen = 0;
static const char *password = "a123456A";
static const char *jumin = "1234561234563";
static int sample_setup() {
return 1;
}
return 1;
}
return 1;
}
return 0;
}
static int sample_vid_basic() {
printf("sample_vid_basic() => ");
}
char rdNum[41];
int rdNumLen;
}
}
printf("[OK]\n");
return 0;
} else {
return 1;
}
}
int main() {
int result;
result = sample_setup();
if (result != 0) {
return result;
}
return sample_vid_basic();
}
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_CERTIFICATE_Delete(CERTIFICATE *cert)
CERTIFICATE 에 할당된 메모리를 해제한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_CERTIFICATE_Create(CERTIFICATE *cert)
CERTIFICATE 를 초기화한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_CERTIFICATE_Read_Memory(CERTIFICATE *cert, const void *buffer, int buffer_len)
인증서를 버퍼에서 읽어들인다. (DER, BASE64, PEM)
unsigned int ISSAC_RETURN
ISSAC-API 실행 결과 [ ISSACAPI_BASIC_RETURN, ISSACAPI_ERRORS, ISSAC_LICENSE_ERR ]
Definition: issacapi_bs_definitions.h:32
@ ISSAC_SUCCESS
(0) 성공
Definition: issacapi_bs_definitions.h:37
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_BASE64_Decode(void *data, int *data_len, int data_alloc_len, const char *code)
입력한 BASE64 문자열을 바이너리 데이터로 디코딩한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_Initialize(void)
모듈을 초기화한다.
WA_SDK_API const char *FUNCCALL ISSAC_GetErrorMessage(ISSAC_RETURN errorCode)
ISSAC-API 의 에러코드에 대한 에러메시지를 가져온다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_PRIVATEKEY_Read_Memory(PRIVATEKEY *privatekey, const void *buffer, int buffer_len, const char *pin)
PKCS#8 개인키를 버퍼에서 읽어들인다. (DER)
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_PRIVATEKEY_Create(PRIVATEKEY *key)
PRIVATEKEY 를 초기화한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_PRIVATEKEY_Delete(PRIVATEKEY *key)
PRIVATEKEY 에 할당된 메모리를 해제한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_VID_GetRandomNum(void *rdNum, int *rdNum_len, int rdNum_alloc_len, PRIVATEKEY *prikey)
개인키에서 R값을 추출한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_VID_CompareInputVID_WithCert(CERTIFICATE *certificate, char *idn, void *rdNum, int rdNum_len)
개인키에서 추출한 R값을 이용해 인증서의 VID가 맞는지 확인한다.
인증서에 대한 컨텍스트
Definition: issacapi_bs_definitions.h:106
PKCS#8 형식의 개인키에 대한 컨텍스트
Definition: issacapi_bs_definitions.h:152