کتابخانه‌ی استاندارد · امنیت و رمزنگاری

تی ال اس tls

اتصال امن TLS 1.3 و 1.2 و ابزارهای رمزنگاری کلید عمومی، بی‌نیاز از OpenSSL.

واردسازی تی ال اس

بسته‌ی تی ال اس یک پیاده‌سازی کامل TLS به زبان سلام است و به کتابخانه‌ی بیرونی نیاز ندارد. کارخواه با اتصال امن وصل می‌شود و گواهی سرور را با ریشه‌های سیستم بررسی می‌کند؛ سرور با پیکربندی کارساز جدید گواهی و کلیدش را می‌خواند و هر اتصال را با پوشش کارساز امن می‌کند.

ابزارهای رمزنگاری این بسته برای ساختن پروتکل‌های خودتان هم به کار می‌آیند: دو طرف با ECDH راز مشترک می‌سازند، با HKDF از آن کلید درمی‌آورند و با AES-GCM پیام را رمز و مهر می‌کنند. کلیدها و داده‌ها به شکل بیس۶۴ رد و بدل می‌شوند.

گونه‌ها

پیکربندی Config

ساختار پیکربندی
پیکربندی کارخواه.
نامانگلیسیگونهتوضیح
server_nameserver_nameرشته = ""نام میزبان برای SNI و بررسی گواهی.
ca_fileca_fileرشته = ""پرونده‌ی گواهی‌های ریشه؛ خالی یعنی ریشه‌های سیستم.
insecure_skip_verifyinsecure_skip_verifyمنطقی = نادرستگواهی بررسی نشود؛ فقط برای آزمایش، چون اتصال را در برابر شنود بی‌دفاع می‌کند.
alpnalpnرشته = ""پروتکل برای ALPN، مثل h2.
aes_onlyaes_onlyمنطقی = نادرستفقط رمزهای AES پیشنهاد شود.
tls-Client.salam
واردسازی تی ال اس

روال ریشه:
    ناپایا پ := تی ال اس.پیکربندی جدید("example.com")
    پ.alpn = "http/1.1"
    ناپایا ا := تی ال اس.اتصال امن("example.com"، ۴۴۳، پ)
    اگر وارونه تی ال اس.اتصال معتبر(ا):
        سرچاپ "خطا:"، تی ال اس.خطای اتصال(ا)
        برگشت
    پایان
    سرچاپ تی ال اس.نسخه(ا)، تی ال اس.نام رمز(ا)، تی ال اس.تعداد گواهی همتا(ا)
    _ := تی ال اس.نوشتن(ا، "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")
    ناپایا پاسخ := ""
    تا تی ال اس.اتصال معتبر(ا):
        تکه := تی ال اس.خواندن(ا، ۴۰۹۶)
        اگر تکه.طول() == ۰:
            بشکن
        پایان
        پاسخ += تکه
    پایان
    سرچاپ پاسخ.طول() > ۰
    تی ال اس.بستن اتصال(ا)
پایان

اتصال Conn

ساختار اتصال
یک اتصال TLS.
نامانگلیسیگونهتوضیح
hhHandshakeوضعیت دست‌دهی.
hosthostرشته = ""میزبان.
openopenمنطقی = نادرستاتصال باز است.
insecureinsecureمنطقی = نادرستبدون بررسی گواهی.
pendingpendingBufداده‌ی خوانده‌شده‌ای که هنوز برداشته نشده.
errerrرشته = ""پیام خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

پیکربندی کارساز ServerConfig

ساختار پیکربندی کارساز
پیکربندی سرور: زنجیره‌ی گواهی و کلید خصوصی.
نامانگلیسیگونهتوضیح
chainchainRootsزنجیره‌ی گواهی.
keykeyPrivateKeyکلید خصوصی.
okokمنطقی = نادرستهر دو خوانده شدند.
tls-Server.salam
واردسازی تی ال اس
واردسازی شبکه.تی سی پی شبکه
واردسازی حافظه

