Skip to content

Commit 3a5739a

Browse files
Add support for raw-public-key
1 parent 27a5976 commit 3a5739a

18 files changed

Lines changed: 2504 additions & 3 deletions

File tree

certs/include.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,5 @@ include certs/falcon/include.am
140140
include certs/rsapss/include.am
141141
include certs/dilithium/include.am
142142
include certs/sphincs/include.am
143+
include certs/rpk/include.am
143144

certs/renewcerts.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,28 @@ run_renewcerts(){
687687
echo "End of section"
688688
echo "---------------------------------------------------------------------"
689689

690+
############################################################
691+
########## update Raw Public Key certificates ##############
692+
############################################################
693+
echo "Updating certificates"
694+
echo "Updating client-cert-rpk.der"
695+
cp client-keyPub.der ./rpk/client-cert-rpk.der
696+
check_result $? "Step 1"
697+
698+
echo "Updating client-ecc-cert-rpk.der"
699+
cp ecc-client-keyPub.der ./rpk/ecc-client-cert-rpk.der
700+
check_result $? "Step 2"
701+
702+
echo "Updating server-cert-rpk.der"
703+
openssl rsa -inform pem -in server-key.pem -outform der -out ./rpk/server-cert-rpk.der -pubout
704+
check_result $? "Step 3"
705+
706+
echo "Updating server-ecc-cert-rpk.der"
707+
openssl ec -inform pem -in ecc-key.pem -outform der -out ./rpk/server-ecc-cert-rpk.der -pubout
708+
check_result $? "Step 4"
709+
710+
echo "End of section"
711+
echo "---------------------------------------------------------------------"
690712
############################################################
691713
###### update the ecc-rsa-server.p12 file ##################
692714
############################################################

certs/rpk/client-cert-rpk.der

294 Bytes
Binary file not shown.

certs/rpk/client-ecc-cert-rpk.der

91 Bytes
Binary file not shown.

certs/rpk/include.am

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# vim:ft=automake
2+
# All paths should be given relative to the root
3+
#
4+
5+
EXTRA_DIST += \
6+
certs/rpk/client-cert-rpk.der \
7+
certs/rpk/client-ecc-cert-rpk.der \
8+
certs/rpk/server-cert-rpk.der \
9+
certs/rpk/server-ecc-cert-rpk.der

certs/rpk/server-cert-rpk.der

294 Bytes
Binary file not shown.

certs/rpk/server-ecc-cert-rpk.der

91 Bytes
Binary file not shown.

doc/dox_comments/header_files-ja/ssl.h

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9515,6 +9515,195 @@ WOLFSSL_METHOD *wolfTLSv1_3_method_ex(void* heap);
95159515
*/
95169516
WOLFSSL_METHOD *wolfTLSv1_3_method(void);
95179517

9518+
/*!
9519+
\ingroup Setup
9520+
\brief この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。
9521+
サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。
9522+
Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
9523+
設定する証明書タイプは優先度順に格納したバイト配列として渡します。
9524+
設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
9525+
規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
9526+
9527+
\return WOLFSSL_SUCCESS 成功
9528+
\return BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
9529+
あるいはMAX_CLIENT_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
9530+
\param ctx wolfssl_ctxコンテキストポインタ
9531+
\param ctype 証明書タイプを格納したバッファへのポインタ
9532+
\param len 証明書タイプを格納したバッファのサイズ(バイト数)
9533+
_Example_
9534+
\code
9535+
int ret;
9536+
WOLFSSL_CTX* ctx;
9537+
char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
9538+
int len = sizeof(ctype)/sizeof(byte);
9539+
 ...
9540+
9541+
ret = wolfSSL_CTX_set_client_cert_type(ctx, ctype, len);
9542+
\endcode
9543+
\sa wolfSSL_set_client_cert_type
9544+
\sa wolfSSL_CTX_set_server_cert_type
9545+
\sa wolfSSL_set_server_cert_type
9546+
\sa wolfSSL_get_negotiated_client_cert_type
9547+
\sa wolfSSL_get_negotiated_server_cert_type
9548+
*/
9549+
int wolfSSL_CTX_set_client_cert_type(WOLFSSL_CTX* ctx, const char* buf, int len);
9550+
9551+
/*!
9552+
\ingroup Setup
9553+
\brief この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。
9554+
クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。
9555+
Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
9556+
設定する証明書タイプは優先度順に格納したバイト配列として渡します。
9557+
設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
9558+
規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
9559+
9560+
\return WOLFSSL_SUCCESS 成功
9561+
\return BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
9562+
あるいはMAX_SERVER_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
9563+
9564+
\param ctx wolfssl_ctxコンテキストポインタ
9565+
\param ctype 証明書タイプを格納したバッファへのポインタ
9566+
\param len 証明書タイプを格納したバッファのサイズ(バイト数)
9567+
_Example_
9568+
\code
9569+
int ret;
9570+
WOLFSSL_CTX* ctx;
9571+
char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
9572+
int len = sizeof(ctype)/sizeof(byte);
9573+
 ...
9574+
9575+
ret = wolfSSL_CTX_set_server_cert_type(ctx, ctype, len);
9576+
\endcode
9577+
\sa wolfSSL_set_client_cert_type
9578+
\sa wolfSSL_CTX_set_client_cert_type
9579+
\sa wolfSSL_set_server_cert_type
9580+
\sa wolfSSL_get_negotiated_client_cert_type
9581+
\sa wolfSSL_get_negotiated_server_cert_type
9582+
*/
9583+
int wolfSSL_CTX_set_server_cert_type(WOLFSSL_CTX* ctx, const char* buf, int len);
9584+
9585+
/*!
9586+
\ingroup Setup
9587+
\brief この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。
9588+
サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。
9589+
Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
9590+
設定する証明書タイプは優先度順に格納したバイト配列として渡します。
9591+
設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
9592+
規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
9593+
9594+
\return WOLFSSL_SUCCESS 成功
9595+
\return BAD_FUNC_ARG sslとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
9596+
あるいはMAX_CLIENT_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
9597+
9598+
\param ssl WOLFSSL構造体へのポインタ
9599+
\param ctype 証明書タイプを格納したバッファへのポインタ
9600+
\param len 証明書タイプを格納したバッファのサイズ(バイト数)
9601+
_Example_
9602+
\code
9603+
int ret;
9604+
WOLFSSL* ssl;
9605+
char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
9606+
int len = sizeof(ctype)/sizeof(byte);
9607+
 ...
9608+
9609+
ret = wolfSSL_set_client_cert_type(ssl, ctype, len);
9610+
\endcode
9611+
\sa wolfSSL_CTX_set_client_cert_type
9612+
\sa wolfSSL_CTX_set_server_cert_type
9613+
\sa wolfSSL_set_server_cert_type
9614+
\sa wolfSSL_get_negotiated_client_cert_type
9615+
\sa wolfSSL_get_negotiated_server_cert_type
9616+
*/
9617+
int wolfSSL_set_client_cert_type(WOLFSSL* ssl, const char* buf, int len);
9618+
9619+
/*!
9620+
\ingroup Setup
9621+
\brief この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。
9622+
クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。
9623+
Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
9624+
設定する証明書タイプは優先度順に格納したバイト配列として渡します。
9625+
設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
9626+
規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
9627+
9628+
\return WOLFSSL_SUCCESS 成功
9629+
\return BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
9630+
あるいはMAX_SERVER_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
9631+
9632+
\param ssl WOLFSSL構造体へのポインタ
9633+
\param ctype 証明書タイプを格納したバッファへのポインタ
9634+
\param len 証明書タイプを格納したバッファのサイズ(バイト数)
9635+
_Example_
9636+
\code
9637+
int ret;
9638+
WOLFSSL* ssl;
9639+
char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
9640+
int len = sizeof(ctype)/sizeof(byte);
9641+
 ...
9642+
9643+
ret = wolfSSL_set_server_cert_type(ssl, ctype, len);
9644+
\endcode
9645+
\sa wolfSSL_set_client_cert_type
9646+
\sa wolfSSL_CTX_set_server_cert_type
9647+
\sa wolfSSL_set_server_cert_type
9648+
\sa wolfSSL_get_negotiated_client_cert_type
9649+
\sa wolfSSL_get_negotiated_server_cert_type
9650+
*/
9651+
int wolfSSL_set_server_cert_type(WOLFSSL* ssl, const char* buf, int len);
9652+
9653+
/*!
9654+
\ingroup SSL
9655+
\brief この関数はハンドシェーク終了後に呼び出し、相手とのネゴシエーションの結果得られたクライアント証明書のタイプを返します。
9656+
ネゴシエーションが発生しない場合には戻り値としてWOLFSSL_SUCCESSが返されますが、
9657+
証明書タイプとしてはWOLFSSL_CERT_TYPE_UNKNOWNが返されます。
9658+
9659+
\return WOLFSSL_SUCCESS 成功時にかえります。tpに返された証明書タイプはWOLFSSL_CERT_TYPE_X509,
9660+
WOLFSSL_CERT_TYPE_RPK あるいはWOLFSSL_CERT_TYPE_UNKNOWNのいずれかとなります。
9661+
\return BAD_FUNC_ARG sslとしてNULLを渡した、あるいはtpとしてNULLを渡した
9662+
\param ssl WOLFSSL構造体へのポインタ
9663+
\param tp 証明書タイプが返されるバッファへのポインタ
9664+
_Example_
9665+
\code
9666+
int ret;
9667+
WOLFSSL* ssl;
9668+
int tp;
9669+
 ...
9670+
9671+
ret = wolfSSL_get_negotiated_client_cert_type(ssl, &tp);
9672+
\endcode
9673+
\sa wolfSSL_set_client_cert_type
9674+
\sa wolfSSL_CTX_set_client_cert_type
9675+
\sa wolfSSL_set_server_cert_type
9676+
\sa wolfSSL_CTX_set_server_cert_type
9677+
\sa wolfSSL_get_negotiated_server_cert_type
9678+
*/
9679+
int wolfSSL_get_negotiated_client_cert_type(WOLFSSL* ssl, int* tp);
9680+
9681+
/*!
9682+
\ingroup SSL
9683+
\brief この関数はハンドシェーク終了後に呼び出し、相手とのネゴシエーションの結果得られたサーバー証明書のタイプを返します。
9684+
ネゴシエーションが発生しない場合には戻り値としてWOLFSSL_SUCCESSが返されますが、証明書タイプとしてはWOLFSSL_CERT_TYPE_UNKNOWNが返されます。
9685+
\return WOLFSSL_SUCCESS 成功時にかえります。tpに返された証明書タイプはWOLFSSL_CERT_TYPE_X509,
9686+
WOLFSSL_CERT_TYPE_RPK あるいはWOLFSSL_CERT_TYPE_UNKNOWNのいずれかとなります。
9687+
\return BAD_FUNC_ARG sslとしてNULLを渡した、あるいはtpとしてNULLを渡した
9688+
\param ssl WOLFSSL構造体へのポインタ
9689+
\param tp 証明書タイプが返されるバッファへのポインタ
9690+
_Example_
9691+
\code
9692+
int ret;
9693+
WOLFSSL* ssl;
9694+
int tp;
9695+
 ...
9696+
9697+
ret = wolfSSL_get_negotiated_server_cert_type(ssl, &tp);
9698+
\endcode
9699+
\sa wolfSSL_set_client_cert_type
9700+
\sa wolfSSL_CTX_set_client_cert_type
9701+
\sa wolfSSL_set_server_cert_type
9702+
\sa wolfSSL_CTX_set_server_cert_type
9703+
\sa wolfSSL_get_negotiated_client_cert_type
9704+
*/
9705+
int wolfSSL_get_negotiated_server_cert_type(WOLFSSL* ssl, int* tp);
9706+
95189707
/*!
95199708
\ingroup SSL
95209709
\brief この関数はテストのための固定/静的なエフェラルキーを設定します。

0 commit comments

Comments
 (0)