damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

Pubkey.swift (915B)


      1 //
      2 //  Pubkey.swift
      3 //  damus
      4 //
      5 //  Created by William Casarin on 2023-07-28.
      6 //
      7 
      8 import Foundation
      9 
     10 struct Pubkey: IdType, TagKey, TagConvertible, Identifiable {
     11     let id: Data
     12 
     13     var tag: [String] {
     14         [keychar.description, self.hex()]
     15     }
     16 
     17     init?(hex: String) {
     18         guard let id = hex_decode_pubkey(hex) else {
     19             return nil
     20         }
     21         self = id
     22     }
     23 
     24     init(_ data: Data) {
     25         self.id = data
     26     }
     27 
     28     var npub: String {
     29         bech32_pubkey(self)
     30     }
     31 
     32     var keychar: AsciiCharacter { "p" }
     33 
     34     static func from_tag(tag: TagSequence) -> Pubkey? {
     35         var i = tag.makeIterator()
     36         guard tag.count >= 2,
     37               let t0 = i.next(),
     38               let key = t0.single_char,
     39               key == "p",
     40               let t1 = i.next(),
     41               let pubkey = t1.id().map(Pubkey.init)
     42         else { return nil }
     43 
     44         return pubkey
     45     }
     46     
     47 }
     48