روال ریشه:
    پ := تی ال اس.پیکربندی کارساز جدید("cert.pem"، "key.pem")
    اگر وارونه پ.ok:
        سرچاپ "گواهی یا کلید خوانده نشد"
        برگشت
    پایان
    س := تی سی پی شبکه.پیوند(۸۴۴۳)
    تا درست:
        ک := تی سی پی شبکه.پذیرش(س)
        ناپایا ا := تی ال اس.پوشش کارساز(ک.fd، پ)
        اگر تی ال اس.اتصال معتبر(ا):
            اگر تی ال اس.خواندنی(ا) یا تی ال اس.در انتظار(ا) > ۰:
                سرچاپ تی ال اس.خواندن(ا، ۱۰۲۴)
            پایان
            بافر := حافظه.تخصیص(۲۵۶ برگردان طبیعی۶۴)
            n := تی ال اس.خواندن بایت(ا، بافر، ۲۵۶)
            _ := تی ال اس.نوشتن بایت(ا، بافر، n)
            _ := تی ال اس.نوشتن(ا، "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nسلام")
            حافظه.آزادسازی(بافر)
            سرچاپ تی ال اس.توصیفگر(ا) >= ۰
        پایان
        تی ال اس.بستن اتصال(ا)
    پایان
پایان

پایاها و متغیرها

تی ال اس۱۰ TLS10

پایا تی ال اس۱۰: صحیح۳۲ = 769
شماره‌ی نسخه‌ی TLS 1.0؛ پشتیبانی نمی‌شود.
tls-Certs.salam
واردسازی تی ال اس
واردسازی شبکه.تی سی پی شبکه
واردسازی کدگذاری
واردسازی ورودی خروجی

روال ریشه:
    ریشه‌ها := تی ال اس.بارگذاری ریشه ها("/etc/ssl/cert.pem")
    سرچاپ تی ال اس.تعداد ریشه ها(ریشه‌ها)

    زنجیره := تی ال اس.بارگذاری فایل زنجیره گواهی("cert.pem")
    سرچاپ تی ال اس.تعداد ریشه ها(زنجیره)
    ناپایا کلید := تی ال اس.بارگذاری فایل کلید خصوصی("key.pem")
    ناپایا کلید۲ := تی ال اس.تجزیه کلید خصوصی پم("-----BEGIN ...")
    تی ال اس.آزادسازی کلید خصوصی(کلید۲)

    گواهی := تی ال اس.کدگشایی شانزدهی("3082...")
    سرچاپ تی ال اس.گواهی معتبر است(گواهی)، تی ال اس.نام مشترک گواهی(گواهی)
    کد := تی ال اس.تایید گواهی(گواهی، ریشه‌ها، "example.com")
    سرچاپ کد، تی ال اس.خطای تایید(کد)

    چکیده := تی ال اس.درهم ساز(نادرست، "پیام")
    امضا := تی ال اس.بافر جدید(۵۱۲)
    سرچاپ تی ال اس.امضای آر اس ای پی کی سی اس یک(کلید، نادرست، چکیده، امضا)
    سرچاپ تی ال اس.امضای آر اس ای پی اس اس(کلید، نادرست، چکیده، امضا)
    سرچاپ تی ال اس.تایید آر اس ای پی اس اس با کلید(کلید، نادرست، چکیده، امضا)
    ر := تی ال اس.بافر جدید(۳۲)
    س := تی ال اس.بافر جدید(۳۲)
    اگر تی ال اس.امضای بیضوی(کلید، چکیده، ر، س):
        دی‌ای‌آر := تی ال اس.کدگذاری دی ای آر بیضوی(ر، س، ۳۲)
        سرچاپ تی ال اس.تایید دی ای آر بیضوی با کلید(کلید، چکیده، دی‌ای‌آر)
    پایان

    پم := ورودی خروجی.خواندن پرونده("rsa-key.pem")
    ناپایا سالم := نادرست
    سرچاپ تی ال اس.طول کلید آر اس ای(پم)
    سرچاپ تی ال اس.امضای آر اس ای شا۲۵۶(پم، کدگذاری.کدگذاری پایه۶۴("...")، سالم)

    ناپایا پ := تی ال اس.پیکربندی جدید("internal.example")
    پ.ca_file = "company-ca.pem"
    پ.aes_only = درست
    ناپایا ا := تی ال اس.اتصال امن("internal.example"، ۴۴۳، پ)
    سرچاپ تی ال اس.اتصال معتبر(ا)
    تی ال اس.بستن اتصال(ا)
    ک := تی سی پی شبکه.شماره گیری("example.com"، ۴۴۳)
    ناپایا ب := تی ال اس.پوشش کارخواه(ک.fd، تی ال اس.پیکربندی جدید("example.com"))
    سرچاپ تی ال اس.نسخه(ب) == "TLS1.3"
    تی ال اس.بستن اتصال(ب)
    سرچاپ تی ال اس.تی ال اس۱۰، تی ال اس.تی ال اس۱۱، تی ال اس.تی ال اس۱۲، تی ال اس.تی ال اس۱۳
    سرچاپ تی ال اس.خودآزمایی()
    تی ال اس.آزادسازی ریشه ها(ریشه‌ها)
    تی ال اس.آزادسازی کلید خصوصی(کلید)
