summaryrefslogtreecommitdiffstats
path: root/examples/guide-exploring-openpgp.rs
blob: 409475ef5de27e98f4269a2ddf72c52b7002f5d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! https://sequoia-pgp.org/guide/exploring-openpgp/

extern crate sequoia_openpgp as openpgp;
use openpgp::parse::Parse;

fn main() {
    let tpk =
       b"-----BEGIN PGP PUBLIC KEY BLOCK-----

         mQENBFpxtsABCADZcBa1Q3ZLZnju18o0+t8LoQuIIeyeUQ0H45y6xUqyrD5HSkVM
         VGQs6IHLq70mAizBJ4VznUVqVOh/NhOlapXi6/TKpjHvttdg45o6Pgqa0Kx64luT
         ZY+TEKyILcdBdhr3CzsEILnQst5jadgMvU9fnT/EkJIvxtWPlUzU5R7nnALO626x
         2M5Pj3k0h3ZNHMmYQQtReX/RP/xUh2SfOYG6i/MCclIlee8BXHB9k0bW2NAX2W7H
         rLDGPm1LzmyqxFGDvDvfPlYZ5nN2cbGsv3w75LDzv75kMhVnkZsrUjnHjVRzFq7q
         fSIpxlvJMEMKSIJ/TFztQoOBO5OlBb5qzYPpABEBAAG0F+G8iM+BzrnPg8+Ezr/P
         hM6tzrvOt8+CiQFUBBMBCAA+FiEEfcpYtU6xQxad3uFfJH9tq8hJFP4FAlpxtsAC
         GwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQJH9tq8hJFP49hgf+
         IKvec0RkD9EHSLFc6AKDm/knaI4AIH0isZTz9jRCF8H/j3h8QVUE+/0jtCcyvR6F
         TGVSfO3pelDPYGIjDFI3aA6H/UlhZWzYRXZ+QQRrV0zwvLna3XjiW8ib3Ky+5bpQ
         0uVeee30u+U3SnaCL9QB4+UvwVvAxRuk49Z0Q8TsRrQyQNYpeZDN7uNrvA134cf6
         6pLUvzPG4lMLIvSXFuHou704EhT7NS3wAzFtjMrsLLieVqtbEi/kBaJTQSZQwjVB
         sE/Z8lp1heKw/33Br3cB63n4cTf0FdoFywDBhCAMU7fKboU5xBpm5bQJ4ck6j6w+
         BKG1FiQRR6PCUeb6GjxVOrkBDQRacbbAAQgAw538MMb/pRdpt7PTgBCedw+rU9fh
         onZYKwmCO7wz5VrVf8zIVvWKxhX6fBTSAy8mxaYbeL/3woQ9Leuo8f0PQNs9zw1N
         mdH+cnm2KQmL9l7/HQKMLgEAu/0C/q7ii/j8OMYitaMUyrwy+OzW3nCal/uJHIfj
         bdKx29MbKgF/zaBs8mhTvf/Tu0rIVNDPEicwijDEolGSGebZxdGdHJA31uayMHDK
         /mwySJViMZ8b+Lzc/dRgNbQoY6yjsjso7U9OZpQK1fooHOSQS6iLsSSsZLcGPD+7
         m7j3jwq68SIJPMsu0O8hdjFWL4Cfj815CwptAxRGkp00CIusAabO7m8DzwARAQAB
         iQE2BBgBCAAgFiEEfcpYtU6xQxad3uFfJH9tq8hJFP4FAlpxtsACGwwACgkQJH9t
         q8hJFP5rmQgAoYOUXolTiQmWipJTdMG/VZ5X7mL8JiBWAQ11K1o01cZCMlziyHnJ
         xJ6Mqjb6wAFpYBtqysJG/vfjc/XEoKgfFs7+zcuEnt41xJQ6tl/L0VTxs+tEwjZu
         Rp/owB9GCkqN9+xNEnlH77TLW1UisW+l0F8CJ2WFOj4lk9rcXcLlEdGmXfWIlVCb
         2/o0DD+HDNsF8nWHpDEy0mcajkgIUTvXQaDXKbccX6Wgep8dyBP7YucGmRPd9Z6H
         bGeT3KvlJlH5kthQ9shsmT14gYwGMR6rKpNUXmlpetkjqUK7pGVaHGgJWUZ9QPGU
         awwPdWWvZSyXJAPZ9lC5sTKwMJDwIxILug==
         =lAie
         -----END PGP PUBLIC KEY BLOCK-----";

    // Parse the TPK.
    let pile = openpgp::PacketPile::from_bytes(tpk).unwrap();

    // Iterate over children.
    for (i, p) in pile.children().enumerate() {
        println!("{}: {:?}", i, p);
    }

    // Some space to make the output easier to parse.
    println!();

    // Parse into TPK.
    let tpk = openpgp::TPK::from_packet_pile(pile).unwrap();
    println!("Fingerprint: {}", tpk.fingerprint());

    // List userids.
    for (i, u) in tpk.userids().enumerate() {
        println!("{}: UID: {}, {} self-signature(s), {} certification(s)",
                 i, u.userid(),
                 u.selfsigs().count(),
                 u.certifications().count());
    }

    // List subkeys.
    for (i, s) in tpk.subkeys().enumerate() {
        println!("{}: Fingerprint: {}, {} self-signature(s), {} certification(s)",
                 i, s.subkey().fingerprint(),
                 s.selfsigs().count(),
                 s.certifications().count());
    }
}
p">>:set\ hls! &Surligner\ recherche\ on/off<Tab>:set\ hls! menutrans Toggle\ &Ignore-case<Tab>:set\ ic! &Ignorer\ casse\ on/off<Tab>:set\ ic! menutrans Toggle\ &Showmatch<Tab>:set\ sm! V�rifier\ parenth&�ses\ on/off<Tab>:set\ sm! menutrans &Context\ lines Lignes\ &autour\ du\ curseur menutrans &Virtual\ Edit �dition\ &virtuelle menutrans Never &Jamais menutrans Block\ Selection &S�lection\ en\ bloc menutrans Insert\ mode &Mode\ insertion menutrans Block\ and\ Insert &Bloc\ et\ insertion menutrans Always &Toujours menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! I&nsertion\ permanente\ on/off<Tab>:set\ im! menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp! &Compatibilit�\ Vi\ on/off<Tab>:set\ cp! menutrans Search\ &Path\.\.\. Chemin\ de\ rec&herche\ des\ fichiers\.\.\. menutrans Ta&g\ Files\.\.\. Fichiers\ d'&�tiquettes\.\.\. " -SEP1- menutrans Toggle\ &Toolbar Barre\ d'&outils\ on/off menutrans Toggle\ &Bottom\ Scrollbar Ascenseur\ &horizontal\ on/off menutrans Toggle\ &Left\ Scrollbar Ascenseur\ �\ ga&uche\ on/off menutrans Toggle\ &Right\ Scrollbar Ascenseur\ �\ &droite\ on/off let g:menutrans_path_dialog = "Entrez le chemin de recherche des fichiers.\nS�parez les r�pertoires par des virgules." let g:menutrans_tags_dialog = "Entrez les noms des fichiers d'�tiquettes.\nS�parez les noms par des virgules." menutrans F&ile\ Settings R�glages\ fichie&r menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! &Num�rotation\ on/off<Tab>:set\ nu! menutrans Toggle\ &List\ Mode<Tab>:set\ list! Mode\ &listing\ on/off<Tab>:set\ list! menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! &Retour\ �\ la\ ligne\ on/off<Tab>:set\ wrap! menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! Retour\ sur\ &mot\ on/off<Tab>:set\ lbr! menutrans Toggle\ &expand-tab<Tab>:set\ et! &Tab\.\ en\ espaces\ on/off<Tab>:set\ et! menutrans Toggle\ &auto-indent<Tab>:set\ ai! Indentation\ &auto\.\ on/off<Tab>:set\ ai! menutrans Toggle\ &C-indenting<Tab>:set\ cin! Indent\.\ langage\ &C\ on/off<Tab>:set\ cin! " -SEP2- menutrans &Shiftwidth Largeur\ des\ in&dentations menutrans Soft\ &Tabstop &Pseudo-tabulations menutrans Te&xt\ Width\.\.\. Largeur\ du\ te&xte\.\.\. menutrans &File\ Format\.\.\. Format\ du\ &fichier\.\.\. let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour d�sactiver le formattage)." let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel �crire le fichier." let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler " menutrans C&olor\ Scheme &Jeu\ de\ couleurs menutrans &Keymap &Type\ de\ clavier menutrans None (aucun) menutrans Select\ Fo&nt\.\.\. S�lectionner\ &police\.\.\. menutrans &Tools &Outils menutrans &Jump\ to\ this\ tag<Tab>g^] &Atteindre\ cette\ �tiquette<Tab>g^] menutrans Jump\ &back<Tab>^T Repartir\ en\ arri&�re<Tab>^T menutrans Build\ &Tags\ File &G�n�rer\ fichier\ d'�tiquettes " -SEP1- menutrans &Folding &Replis menutrans &Enable/Disable\ folds<Tab>zi &Replis\ on/off<Tab>zi menutrans &View\ Cursor\ Line<Tab>zv D&�plier\ ligne\ curseur<Tab>zv menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Tout\ plier\ &sauf\ ligne\ curseur<Tab>zMzx menutrans C&lose\ more\ folds<Tab>zm Fermer\ &plus\ de\ replis<Tab>zm menutrans &Close\ all\ folds<Tab>zM F&ermer\ tous\ les\ replis<Tab>zM menutrans O&pen\ more\ folds<Tab>zr Ouvrir\ pl&us\ de\ replis<Tab>zr menutrans &Open\ all\ folds<Tab>zR &Ouvrir\ tous\ les\ replis<Tab>zR " -SEP1- menutrans Fold\ Met&hod &M�thode\ de\ repli menutrans M&anual &Manuelle menutrans I&ndent &Indentation menutrans E&xpression &Expression menutrans S&yntax &Syntaxe menutrans &Diff &Diff�rence menutrans Ma&rker Ma&rqueurs menutrans Create\ &Fold<Tab>zf &Cr�er\ repli<Tab>zf menutrans &Delete\ Fold<Tab>zd E&ffacer\ repli<Tab>zd menutrans Delete\ &All\ Folds<Tab>zD Effacer\ &tous\ les\ replis<Tab>zD " -SEP2- menutrans Fold\ col&umn\ width &Largeur\ colonne\ replis menutrans &Diff &Diff�rence menutrans &Update &Mettre\ �\ jour menutrans &Get\ Block Corriger\ &ce\ tampon menutrans &Put\ Block Corriger\ l'&autre\ tampon " -SEP2- menutrans &Make<Tab>:make Lancer\ ma&ke<Tab>:make menutrans &List\ Errors<Tab>:cl Lister\ &erreurs<Tab>:cl menutrans L&ist\ Messages<Tab>:cl! Lister\ &messages<Tab>:cl! menutrans &Next\ Error<Tab>:cn Erreur\ &suivante<Tab>:cn menutrans &Previous\ Error<Tab>:cp Erreur\ pr&�c�dente<Tab>:cp "menutrans &Older\ List<Tab>:cold A&ncienne\ liste<Tab>:cold menutrans &Older\ List<Tab>:cold Liste\ &prc�dente<Tab>:cold "menutrans N&ewer\ List<Tab>:cnew No&uvelle\ liste<Tab>:cnew menutrans N&ewer\ List<Tab>:cnew Liste\ suivan&te<Tab>:cnew menutrans Error\ &Window &Fen�tre\ d'erreurs menutrans &Update<Tab>:cwin &Mettre\ �\ jour<Tab>:cwin menutrans &Open<Tab>:copen &Ouvrir<Tab>:copen menutrans &Close<Tab>:cclose &Fermer<Tab>:cclose " -SEP3- menutrans &Convert\ to\ HEX<Tab>:%!xxd Convertir\ en\ he&xa<Tab>:%!xxd menutrans Conve&rt\ back<Tab>:%!xxd\ -r D�con&vertir<Tab>:%!xxd\ -r menutrans &Set\ Compiler Type\ de\ &compilateur menutrans &Buffers &Tampons menutrans Dummy Factice menutrans &Refresh\ menu &Mettre\ ce\ menu\ �\ jour menutrans &Delete &Effacer menutrans &Alternate &Alterner menutrans &Next &Suivant menutrans &Previous &Pr�c�dent " -SEP- menutrans &others au&tres menutrans &u-z &uvwxyz let g:menutrans_no_file = "[Aucun fichier]" menutrans &Window Fe&ntre menutrans &New<Tab>^Wn &Nouvelle\ fentre<Tab>^Wn menutrans S&plit<Tab>^Ws &Fractionner<Tab>^Ws menutrans Sp&lit\ To\ #<Tab>^W^^ Fractionner\ p&our\ #<Tab>^W^^ menutrans Split\ &Vertically<Tab>^Wv Fractionner\ &verticalement<Tab>^Wv menutrans Split\ File\ E&xplorer Fractionner\ &explorateur " -SEP1- menutrans &Close<Tab>^Wc Fer&mer<Tab>^Wc menutrans Close\ &Other(s)<Tab>^Wo Fermer\ les\ &autres<Tab>^Wo " -SEP2- menutrans Move\ &To &D�placer\ vers\ le menutrans &Top<Tab>^WK &Haut<Tab>^WK menutrans &Bottom<Tab>^WJ &Bas<Tab>^WJ menutrans &Left\ side<Tab>^WH C�t�\ &gauche<Tab>^WH menutrans &Right\ side<Tab>^WL C�t�\ &droit<Tab>^WL menutrans Rotate\ &Up<Tab>^WR Rotation\ vers\ le\ &haut<Tab>^WR menutrans Rotate\ &Down<Tab>^Wr Rotation\ vers\ le\ &bas<Tab>^Wr " -SEP3- menutrans &Equal\ Size<Tab>^W= �galiser\ ta&illes<Tab>^W= menutrans &Max\ Height<Tab>^W_ Hau&teur\ maximale<Tab>^W_ menutrans M&in\ Height<Tab>^W1_ Ha&uteur\ minimale<Tab>^W1_ menutrans Max\ &Width<Tab>^W\| &Largeur\ maximale<Tab>^W\| menutrans Min\ Widt&h<Tab>^W1\| La&rgeur\ minimale<Tab>^W1\| " PopUp menutrans &Undo &Annuler " -SEP1- menutrans Cu&t Co&uper menutrans &Copy Cop&ier menutrans &Paste C&oller " &Buffers.&Delete overwrites this one menutrans &Delete &Effacer " -SEP2- menutrans Select\ Blockwise S�lectionner\ &bloc menutrans Select\ &Word S�lectionner\ &mot menutrans Select\ &Line S�lectionner\ &ligne menutrans Select\ &Block S�lectionner\ &bloc menutrans Select\ &All S�lectionner\ &tout " ToolBar menutrans Open Ouvrir menutrans Save Enreg menutrans SaveAll EnregTout menutrans Print Imprimer " -sep1- menutrans Undo Annuler menutrans Redo Refaire " -sep2- menutrans Cut Couper menutrans Copy Copier menutrans Paste Coller " -sep3- menutrans Find Chercher menutrans FindNext CherchSuiv menutrans FindPrev CherchPrec menutrans Replace Remplacer " -sep4- menutrans New Nouvelle menutrans WinSplit FenFract menutrans WinMax FenMax menutrans WinMin FenMin menutrans WinVSplit FenVFract menutrans WinMaxWidth FenMaxLarg menutrans WinMinWidth FenMinLarg menutrans WinClose FenFerme " -sep5- menutrans LoadSesn OuvrirSess menutrans SaveSesn EnregSess menutrans RunScript LancScript " -sep6- menutrans Make Make menutrans RunCtags Cr�erEtiqu menutrans TagJump AllerEtiqu " -sep7- menutrans Help Aide menutrans FindHelp CherchAide fun! Do_toolbar_tmenu() let did_toolbar_tmenu = 1 tmenu ToolBar.Open Ouvrir fichier tmenu ToolBar.Save Enregistrer fichier courant tmenu ToolBar.SaveAll Enregistrer tous les fichiers tmenu ToolBar.Print Imprimer tmenu ToolBar.Undo Annuler tmenu ToolBar.Redo Refaire tmenu ToolBar.Cut Couper tmenu ToolBar.Copy Copier tmenu ToolBar.Paste Coller if !has("gui_athena") tmenu ToolBar.Find Rechercher tmenu ToolBar.FindNext Chercher suivant tmenu ToolBar.FindPrev Chercher prc�dent tmenu ToolBar.Replace Remplacer endif if 0 " disabled; These are in the Windows menu tmenu ToolBar.New Nouvelle fentre tmenu ToolBar.WinSplit Fractionner fentre tmenu ToolBar.WinMax Maximiser fentre tmenu ToolBar.WinMin Minimiser fentre tmenu ToolBar.WinVSplit Fractionner verticalement tmenu ToolBar.WinMaxWidth Maximiser largeur fentre tmenu ToolBar.WinMinWidth Minimiser largeur fentre tmenu ToolBar.WinClose Fermer fentre endif tmenu ToolBar.LoadSesn Ouvrir session tmenu ToolBar.SaveSesn Enregister session courante tmenu ToolBar.RunScript Lancer un script Vim tmenu ToolBar.Make Lancer make tmenu ToolBar.RunCtags Cr�er les �tiquettes tmenu ToolBar.TagJump Atteindre cette �tiquette tmenu ToolBar.Help Aide de Vim tmenu ToolBar.FindHelp Rechercher dans l'aide endfun menutrans &Syntax &Syntaxe menutrans &Manual &Manuelle menutrans A&utomatic &Automatique menutrans on/off\ for\ &This\ file On/off\ pour\ &ce\ fichier " The Start Of The Syntax Menu menutrans ABC\ music\ notation ABC\ (notation\ musicale) menutrans AceDB\ model Mod�le\ AceDB menutrans Apache\ config Config\.\ Apache menutrans Apache-style\ config Config\.\ style\ Apache menutrans ASP\ with\ VBScript ASP\ avec\ VBScript menutrans ASP\ with\ Perl ASP\ avec\ Perl menutrans Assembly Assembleur menutrans BC\ calculator Calculateur\ BC menutrans BDF\ font Fonte\ BDF menutrans BIND\ config Config\.\ BIND menutrans BIND\ zone Zone\ BIND menutrans Cascading\ Style\ Sheets Feuilles\ de\ style\ en\ cascade menutrans Cfg\ Config\ file Fichier\ de\ config\.\ \.cfg menutrans Cheetah\ template Patron\ Cheetah menutrans commit\ file Fichier\ commit menutrans Generic\ Config\ file Fichier\ de\ config\.\ gn�rique menutrans Digital\ Command\ Lang DCL menutrans DNS/BIND\ zone Zone\ BIND/DNS menutrans Dylan\ interface Interface menutrans Dylan\ lid LID menutrans Elm\ filter\ rules R�gles\ de\ filtrage\ Elm menutrans ERicsson\ LANGuage Erlang\ (langage\ Ericsson) menutrans Essbase\ script Script\ Essbase menutrans Eterm\ config Config\.\ Eterm menutrans Exim\ conf Config\.\ Exim menutrans Fvwm\ configuration Config\.\ Fvwm menutrans Fvwm2\ configuration Config\.\ Fvwm2 menutrans Fvwm2\ configuration\ with\ M4 Config\.\ Fvwm2\ avec\ M4 menutrans GDB\ command\ file Fichier\ de\ commandes\ GDB menutrans HTML\ with\ M4 HTML\ avec\ M4 menutrans Cheetah\ HTML\ template Patron\ Cheetah\ pour\ HTML menutrans IDL\Generic\ IDL IDL\IDL\ gn�rique menutrans IDL\Microsoft\ IDL IDL\IDL\ Microsoft menutrans Indent\ profile Profil\ Indent menutrans Inno\ setup Config\.\ Inno menutrans InstallShield\ script Script\ InstallShield menutrans KDE\ script Script\ KDE menutrans LFTP\ config Config\.\ LFTP menutrans LifeLines\ script Script\ LifeLines menutrans Lynx\ Style Style\ Lynx menutrans Lynx\ config Config\.\ Lynx menutrans Man\ page Page\ Man menutrans MEL\ (for\ Maya) MEL\ (pour\ Maya) menutrans 4DOS\ \.bat\ file Fichier\ \.bat\ 4DOS menutrans \.bat\/\.cmd\ file Fichier\ \.bat\ /\ \.cmd menutrans \.ini\ file Fichier\ \.ini menutrans Module\ Definition D�finition\ de\ module menutrans Registry Extrait\ du\ registre menutrans Resource\ file Fichier\ de\ ressources menutrans Novell\ NCF\ batch Batch\ Novell\ NCF menutrans NSIS\ script Script\ NSIS menutrans Oracle\ config Config\.\ Oracle menutrans Palm\ resource\ compiler Compil\.\ de\ resources\ Palm menutrans PHP\ 3-4 PHP\ 3\ et\ 4 menutrans Postfix\ main\ config Config\.\ Postfix menutrans Povray\ scene\ descr Sc�ne\ Povray menutrans Povray\ configuration Config\.\ Povray menutrans Purify\ log Log\ Purify menutrans Readline\ config Config\.\ Readline menutrans RCS\ log\ output Log\ RCS menutrans RCS\ file Fichier\ RCS menutrans RockLinux\ package\ desc\. Desc\.\ pkg\.\ RockLinux menutrans Samba\ config Config\.\ Samba menutrans SGML\ catalog Catalogue\ SGML menutrans SGML\ DTD DTD\ SGML menutrans SGML\ Declaration D�claration\ SGML menutrans Shell\ script Script\