#include <stdio.h>
static const char *certB64 =
"MIICZzCCAh6gAwIBAgIGAOjUpRACMAoGCCqGSM49BAMCMDsxCzAJBgNVBAYTAktSMQ4wDAYDVQQKDAVQRU5UQTEMMAoGA1UECwwDUEtJMQ4wDAYD"
"VQQDDAVFQ0NDQTAeFw0xNzA3MTkxNTAwMDBaFw0xODA3MjAxNDU5NTlaMEUxCzAJBgNVBAYTAktSMQ4wDAYDVQQKDAVQRU5UQTEMMAoGA1UECwwD"
"UEtJMRgwFgYDVQQDDA9FQ0RTQV9zZWNwMTkycjEwSTATBgcqhkjOPQIBBggqhkjOPQMBAQMyAAQwfngoTe35z/5fShA3saeGqfrcDi0NF9wr8b5b"
"3DJGXhVObNFqLrh8IadKOR6kjR6jggESMIIBDjBkBgNVHSMEXTBbgBT0gEWgUNnasgeM2CjTJuYtHHkiFaFApD4wPDELMAkGA1UEBhMCS1IxDjAM"
"BgNVBAoMBVBFTlRBMQwwCgYDVQQLDANQS0kxDzANBgNVBAMMBkVDQ1JDQYIBAjAdBgNVHQ4EFgQU++yqycDRrNEZTorCL1OUCGWyGZYwDgYDVR0P"
"AQH/BAQDAgPoMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBYBgNVHR8EUTBPME2gS6BJhkdsZGFwOi8vMTAuMC44MS41OjM4OS9jbj1k"
"cF9rXy1vQ0RQNFFPLWlxZl9EQUVkM2lncDAsb3U9UEtJLG89UEVOVEEsYz1LUjAKBggqhkjOPQQDAgM3ADA0AhgjNG0Ojm5DQNd+/mppOYIuqX+6"
"LesJHtUCGFzr6NzVgCsc4dxJYI7/M5nXCkz9Yn2eDA==";
static unsigned char certBytes[4096] = { 0, };
static int certBytesLen = 0;
static const char *priKeyB64 =
"MIGfMBoGCCqDGoyaRAEPMA4ECIdWIwZIMicUAgIFSQSBgCYPLXhPSN6vCQFt7TjDTmQivYIyl9q/Je2YbX2QTGRMCxEXPliYiQNdk4EjP6KV43Uh"
"HLeu9zR4NCf59DQAisTn5eHB3m1j3U6Xo801e27aiSGPEh6bKCctfKYHjBhJrLUJt6126McBlTWTtoP2hxlGgY8o1ySin96fy5K+IMHJ";
static unsigned char priKeyBytes[2048] = { 0, };
static int priKeyBytesLen = 0;
static const char *password = "jkljkl..";
static int sample_setup() {
return 1;
}
return 1;
}
return 1;
}
return 0;
}
static int sample_sg_rawbytes() {
char signature[4096];
int signature_len;
const char *message = "this is a test!";
int message_len = strlen(message);
printf("sample_sg_rawbytes() => ");
}
}
}
}
printf("[OK]\n");
return 0;
} else {
return 1;
}
}
int main() {
int result;
result = sample_setup();
if (result != 0) {
return result;
}
return sample_sg_rawbytes();
}
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_PUBLICKEY_ReadFromCertificate(PUBLICKEY *destKey, CERTIFICATE *cert)
인증서에서 공개키를 가져온다.
#define ISSAC_PUBLICKEY_Create(a)
Definition: issacapi_bs_publickey.h:27
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_PUBLICKEY_Finalize(PUBLICKEY *key)
PUBLICKEY 에 할당된 메모리를 해제한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_SG_VerifySignature_Core_WithHashNid(void *signature_value, int signature_value_len, const void *message, int message_len, CERTIFICATE *certificate, time_t sign_time, int hashNid)
PKCS #7의 서명자 정보가 없는 SignedData를 생성한 후 서명값만 재조합하여 서명값을 검증한다.
WA_SDK_API ISSAC_RETURN FUNCCALL ISSAC_SignRawBytes_WithHashNid(void *sigVal, int *sigValLen, int sigValAllocLen, const void *message, int messageLen, PRIVATEKEY *privateKey, PUBLICKEY *publicKey, int hashNid)
입력한 메시지를 서명한다.
인증서에 대한 컨텍스트
Definition: issacapi_bs_definitions.h:106
PKCS#8 형식의 개인키에 대한 컨텍스트
Definition: issacapi_bs_definitions.h:152
공개키에 대한 컨텍스트
Definition: issacapi_bs_definitions.h:158