پایان

تی ال اس۱۱ TLS11

پایا تی ال اس۱۱: صحیح۳۲ = 770
TLS 1.1؛ پشتیبانی نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تی ال اس۱۲ TLS12

پایا تی ال اس۱۲: صحیح۳۲ = 771
TLS 1.2.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تی ال اس۱۳ TLS13

پایا تی ال اس۱۳: صحیح۳۲ = 772
TLS 1.3.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

روال‌ها

خودآزمایی SelfTest

روال خودآزمایی(): صحیح
آزمون‌های درونی بسته را اجرا و گزارش می‌کند؛ شمار شکست‌ها را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

بارگذاری فایل زنجیره گواهی LoadCertChainFile

روال بارگذاری فایل زنجیره گواهی(path: رشته): Roots
زنجیره‌ی گواهی را از پرونده‌ی PEM می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تولید کلید ای سی دی اچ EcdhP256Generate

روال تولید کلید ای سی دی اچ(priv &: رشته، pub_spki &: رشته): منطقی
جفت کلید ECDH روی منحنی P-256: کلید خصوصی بیس۶۴ و کلید عمومی SPKI بیس۶۴.
tls-Crypto.salam
واردسازی تی ال اس
واردسازی کدگذاری

روال ریشه:
    ناپایا خصوصی۱ := ""
    ناپایا عمومی۱ := ""
    ناپایا خصوصی۲ := ""
    ناپایا عمومی۲ := ""
    سرچاپ تی ال اس.تولید کلید ای سی دی اچ(خصوصی۱، عمومی۱)، تی ال اس.تولید کلید ای سی دی اچ(خصوصی۲، عمومی۲)
    ناپایا سالم := نادرست
    راز۱ := تی ال اس.راز مشترک ای سی دی اچ(خصوصی۱، عمومی۲، سالم)
    راز۲ := تی ال اس.راز مشترک ای سی دی اچ(خصوصی۲، عمومی۱، سالم)
    سرچاپ سالم، راز۱ == راز۲

    نقطه۱ := تی ال اس.نقطه عمومی ای سی دی اچ(خصوصی۱)
    نقطه۲ := تی ال اس.نقطه عمومی ای سی دی اچ(خصوصی۲)
    سرچاپ تی ال اس.نقطه مشترک ای سی دی اچ(خصوصی۱، نقطه۲، سالم) == تی ال اس.نقطه مشترک ای سی دی اچ(خصوصی۲، نقطه۱، سالم)

    نمک := تی ال اس.نمک تصادفی(۱۶)
    کلید := تی ال اس.اچ کی دی اف شا۲۵۶(راز۱، نمک، "chat v1"، ۳۲، سالم)
    سرچاپ سالم، کلید == تی ال اس.اچ کی دی اف شا۲۵۶(راز۲، نمک، "chat v1"، ۳۲، سالم)
    سرچاپ تی ال اس.اچ کی دی اف شا۲۵۶ خام(راز۱، نمک، کدگذاری.کدگذاری پایه۶۴("chat v1")، ۳۲، سالم) == کلید

    نانس := تی ال اس.نانس جی سی ام(۰)
    مهرشده := تی ال اس.مهر ای ای اس جی سی ام(کلید، نانس، "سلام، این پیام رمز شده است"، سالم)
    سرچاپ سالم
    سرچاپ تی ال اس.گشودن ای ای اس جی سی ام(کلید، نانس، مهرشده، سالم)، سالم
    _ := تی ال اس.گشودن ای ای اس جی سی ام(کلید، تی ال اس.نانس جی سی ام(۱)، مهرشده، سالم)
    سرچاپ سالم
    دودویی := تی ال اس.مهر بایت ای ای اس جی سی ام(کلید، نانس، کدگذاری.کدگذاری پایه۶۴("abc")، سالم)
    سرچاپ کدگذاری.کدگشایی پایه۶۴(تی ال اس.گشودن بایت ای ای اس جی سی ام(کلید، نانس، دودویی، سالم))

    چکیده := کدگذاری.کدگذاری پایه۶۴("0123456789abcdef0123456789abcdef")
    امضا := تی ال اس.امضای پی۲۵۶(خصوصی۱، چکیده، سالم)
    سرچاپ سالم، تی ال اس.تایید امضای پی۲۵۶(نقطه۱، چکیده، امضا)، تی ال اس.تایید امضای پی۲۵۶(نقطه۲، چکیده، امضا)

    ب := تی ال اس.درهم ساز(نادرست، "abc")
    سرچاپ تی ال اس.طول بافر(ب)، تی ال اس.کدگذاری شانزدهی(ب)
    ناپایا ش := تی ال اس.کدگشایی شانزدهی("cafe")
    تی ال اس.افزودن رشته به بافر(ش، "!")
    سرچاپ تی ال اس.طول بافر(ش)، تی ال اس.کدگذاری شانزدهی(ش)
    ناپایا ص := تی ال اس.بافر صفر جدید(۴)
    سرچاپ تی ال اس.کدگذاری شانزدهی(ص)
    ناپایا خالی := تی ال اس.بافر جدید(۶۴)
    سرچاپ تی ال اس.طول بافر(خالی)
    تی ال اس.پاک سازی بافر(ش)
    تی ال اس.آزادسازی بافر(ش)
    تی ال اس.آزادسازی بافر(ص)
    تی ال اس.آزادسازی بافر(خالی)
