totp

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 3, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package totp, RFC 6238 zaman tabanlı tek kullanımlık kodları üretir ve doğrular.

NEDEN ELLE YAZILDI: TOTP, HMAC üzerine ~40 satırlık bir belirtim ve RFC 6238 RESMÎ TEST VEKTÖRLERİ yayımlıyor — yani doğruluğu iddia edilmiyor, ölçülüyor (totp_test.go). Kimlik doğrulamanın kalbine duruma göre denetlenmesi gereken bir bağımlılık koymamak, bu ölçüm mümkünken tercih edilir.

Index

Constants

View Source
const (
	Digits = 6
	Period = 30 * time.Second
	// SecretBytes, üretilen sırrın uzunluğu. RFC 4226 en az 128 bit
	// istiyor, 160 bit öneriyor; base32'de 32 karakter ediyor.
	SecretBytes = 20
)

* Parametreler. * * ⚠️ SHA-1 ve 6 hane, RFC 6238'in varsayılanı ve kimlik doğrulayıcı * uygulamalarının (Google Authenticator, Aegis, 1Password) fiilen * desteklediği tek birleşim. "Daha güçlü" diye SHA-256 seçmek, * kullanıcının telefonundaki uygulamanın sessizce YANLIŞ kod üretmesi * demek olurdu — hesabın kilitlenmesi, güvenlik kazancı değil.

View Source
const Skew = 1

* Skew, kabul edilen adım toleransı (her yönde). * * ⚠️ 1 ADIM, yani ±30 saniye. Gerekçe: telefon saatiyle sunucu saati * birkaç saniye kayabilir ve kullanıcı kodu okuyup yazarken adım * sınırını geçebilir. Daha geniş bir pencere (±2, ±3) her kodu 2,5–3,5 * dakika geçerli kılar — çalınan bir kodun kullanılabilir ömrünü * gereksizce uzatır.

Variables

This section is empty.

Functions

func Code

func Code(secret string, t time.Time) (string, error)

Code, verilen an için beklenen kodu üretir.

func NewSecret

func NewSecret() (string, error)

NewSecret, yeni bir paylaşılan sır üretir.

func StepAt

func StepAt(t time.Time) int64

StepAt, bir anın adım numarası — çağıranın tekrar koruması için.

func URI

func URI(issuer, account, secret string) string

* URI, kimlik doğrulayıcı uygulamasının okuduğu otpauth bağlantısı. * * ⚠️ issuer HEM yolda HEM parametrede: uygulamaların bir kısmı birini, * bir kısmı diğerini okuyor. Yalnızca birini yazmak, hesabın telefonda * "issuer" olmadan görünmesine yol açıyor — iki bastion kullanan biri * hangi kodun hangisine ait olduğunu ayırt edemez.

func Verify

func Verify(secret, code string, now time.Time) (ok bool, usedStep int64, err error)

* Verify, kodu doğrular ve HANGİ ADIMIN kullanıldığını döner. * * ⚠️ ADIM DIŞARI VERİLİYOR ÇÜNKÜ TEKRAR KORUMASI ÇAĞIRANIN İŞİ. TOTP'nin * kendisi bir kodun daha önce kullanılıp kullanılmadığını bilemez: * aynı kod 30 saniye boyunca geçerlidir. Omuz üstünden okuyan ya da * araya giren biri, kodu aynı pencerede İKİNCİ kez kullanabilir. * Kullanılan adımı saklamak ve tekrarını reddetmek zorunlu * (bkz. store.UseTOTPStep). * * used=false dönüşü, "yanlış kod" ile "geçersiz sır"ı ayırmıyor * bilerek: ikisi de kullanıcıya aynı cevabı vermeli.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL