// p≡p Basic API // Copyleft (c) 2019, p≡p foundation // this file is under GNU General Public License 3.0 // see LICENSE.txt // written by Nana Karlstetter and Volker Birk type ISO639_1 is string size=2 > a-z type hex is string > a-f0-9 type hash doc="32bit Key ID to SHA512 in hex" is hex min=16, max=128; type hash_list doc="sequence of fingerprints of keys" is list< hash >; type TID doc="UUID version 4 variant 1" is binary size=16; type blob_list is list< blob >; type identity_list is list< identity >; type string_list is list< string > ; type string_pair is pair< string, string >; enum comm_type { hex unknown 0; doc > range 0x01 to 0x09: no encryption, 0x0a to 0x0e: nothing reasonable hex no_encryption 0x01 doc="generic"; hex no_encrypted_channel 0x02; hex key_not_found 0x03; hex key_expired 0x04; hex key_revoked 0x05; hex key_b0rken 0x06; hex key_expired_but_confirmed 0x07 doc="NOT with confirmed bit. Just retaining info here in case of renewal."; hex my_key_not_included 0x09; hex security_by_obscurity 0x0a; hex b0rken_crypto 0x0b; hex key_too_short 0x0c; hex compromised 0x0e doc="known compromised connection"; hex compromized 0x0e doc="deprecated misspelling"; hex mistrusted 0x0f doc="known mistrusted key"; doc > range 0x10 to 0x3f: unconfirmed encryption hex unconfirmed_encryption 0x10 doc="generic"; hex OpenPGP_weak_unconfirmed 0x11 doc="RSA 1024 is weak"; hex to_be_checked 0x20 doc="generic"; hex SMIME_unconfirmed 0x21; hex CMS_unconfirmed 0x22; hex strong_but_unconfirmed 0x30 doc="generic"; hex OpenPGP_unconfirmed 0x38 doc="key at least 2048 bit RSA or EC"; hex OTR_unconfirmed 0x3a; doc > range 0x40 to 0x7f: unconfirmed encryption and anonymization hex unconfirmed_enc_anon 0x40 doc="generic"; hex pEp_unconfirmed 0x7f hex confirmed 0x80 doc="this bit decides if trust is confirmed"; doc > range 0x81 to 0x8f: reserved doc > range 0x90 to 0xbf: confirmed encryption hex confirmed_encryption 0x90 doc="generic"; hex OpenPGP_weak 0x91 doc="RSA 1024 is weak (unused)"; hex to_be_checked_confirmed 0xa0 doc="generic"; hex SMIME 0xa1; hex CMS 0xa2; hex strong_encryption 0xb0 doc="generic"; hex OpenPGP 0xb8 doc="key at least 2048 bit RSA or EC"; hex OTR 0xba; doc > range 0xc0 to 0xff: confirmed encryption and anonymization hex confirmed_enc_anon 0xc0 doc="generic"; hex pEp 0xff } // enum comm_type struct identity { field string address doc="SMTP address or URI"; field hash fpr doc="fingerprint of key being used as ID"; field string user_id doc="ID for person or entity in M2M case"; field string username doc="descriptive string"; field ISO639_1 lang doc="two-digit language code or null bytes"; flags { flag not_for_sync 0x0001 doc="don't use this identity for Sync"; flag list 0x0002 doc="identity of list of persons"; doc | the second octet flags are calculated flag devicegroup 0x0100 doc="identity of a device group member" } } // struct Identity callback messageToSend doc="a message needs to be delivered by application" { // parms provide struct_message msg doc="message struct with message to send" // exceptions throws any doc="error status" }