پایان
خروجیtrue true true true true true true true true سلام، این پیام رمز شده است true false abc true true false 32 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad 3 cafe21 00000000 0

راز مشترک ای سی دی اچ EcdhP256Shared

روال راز مشترک ای سی دی اچ(priv_b64: رشته، peer_spki_b64: رشته، ok &: منطقی): رشته
راز مشترک از کلید خصوصی خودی و کلید عمومی طرف مقابل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

اچ کی دی اف شا۲۵۶ HkdfSha256

روال اچ کی دی اف شا۲۵۶(ikm_b64: رشته، salt_b64: رشته، info: رشته، out_len: صحیح، ok &: منطقی): رشته
از یک راز با نمک و متن زمینه کلید به طول دلخواه می‌سازد؛ برای هر کاربرد متن زمینه‌ی جدا بدهید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

مهر ای ای اس جی سی ام AesGcmSeal

روال مهر ای ای اس جی سی ام(key_b64: رشته، nonce_b64: رشته، plaintext: رشته، ok &: منطقی): رشته
متن را با AES-GCM رمز و مهر می‌کند؛ خروجی بیس۶۴ است. هرگز یک نانس را با یک کلید دو بار به کار نبرید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

گشودن ای ای اس جی سی ام AesGcmOpen

روال گشودن ای ای اس جی سی ام(key_b64: رشته، nonce_b64: رشته، sealed_b64: رشته، ok &: منطقی): رشته
متن مهرشده را باز می‌کند؛ اگر دست خورده یا کلید و نانس نادرست باشد، سالم نادرست می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

نانس جی سی ام GcmNonce

روال نانس جی سی ام(counter: صحیح۶۴): رشته
نانس ۱۲ بایتی از یک شمارنده؛ برای هر پیام شمارنده را یکی بالا ببرید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

نمک تصادفی RandomSalt

روال نمک تصادفی(n: صحیح): رشته
n بایت تصادفی به شکل بیس۶۴.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

نقطه عمومی ای سی دی اچ EcdhP256PublicPoint

روال نقطه عمومی ای سی دی اچ(priv_b64: رشته): رشته
نقطه‌ی عمومی خام کلید خصوصی، ۶۵ بایت بیس۶۴.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

نقطه مشترک ای سی دی اچ EcdhP256SharedPoint

روال نقطه مشترک ای سی دی اچ(priv_b64: رشته، peer_point_b64: رشته، ok &: منطقی): رشته
راز مشترک با نقطه‌ی عمومی خام طرف مقابل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

اچ کی دی اف شا۲۵۶ خام HkdfSha256Raw

روال اچ کی دی اف شا۲۵۶ خام(ikm_b64: رشته، salt_b64: رشته، info_b64: رشته، out_len: صحیح، ok &: منطقی): رشته
مثل روال بالا، با متن زمینه‌ی بیس۶۴.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

مهر بایت ای ای اس جی سی ام AesGcmSealBytes

روال مهر بایت ای ای اس جی سی ام(key_b64: رشته، nonce_b64: رشته، plaintext_b64: رشته، ok &: منطقی): رشته
مثل مهر، با ورودی بیس۶۴ برای داده‌ی دودویی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

گشودن بایت ای ای اس جی سی ام AesGcmOpenBytes

روال گشودن بایت ای ای اس جی سی ام(key_b64: رشته، nonce_b64: رشته، sealed_b64: رشته، ok &: منطقی): رشته
مثل گشودن، با خروجی بیس۶۴.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

امضای پی۲۵۶ P256Sign

روال امضای پی۲۵۶(priv_b64: رشته، digest_b64: رشته، ok &: منطقی): رشته
امضای ECDSA قطعی با RFC 6979 روی یک چکیده؛ ۶۴ بایت r و s به شکل بیس۶۴.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

تایید امضای پی۲۵۶ P256Verify

روال تایید امضای پی۲۵۶(pub_point_b64: رشته، digest_b64: رشته، sig_b64: رشته): منطقی
امضا را با نقطه‌ی عمومی بررسی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

امضای آر اس ای شا۲۵۶ RsaSignPkcs1Sha256

روال امضای آر اس ای شا۲۵۶(pem: رشته، digest_b64: رشته، ok &: منطقی): رشته
چکیده را با کلید RSA متن PEM امضا می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

طول کلید آر اس ای RsaKeyBits

روال طول کلید آر اس ای(pem: رشته): صحیح
طول کلید RSA بر حسب بیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

آزادسازی کلید خصوصی FreePrivateKey

روال آزادسازی کلید خصوصی(k &: PrivateKey)
کلید خصوصی را از حافظه پاک و آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تجزیه کلید خصوصی پم ParsePrivateKeyPEM

روال تجزیه کلید خصوصی پم(pem: رشته): PrivateKey
کلید RSA یا EC را از متن PEM می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

بارگذاری فایل کلید خصوصی LoadPrivateKeyFile

روال بارگذاری فایل کلید خصوصی(path: رشته): PrivateKey
کلید را از پرونده‌ی PEM می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

پیکربندی جدید NewConfig

روال پیکربندی جدید(server_name: رشته): پیکربندی
پیکربندی کارخواه برای یک میزبان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

اتصال امن Dial

روال اتصال امن(host: رشته، port: صحیح، cfg: پیکربندی): اتصال
به میزبان وصل می‌شود و دست‌دهی TLS 1.3 یا 1.2 را انجام می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

پوشش کارخواه WrapClient

روال پوشش کارخواه(fd: صحیح۶۴، cfg: پیکربندی): اتصال
دست‌دهی کارخواه را روی سوکت TCP باز انجام می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

پیکربندی کارساز جدید NewServerConfig

روال پیکربندی کارساز جدید(cert_file: رشته، key_file: رشته): پیکربندی کارساز
گواهی و کلید سرور را از پرونده‌های PEM می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

پوشش کارساز WrapServer

روال پوشش کارساز(fd: صحیح۶۴، cfg: پیکربندی کارساز): اتصال
دست‌دهی سرور را روی سوکتی که پذیرفته‌اید انجام می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

اتصال معتبر ConnOk

روال اتصال معتبر(c: اتصال): منطقی
اتصال سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

خطای اتصال ConnError

روال خطای اتصال(c: اتصال): رشته
پیام خطای اتصال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

نوشتن Write

روال نوشتن(c &: اتصال، data: رشته): صحیح
داده می‌فرستد و شمار بایت‌ها را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

نوشتن بایت WriteBytes

روال نوشتن بایت(c &: اتصال، ptr: تهی*، n: صحیح): صحیح
بایت‌های حافظه را می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

خواندن Read

روال خواندن(c &: اتصال، max: صحیح): رشته
تا این قدر بایت می‌خواند؛ رشته‌ی خالی یعنی اتصال بسته شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

خواندن بایت ReadBytes

روال خواندن بایت(c &: اتصال، buf: تهی*، max: صحیح): صحیح
در حافظه‌ی داده‌شده می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

در انتظار Pending

روال در انتظار(c: اتصال): صحیح
بایت‌هایی که رمزگشایی شده و آماده‌ی خواندن‌اند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

خواندنی Readable

روال خواندنی(c: اتصال): منطقی
بی‌انتظار چیزی برای خواندن هست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

توصیفگر Fd

روال توصیفگر(c: اتصال): صحیح۶۴
توصیف‌گر سوکت زیرین.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Server.salam

بستن اتصال Close

روال بستن اتصال(c &: اتصال)
هشدار بستن را می‌فرستد و سوکت را می‌بندد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

نسخه Version

روال نسخه(c: اتصال): رشته
نسخه‌ی توافق‌شده، مثل TLS1.3.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

نام رمز CipherName

روال نام رمز(c: اتصال): رشته
نام رمز توافق‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

تعداد گواهی همتا PeerCertCount

روال تعداد گواهی همتا(c: اتصال): صحیح
شمار گواهی‌هایی که طرف مقابل فرستاد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Client.salam

کدگذاری شانزدهی HexEncodeBuf

روال کدگذاری شانزدهی(b: Buf): رشته
بافر را به شانزدهی تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

کدگشایی شانزدهی HexDecodeBuf

روال کدگشایی شانزدهی(s: رشته): Buf
شانزدهی را به بافر برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

بافر جدید NewBuf

روال بافر جدید(cap: صحیح): Buf
بافر خالی با این ظرفیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

بافر صفر جدید NewZeroBuf

روال بافر صفر جدید(n: صحیح): Buf
بافری با n بایت صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

آزادسازی بافر FreeBuf

روال آزادسازی بافر(b &: Buf)
بافر را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

پاک سازی بافر WipeBuf

روال پاک سازی بافر(b &: Buf)
محتوای بافر را صفر می‌کند؛ برای رازها پیش از آزاد کردن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

طول بافر BufLen

روال طول بافر(b: Buf): صحیح
طول بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

افزودن رشته به بافر BufAppendStr

روال افزودن رشته به بافر(b &: Buf، s: رشته)
رشته را به بافر می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

بارگذاری ریشه ها LoadRoots

روال بارگذاری ریشه ها(ca_file: رشته): Roots
گواهی‌های ریشه را از پرونده‌ی PEM می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تعداد ریشه ها RootCount

روال تعداد ریشه ها(r: Roots): صحیح
شمار گواهی‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

آزادسازی ریشه ها FreeRoots

روال آزادسازی ریشه ها(r &: Roots)
گواهی‌ها را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

خطای تایید VerifyError

روال خطای تایید(code: صحیح): رشته
توضیح کد خطای بررسی گواهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تایید گواهی VerifyCert

روال تایید گواهی(der: Buf، roots: Roots، host: رشته): صحیح
گواهی DER را با ریشه‌ها و نام میزبان بررسی می‌کند؛ صفر یعنی معتبر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

گواهی معتبر است CertIsValid

روال گواهی معتبر است(der: Buf): منطقی
گواهی DER درست خوانده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

نام مشترک گواهی CertSubjectCN

روال نام مشترک گواهی(der: Buf): رشته
نام مشترک (CN) گواهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

درهم ساز HashDigest

روال درهم ساز(sha384: منطقی، msg: رشته): Buf
چکیده‌ی SHA-256، یا با پارامتر اول درست SHA-384، در یک بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Crypto.salam

امضای آر اس ای پی کی سی اس یک SignRSAPKCS1

روال امضای آر اس ای پی کی سی اس یک(k: PrivateKey، sha384: منطقی، digest: Buf، sigout: Buf): منطقی
امضای RSA با PKCS#1 v1.5.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

امضای آر اس ای پی اس اس SignRSAPSS

روال امضای آر اس ای پی اس اس(k: PrivateKey، sha384: منطقی، digest: Buf، sigout: Buf): منطقی
امضای RSA-PSS.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

امضای بیضوی SignECDSA

روال امضای بیضوی(k: PrivateKey، digest: Buf، rout: Buf، sout: Buf): منطقی
امضای ECDSA با r و s جدا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

کدگذاری دی ای آر بیضوی ECDSADerEncode

روال کدگذاری دی ای آر بیضوی(rbytes: Buf، sbytes: Buf، width: صحیح): Buf
r و s را به قالب DER امضا تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تایید آر اس ای پی اس اس با کلید VerifyRSAPSSWithKey

روال تایید آر اس ای پی اس اس با کلید(k: PrivateKey، sha384: منطقی، digest: Buf، sig: Buf): منطقی
امضای RSA-PSS را با کلید بررسی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam

تایید دی ای آر بیضوی با کلید VerifyECDSADERWithKey

روال تایید دی ای آر بیضوی با کلید(k: PrivateKey، digest: Buf، dersig: Buf): منطقی
امضای ECDSA با قالب DER را بررسی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: tls-Certs.salam