簡體   English   中英

GNUTLS中的SNI,什么時候問?

[英]SNI in GNUTLS, when to ask?

因此,我正在嘗試在我的GNUTLS服務器中實現SNI。

我的代碼:

if(sniCallback != NULL) {
    size_t ds = 256;
    char data[ds];
    unsigned int type = (unsigned int)GNUTLS_NAME_DNS;
    int snir = gnutls_server_name_get(sessiond, &data[0], &ds, &type, (unsigned int)0);
    data[ds - 1] = 0; // the last one must always be \0
    if(snir >= 0) {
        jstring js = (*this)->NewStringUTF(this, data);
        jlong snicert = (*this)->CallLongMethod(this, sniCallback, (*this)->GetMethodID(this, (*this)->GetObjectClass(this, sniCallback), "getSNICert", "(Ljava/lang/String;)J"), js);
        if(snicert > 0L) {
            struct cert* oc = (struct cert*)snicert;
            gnutls_credentials_set(sessiond, GNUTLS_CRD_CERTIFICATE, oc->cert);
        }
    } else {
        printf("%i\n", snir);
    }
}

(不要介意JNI)

我得到-56錯誤代碼,即GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE ,該文檔將其翻譯為尚未發送任何SNI。 我何時知道SNI信息? 又名,何時可以收到客戶問候? 我是直接從Chrome瀏覽器獲取的,所以我知道有SNI。 順便說一下,這就是所有NIO。

對於那些和我一樣的人,答案是:

gnutls_handshake_set_post_client_hello_function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM