UseNetworkTLS()

Syntaxe

UseNetworkTLS([ClePrivee$, Certificat$ [, CaCertificat$]])
Description
Active et configure la prise en charge du cryptage TLS pour la bibliothèque réseau. Cette commande doit être appelée avant d'utiliser CreateNetworkServer() ou OpenNetworkConnection() avec les indicateurs TLS.

Arguments

ClePrivee$ (optionnel) La clé privée à utiliser pour TLS lors de l'utilisation de CreateNetworkServer().
Lorsque vous utilisez TLS uniquement avec OpenNetworkConnection(), ce paramètre n'est pas nécessaire.
Il doit être au format suivant :
"-----BEGIN PRIVATE KEY-----"+#LF$+ "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAPEbSQq/uwESZduPtDd83qXXkSPf6lUNa17xhM2fOZQxGr0Fdmvw6IsC+QGX25EE1TG6TFQkHlM2rW8y6a3WEC/WzCNWaTCPYD/rguiAFG+4eQmwHjiJFVec0InjjSG9SX8xwS/gQeWdQniKROO4DmMJO8N7mdUhdHOD SntXdr9zAgMBAAECgYAE+VMgbaQl+YMwbF6DZogRU8kivFPRPV2hr8nVlBtT+09Z5uryfx3NAFqytbdJ3penVviMI9KcVNxvFtXLSEc9KyjzgysorAfUpwFuECCLDbOXX0HlV6rgkqJdhyV6FybcDLvgcvulHQ64QdYRhW+jPx7vXk3h0/JRFqKQJsY7QQJBAPrDLJRPbAw+Mlq1fHBWk 8Z1Qn1ivPAmz+2nPAgDya/xdAlb9GbFAMzCS3upIBpxW70uLI04OuTVhwYL194I5C0CQQD2JHtHp25SkIDpBgZGicEC7yAIE/wPC0P9X85UJqXx5dPx4HbEc8lqSKMbCzkbHyvjHonSHu00QxU1W6ZALFYfAkBcPWzphSl+e2Z0XWvPutkS2FFD5A0R3YUAq1J2tEX9NTj0tGF7aB36M8 ImU7jeYTJYrWJv8+4d/Ll1LOgT4XtlAkAxofOV5EYTsf28fzF+wcJAtDUyS81Uv0HLcqkpQM3PdDeDm253eJ2Rp+nzxxSRynxQBNVnoELWefxp0Pw6DnajAkBF5h7fQIbwAEPrhDzhjMXU7g9k9KzkkJN/bluLbleqkkAz1kfkGtWXJdGITZuY4K/X2yp1diWQ0utZjmOmhWsl"+#LF$+
"-----END PRIVATE KEY-----"
Certificat$ (optionnel) Le certificat à utiliser pour TLS lors de l'utilisation de CreateNetworkServer().
Lorsque vous utilisez TLS uniquement avec OpenNetworkConnection(), ce paramètre n'est pas nécessaire.
Il doit être au format suivant :
"-----BEGIN CERTIFICATE-----"+#LF$+ "MIICnTCCAgYCCQD0AWy2vzfcpzANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVN0YXRlMQ0wCwYDVQQHEwRDaXR5MRUwEwYDVQQKEwxPcmdhbml6YXRpb24xHDAaBgNVBAsTE09yZ2FuaXphdGlvbmFsIFVuaXQxLzAtBgNVBAMTJkNvbW1vbiBOYW1lIChlLmcuLCB5b3VyIH NlcnZlciBkb21haW4pMB4XDTI0MTEwNjE2NTI1N1oXDTI0MTIwNjE2NTI1N1owgZIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVTdGF0ZTENMAsGA1UEBxMEQ2l0eTEVMBMGA1UEChMMT3JnYW5pemF0aW9uMRwwGgYDVQQLExNPcmdhbml6YXRpb25hbCBVbml0MS8wLQYDVQQDEyZDb21tb24gTmFtZSAoZ S5nLiwgeW91ciBzZXJ2ZXIgZG9tYWluKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA8RtJCr+7ARJl24+0N3zepdeRI9/qVQ1rXvGEzZ85lDEavQV2a/DoiwL5AZfbkQTVMbpMVCQeUzatbzLprdYQL9bMI1ZpMI9gP+uC6IAUb7h5CbAeOIkVV5zQieONIb1JfzHBL+BB5Z1CeIpE47gOYwk7w3uZ 1SF0c4NKe1d2v3MCAwEAATANBgkqhkiG9w0BAQUFAAOBgQCprm5a5bg1LqCDdtwDTnRDmVcca6HoUlvbjZLmWdLjltG1McNAATppTy/bF7vT3jXLobA1Vzs2g14POjYQhPnIbRPEnNzvAe+Se3y0YeFOwYarEyFBHKHODGIPaCnXGH8gB9fgcp2SYtLaPKvXdNL44VeYGbD4+fvUcu/zkXqTSg=="+#LF$+
"-----END CERTIFICATE-----"
CaCertificat$ (optionnel) Le certificat d'autorité intermédiaire qui a émis le 'Certificat$' à utiliser pour TLS lors de l'utilisation de CreateNetworkServer().
Lorsque vous utilisez TLS uniquement avec OpenNetworkConnection(), ce paramètre n'est pas nécessaire. Il doit être au même format que 'Certificate$'.

Valeur de retour

Aucune.

Exemple: Serveur TLS

  Timeout = 15000 ; délai d'expiration global de 15 secondes

  PrivateKey$ = "-----BEGIN PRIVATE KEY-----"+#LF$+
         "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAPEbSQq/uwESZduPtDd83qXXkSPf6lUNa17xhM2fOZQxGr0Fdmvw6IsC+QGX25EE1TG6TFQkHlM2rW8y6a3WEC/WzCNWaTCPYD/rguiAFG+4eQmwHjiJFVec0InjjSG9SX8xwS/gQeWdQniKROO4DmMJO8N7mdUhdHODSntXdr9zAgMBAAECgYAE+VMgbaQl+YMwbF6DZogRU8kivFPRPV2hr8nVlBtT+09Z5uryfx3NAFqytbdJ3penVviMI9KcVNxvFtXLSEc9KyjzgysorAfUpwFuECCLDbOXX0HlV6rgkqJdhyV6FybcDLvgcvulHQ64QdYRhW+jPx7vXk3h0/JRFqKQJsY7QQJBAPrDLJRPbAw+Mlq1fHBWk8Z1Qn1ivPAmz+2nPAgDya/xdAlb9GbFAMzCS3upIBpxW70uLI04OuTVhwYL194I5C0CQQD2JHtHp25SkIDpBgZGicEC7yAIE/wPC0P9X85UJqXx5dPx4HbEc8lqSKMbCzkbHyvjHonSHu00QxU1W6ZALFYfAkBcPWzphSl+e2Z0XWvPutkS2FFD5A0R3YUAq1J2tEX9NTj0tGF7aB36M8ImU7jeYTJYrWJv8+4d/Ll1LOgT4XtlAkAxofOV5EYTsf28fzF+wcJAtDUyS81Uv0HLcqkpQM3PdDeDm253eJ2Rp+nzxxSRynxQBNVnoELWefxp0Pw6DnajAkBF5h7fQIbwAEPrhDzhjMXU7g9k9KzkkJN/bluLbleqkkAz1kfkGtWXJdGITZuY4K/X2yp1diWQ0utZjmOmhWsl"+#LF$+
         "-----END PRIVATE KEY-----"

  Cert$ = "-----BEGIN CERTIFICATE-----"+#LF$+
          "MIICnTCCAgYCCQD0AWy2vzfcpzANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVN0YXRlMQ0wCwYDVQQHEwRDaXR5MRUwEwYDVQQKEwxPcmdhbml6YXRpb24xHDAaBgNVBAsTE09yZ2FuaXphdGlvbmFsIFVuaXQxLzAtBgNVBAMTJkNvbW1vbiBOYW1lIChlLmcuLCB5b3VyIHNlcnZlciBkb21haW4pMB4XDTI0MTEwNjE2NTI1N1oXDTI0MTIwNjE2NTI1N1owgZIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVTdGF0ZTENMAsGA1UEBxMEQ2l0eTEVMBMGA1UEChMMT3JnYW5pemF0aW9uMRwwGgYDVQQLExNPcmdhbml6YXRpb25hbCBVbml0MS8wLQYDVQQDEyZDb21tb24gTmFtZSAoZS5nLiwgeW91ciBzZXJ2ZXIgZG9tYWluKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA8RtJCr+7ARJl24+0N3zepdeRI9/qVQ1rXvGEzZ85lDEavQV2a/DoiwL5AZfbkQTVMbpMVCQeUzatbzLprdYQL9bMI1ZpMI9gP+uC6IAUb7h5CbAeOIkVV5zQieONIb1JfzHBL+BB5Z1CeIpE47gOYwk7w3uZ1SF0c4NKe1d2v3MCAwEAATANBgkqhkiG9w0BAQUFAAOBgQCprm5a5bg1LqCDdtwDTnRDmVcca6HoUlvbjZLmWdLjltG1McNAATppTy/bF7vT3jXLobA1Vzs2g14POjYQhPnIbRPEnNzvAe+Se3y0YeFOwYarEyFBHKHODGIPaCnXGH8gB9fgcp2SYtLaPKvXdNL44VeYGbD4+fvUcu/zkXqTSg=="+#LF$+
          "-----END CERTIFICATE-----"

  UseNetworkTLS(PrivateKey$, Cert$)
  If CreateNetworkServer(0, 20252, #PB_Network_TCP | #PB_Network_IPv4 | #PB_Network_TLSv1, "127.0.0.1")
    Debug "Serveur TLS lancé sur 127.0.0.1:20252 - Connexions en attente..."
    
    Repeat
      Select NetworkServerEvent()
        Case #PB_NetworkEvent_Data
          
          Debug "Data reçue !"
          ClientID = EventClient()
          *Buffer = AllocateMemory(1000)
          If *Buffer
            Debug ReceiveNetworkData(ClientID, *Buffer, 1000)
          
            Debug "Texte: "+PeekS(*Buffer, -1, #PB_UTF8)
            SendNetworkString(ClientID, "Bien reçu !!!")
            
            FreeMemory(*Buffer)
          EndIf
          
        Case #PB_NetworkEvent_None
          Delay(100) ; Ne volez pas tout le temps CPU en attendant la connexion
          Timeout - 100
      EndSelect
          
    Until Timeout <= 0
    
    Debug "Fermeture du serveur après " + Str(Timeout/1000) + " secs délai d'expiration"
    
    CloseNetworkServer(0)
  Else
    Debug "Impossible de créer le serveur TLS"
  EndIf

Exemple: TLS Client

  Timeout = 150000 ; 15 secondes de délai d'attente global

  UseNetworkTLS()

  Connection = OpenNetworkConnection("127.0.0.1", 20252, #PB_Network_TCP | #PB_Network_IPv4 | #PB_Network_TLSv1)
  If Connection
    
    ; Envoyez une chaîne au serveur pour tester
    SendNetworkString(Connection, "GET / HTTP/1.1" + #CRLF$ + "Host: www.purebasic.fr" + #CRLF$ + #CRLF$)
    
    Repeat
      Select NetworkClientEvent(Connection)
        Case #PB_NetworkEvent_Data
          *Buffer = AllocateMemory($FFFF)
          If *Buffer
            Length = ReceiveNetworkData(Connection, *Buffer, MemorySize(*Buffer))
            Received$ + PeekS(*Buffer, Length, #PB_UTF8 | #PB_ByteLength)
            Debug "Texte reçu: "+ Received$
            FreeMemory(*Buffer)
          EndIf
          
        Case #PB_NetworkEvent_Disconnect
          Debug "Déconnecté"
          Break
          
        Case #PB_NetworkEvent_None
          Delay(100)
          Timeout - 100
          
      EndSelect
    Until Timeout <= 0
    
    CloseNetworkConnection(Connection)
  Else
    Debug "Impossible d'ouvrir la connexion sur 127.0.0.1:20252"
  EndIf

Voir aussi

CreateNetworkServer(), OpenNetworkConnection()

OS Supportés

Tous

<- ServerID() - Network Index