menuDAT

DAT Ruby Library

Repository

Beispiel

DAT Zertifikatverwaltungsdienst

rb
manager = Saro::Dat::DatCmsManager.builder
  .uri("http://localhost:8088")
  .verify_only(false)
  #.interval_off # disable auto sync
  .interval_seconds(60)
  .token("12345678901b")
  .build

# manual sync
# manager.sync

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

puts "plain : " + plain
puts "secure : " + secure

# issue dat
dat = manager.issue(plain, secure)
puts "dat : " + dat

# parse dat
payload = manager.parse(dat)

payload_plain = payload.plain
payload_secure = payload.secure

puts "payload plain : " + payload_plain
puts "payload secure : " + payload_secure

assert_equal plain, payload_plain
assert_equal secure, payload_secure

Manuelle Implementierung

rb
manager = Saro::Dat::DatManager.new

cert = [Saro::Dat::DatCertificate.new(
  1,
  Time.now.to_i - 10,
  110,
  1800,
  Saro::Dat::DatSignature.generate(Saro::Dat::DatSignatureAlgorithm::HMAC_SHA512_MFS),
  Saro::Dat::DatCrypto.generate(Saro::Dat::DatCryptoAlgorithm::IV_AES128_GCM)
)]
manager.import_certificates(cert)

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

dat = manager.issue(plain, secure)
puts "DAT : #{dat}"

payload = manager.parse(dat)

assert_equal plain, payload.plain
assert_equal secure, payload.secure

puts "plain : #{payload.plain}"
puts "secure: #{payload.secure}"