menuDAT

DAT Go Library

रिपॉजिटरी

उदाहरण: DAT प्रमाणपत्र प्रबंधन सेवा

init

go
// logger example
opts := &slog.HandlerOptions{
		Level: slog.LevelDebug,
}
testLogger := slog.New(slog.NewTextHandler(os.Stdout, opts))

builder, err := NewDatCmsManagerBuilder().
    Url("http://localhost:8088")
if err != nil {
    t.Fatal(err)
}

manager, err := builder.
    // IntervalOff(). // disable auto sync
    Interval(60 * time.Second).
    Logger(testLogger).
    Token("12345678901b").
    Build()

if err != nil {
    t.Fatalf("failed to build manager: %v", err)
}

// manual sync
// _ = manager.Sync()

issue / parse

go
plain := "Unicode 유니코드 ユニコード 万国码 يونيكود यूनिकोड Юникод 🦄💻"
secure := "Ciphertext 암호문 暗号文 密文 Шифротекст Texte chiffré Geheimtext نص مشفر सिफरपाठ 🔐"

datStr, err := manager.Issue(plain, secure)
if err != nil {
    return err
}

fmt.Printf("dat: %v\n", datStr)

payload, err := manager.Parse(datStr)
if err != nil {
    return err
}

if plain != payload.PlainText() {
    return fmt.Errorf("plain text mismatch: expected %q, got %q", plain, payload.PlainText())
}
if secure != payload.SecureText() {
    return fmt.Errorf("secure text mismatch: expected %q, got %q", secure, payload.SecureText())
}

fmt.Printf("payload plain: %q\n", payload.PlainText())
fmt.Printf("payload secure: %q\n", payload.SecureText())

उदाहरण: मैन्युअल कार्यान्वयन

go
manager := dat.NewManager()

now := dat.NowUnixTimestamp()
cert, err := dat.GenerateCertificate(1, now-10, 610, 60, dat.EcdsaP256, dat.IvAes256Gcm)
if err != nil {
    t.Fatal(err)
}

_, err = manager.ImportCertificates([]*dat.Certificate{cert}, false)
if err != nil {
    t.Fatal(err)
}

plain := "Unicode 유니코드 ユニコード 万国码 يونيكود यूनिकोड Юникод 🦄💻"
secure := "Ciphertext 암호문 暗号文 密文 Шифротекст Texte chiffré Geheimtext نص مشفر सिफरपाठ 🔐"

datStr, err := manager.Issue(plain, secure)
if err != nil {
    t.Fatal(err)
}

payload, err := manager.Parse(datStr)
if err != nil {
    t.Fatal(err)
}

if payload.PlainText() != plain {
    t.Errorf("expected plain %s, got %s", plain, payload.PlainText())
}
if payload.SecureText() != secure {
    t.Errorf("expected secure %s, got %s", secure, payload.SecureText())
}

println(datStr)
println(payload.PlainText())
println(payload.SecureText())