There is a significant lack of simple FIPS 204 (CRYSTALS-Dilithium) signature generators/verifiers.
This simple toolset is written in Rust and contains three tools: li2sign
, li2verify
, and li2fingerprint
.
This is provided for your convenience, and contains no audit, assurance, or fitness for any purpose whatsoever.
This toolset relies completely on the great fips204
Rust library by the RustCrypto Developers, and uses ML‐DSA‐44 parameters.
You can install the toolset from Crates.io by issuing: cargo install li2utils
Usage: li2sign
Takes data from stdin
and uses the private key from ./private_key.bin
if present; otherwise, it generates a new private key and stores it in that file. Then, it signs the given data, and outputs the signature to stdout
and the public key to stderr
.
Usage: li2verify <public_key_hex> <signature_hex>
Takes data from stdin
and verifies it against public_key_hex
and signature_hex
. Outputs "Signature is valid.
" to stdin
or "Signature is invalid.
" to stderr
. On invalid signature, the program exits with 1
.
Usage: li2fingerprint <public_key_hex>
Calculates SHAKE256 hash of the public_key_hex
to provide 21-byte fingerprint in chunks of 3 bytes in hexadecimal (inspired by OpenPGP but with raw public key without the packet structure). By diverging from the PGP format, these fingerprints can be easily distinguished from PGP keys.
Command:
echo -n "Hello world"|li2sign
Output:
Public Key (hex): 6cb7df9d333e2eeed36e0e44406d1ba8afca195e1c8b2140a2897adfa5081687ffa1a1a0d0f86359bcefc4d4d03a66f4dd201a770b531b8f4fa7e2d33d327b5c3ee05fb8b577e86a003c8317e2d24c86b2d65555e960ea41b2e2bdc59358918757e26df0ec34c3e0475d5d3a86a960d7e9f457cc9e222b4e2bc43f067cbf9e42c63650c11a6b0ccc0061a50647224a7aa25c3109c4c49a49ba80244953e8ecbf64d143d0f8e2cbc498339d7f00fa4f83b65b1e750dcd954cd9dfedc4d90c880ff2499a637fb771ab9a27936d951609c206f6fdf04e6f61702a64f37f9a3e8167036e56e79b210b65ac567c4def2fbdb4e6b21c02e43186711ea991f4b538040800ac078f4ea60264c3e53d16f3180995695ee6c51a10e9f39d05bc27f82a7c0400ca7ae7a7033f731c1c06cd5217ab7efe4f733d10b4efe13ff43186b11ceec5ab0af6dfee9ebb55ee764379836c95b4510f43c675c44c795ff6b15adcd4165a65ec39482c583fac787553c83d17a4876faa9e90dfdccc293d6db1278fa7685a1e55bd33f2c4a26a1319956eb9ba695b3f37f515da8f7c45c05faabab86e93f73df6fb86e999ebcad6702687bfdb1426ef233ce86dc043da1776db823934f8777685a63437daad78f541046b6c6b28b3464fbf46807cc1e6863f7a0eaf0f0ba465300cdf6ba67b1bd3d9749b83035c6a021c64f3695bacaaf05331ab9d33a8480b35cbce2b109ca5ed5999c8a2e73c655a1283362136c5433c4bbe4dbe3f89b8f5bfe5430556c021dcdcd05d89936f7e0e029822b3f65a1e99ff6179db75ef8bd35a245d715da051ad2e3d034b904efe4352b531a09db322c1b116cecd7382c91ae6769ff38d571e9455cd527978b6d64e7580a1555a9fd7d3b674ee6e92bc62a986cd19f3f8d222efe5dca69a7129ac1d1782b84a6246832fa1ea750d1019ff0faa054a0d84ba195cf79c99411b4a8be2277403380f9fa7c810b4ca6d189818f529c18f4f212e2c21530752549ae18b3662ad16ea409234620a76d9e62635ea88c1878cc86740bd09ce8704b2f4164b57a54603864a9f4f3786250b78a862fff71865bb29ac65c9bc0d76f80960f8b6fa1296e9c0c248e999febfac8bec083b2c70fcc367d75b221f9f6984e391f8920ef104be2093364db7d1ef3c1fc5dd0c81917c74fc83c54c61b0aa063a3725b4742464bfad742e55812e55288e72ef5e4275d95d4f4744e73b80193591ed6b104af30e9698713ea9b09daae3789ac5565269575f38a298e5b17f9966045a13a6056e83f349088d9f1555e0688fe34736013d6e645bb890af9f6861a498d65faf643e0bec6422140c2ec7a6aac4fe51ab75a8debc96e45c81a5b888c47658da62e0bee84eb421a4e70e28d90d3b6920ca4eb9345b41cdf6f633c02a0051ce4d57d21ceb2e7687d943d6a31f589cdfc56e30d92bd8c9f32dc80e065add59a7512150796efbb28cc2b04114459fee2ede7e8c985340993a68faca3529a5e84de8402000da944088d30b3d920af13783b92a7a83f9b9c1fa2cec70e6c56f4ee59c3310bad473a110f0c389b6d2d0e0de0df211b78347f575df70448db21586649b213202d72ad0ddf42a3546924b3986f0d9a2c436aeeb4e6bda74fa6692e7b7d629500944c280c4ab895cf8244e5eb54205865d880c016fc42b1b0d5538c8483a1c106d53a41d6c50497a316d5aba2c61fcd0991aa56453d2e730aac4df8752999e8876c9b8b5cb7a453737c7b4a4e3428615d5ee3a3a7d8b5aad762e0dbf8dabf77c813c2401348aa9d4a7b86580910ccfc8b9a3f73f63c261d41aa4ca8f77918b6a98435f7918e8677f4b4cf3022fb601
5c4bb6c2a5dd508d6274fe076b43e9e66772419f71d342ffc4f4db74966e05d1d5deb6d7b74dc738a62e9aaf4c27783587e71d49e76c14a88a6eee4f8466f0f8d9da41954ba691c065e81931033cc4883929aecd3330fe5864099e0db4e0be119372d91654877fae71e7f49e00cc2fcfefae8cc3a48b2ef727de6723d0fd245ae1708163765a6be31ea7c8351d2e969e4e7d184d2cf7f455191120c9fd6845960503db297c47a4561140fbb1ad098c9aa333c9d1dbccb50c9ac71844da024680460911c49d678b37068bec8ba863e3ce9b40e6244e6df51e25297f5a4edb55c4183fd85422516247175ef7ef0c1d219b01adfba2bd7d795ad4f0094b552cf3eec867901f1c88f5d6f27b3274a5682a16ef0887d2fd7ceeae7c2d6be340ee8cee6d0e2e1db4e7f442dcd2e86bec744e0a73b7dad5e12aad05a17185b54a181ae07f8b81dfd16d467a790e2c5dd242d5785b70efbdd0d37efa621e9d58ba9eb76dc4d360fcdaaf4c9a330c94847f120e08e2acbeb9066aad8bd0a6159ad045b6ce47d90e194074eb39644a35dbd83bbacf86321edc690eb8cac1f1f183ebe6be9aaa3bf5aa9c51827f3790655082172b00339574b9c52c13a85895b1b4c7f916cefa9154e8aff38b1fb1093b96f286dade6fcc9c4945a2467e84f84039ba0c2cc900b83ebe085fc33142b39c7bbff9b5b34332bdf7954d7d80369ff227d358cf5dff6a12a9cc6cc32e8bdfee36ad173864765fa8a6b5fa3b9ed0e427e267aa4c18f28aa2e261fc64f8cdd6cc99f0dab4a94390e732cd16f5e574627c8330271e41e22298161da6e6f3d36324ff9948ed198d3fb7f255405a23eae587af54086a92f8bc40fb050ade91121081a38402988f52737b1eff23f969d082f6ca9a2ca824642a44986e6d978a87c858252adeb498bfd85db868be2ee87969c929116cc01156f4bc8367c8d23238cfcf80f7e1297aa120e66cc92e742cc9f34c7a8fa4a50024a645998e9faec98189479006c428534e5e9a33894022e64459ab19dbb16b877635abac00d7b6d574278bf1feb52c4e6cced8ad807080716bb8c120ea2ec274c5023cb71f5fdea183cfe95deb4858a9e4e818cf0ea9583b95b06de5996c11dc48151f73fa14f128db5266ad7bd02d9821ae11e39d0d51e0bcc2df8982670b5f1a15b220a7aeb7de5780506adebea0c8193d298dbc17c21f15df0848b9b61c3bb86227853b9cc2455fd8ae6325e4c2c7197403fe13ac7e648d1fb80165899fa7f0d74ccdadc865da1860e8fd32dbce079cc916d4e737b83cec611a14e524cb68b5cfbe1b324446aea792b5663adbbe769224018d2ac620752b8726fcc1b20efb4ed81a1719201a9d4e5836f4c8040352c7a3a244aa6893e02fb487e2555ba9c571258cc3b749ea93457c45b2737d80292ca86015790c9661672f5ed52000481f9278c7a7af0496a7b70a7f09a5aef3b5c6349534dc8cc2fd24b580078a1fcbdb0d4a5c9620d3e1d912686d0e5ac278fb1d27f1318ebd6ac503e6b9915404c60b274673d33b822c456ceac95f9a013517ba06228ffa11ce3d83c2361f4d54725623b008f6193792cda2072306d9a0f3e60652c9a3c40d977a66632eccacb8042b5323a47d75a6989a26f6267d979f0aaa985d5ad92becfc5125fd358324017423d1335e29cd24ec078c9395fb1e1f7c6381521099f32428b9534cc100d36ba4effaa48e8367cd3ec92c847b8f28b2438c92f5393dfb5cf034bde28619576225058ddd3cb0d54b3c9f5b81c9619829abfcc1c070ba707f467fae35ba20747f0303cfb53316177a48e4dfb581ead59a3e00532cceffbf64638e68de886baf68120bde0e323481f075ca07d6d65c154918ac9b4510d3ad52ad0fde33d35af8c3aee0ba657e1dcf45d09aea5dbd08a07203f6e5e2df38fa94025344b652b7f6641238610cadcf30f50a79e43c3c15c985ad5b428af21cbd4e21895d2c0948f053182ed75716da62893b37d532479ecef82867f732065db460ac75c6391634ed84dc0ffa28b11cb202ebcbcdb140ae0183241f6ee7121cbb1d58af1bcfffd0c41415e1b41873f327fd9a814d8061920678b4aa5695def4f619f692df03122ea531a4f0782bde05b1ac5f10d0111f32757433ba69885834ef13659c017e3f5795f8e51bb83e5c4bd3a4442bffaf28ea2559d91886644fa26ecafa8907089853132e98a109736848f0bb50ce295453c44eb2541fa03b99bd44e62871f50bb848e0d0dfacc29d51028e738e9222d695cdbba47f2bea1800a95d9e57189233826d4f1dc02da0ce1e9a0c8cb4614e9a4c8faed4a0710d594a3afd688383aebef088202f57e560d1385540c6931e22e5f1eac3f9b510fcb3c3a8f0444e80c9508623b2af74e3a143da5208d1c803f7fc94de46eac580bfc78435b1a0222b2176dd838c3f0564a179b0589fb3a5f5759701e079679ea56acd46a4ad291b7171b2c5bf65cf6551b9504cd58fe8130c41dca879df479caee008a32ba769d73e1d8a8d78b6af7b72faa19013c91fc0352f819399686b1410ec146debca2ad5517b772f0dde083569fdc6028547bd775a0fa23b5e29c40b9993e2c3229cd433c92cf5583c81960480793b03310f277a00712cf74c894e59918e84560a02fe253bbe8e7fb36a40f4d4be0f6ff141b1a7692c1b3c7631988d1b101136c2de58602670a74678783e776cddda7c5b119faa150f1bd5541bdcf72d0e0b69b0ddb85cab35c180b899781575e5aa6161bd62f7a9af40b47fb266fbeb4d10f88d3e18ff7f6fdbc770418f9c3b199dea9d3b079a098735d163fcae1d75af2e87b2f7167620f2922e2d2fa9c95ac2cd60697c3889630cb09cf94aa897a8347bea705e539a7deae6dba9b96fabe42601ceed8e7336611d4923b3e1be35e685484f204a0dd680f8b42b79e3f1f4fcba804ad601c4c24e3ed67d973e413314fb35fbb54bf7e6a055a12b1f1dec9fecb8ecf3325234df95ecace3d81ef1ceac2a1a81d892b7743d6e14a9482764cc95fe6773222de21d84997e90668504b14dae8d37c77f1b405e2e2390683cec98b4bbb92779ba69ba0118d15f3d843c06de893e0c5f755c54c12451d357b660396208c9e705cbe177fa236de1294038be098b900b51f341976e9917b534e3e17e5cad7006d3bd22a1c98f5be8453c6d7c792b887d8e21f30d0ceb25974c406348e544fe08b631b78efc617e93c810ab896dfa1b835788c3fae6ed3b9d0372696fdf862fecc3232133b6e04cb755b77ca020bc441e0462c5365c9c1cf86ebdef1de90e1b212a5c5d65899196b5c5e0edf10006070a5c616d8494b1b6c0c8dbedf22a494b5560697183939cb5c5c8d0d6f7fa22234e4f535f809db6c4d1d5ee000000000000000000000000000000000000000f1f303d
Command:
echo -n "Hello world"|li2verify 6cb7df9d333e2eeed36e0e44406d1ba8afca195e1c8b2140a2897adfa5081687ffa1a1a0d0f86359bcefc4d4d03a66f4dd201a770b531b8f4fa7e2d33d327b5c3ee05fb8b577e86a003c8317e2d24c86b2d65555e960ea41b2e2bdc59358918757e26df0ec34c3e0475d5d3a86a960d7e9f457cc9e222b4e2bc43f067cbf9e42c63650c11a6b0ccc0061a50647224a7aa25c3109c4c49a49ba80244953e8ecbf64d143d0f8e2cbc498339d7f00fa4f83b65b1e750dcd954cd9dfedc4d90c880ff2499a637fb771ab9a27936d951609c206f6fdf04e6f61702a64f37f9a3e8167036e56e79b210b65ac567c4def2fbdb4e6b21c02e43186711ea991f4b538040800ac078f4ea60264c3e53d16f3180995695ee6c51a10e9f39d05bc27f82a7c0400ca7ae7a7033f731c1c06cd5217ab7efe4f733d10b4efe13ff43186b11ceec5ab0af6dfee9ebb55ee764379836c95b4510f43c675c44c795ff6b15adcd4165a65ec39482c583fac787553c83d17a4876faa9e90dfdccc293d6db1278fa7685a1e55bd33f2c4a26a1319956eb9ba695b3f37f515da8f7c45c05faabab86e93f73df6fb86e999ebcad6702687bfdb1426ef233ce86dc043da1776db823934f8777685a63437daad78f541046b6c6b28b3464fbf46807cc1e6863f7a0eaf0f0ba465300cdf6ba67b1bd3d9749b83035c6a021c64f3695bacaaf05331ab9d33a8480b35cbce2b109ca5ed5999c8a2e73c655a1283362136c5433c4bbe4dbe3f89b8f5bfe5430556c021dcdcd05d89936f7e0e029822b3f65a1e99ff6179db75ef8bd35a245d715da051ad2e3d034b904efe4352b531a09db322c1b116cecd7382c91ae6769ff38d571e9455cd527978b6d64e7580a1555a9fd7d3b674ee6e92bc62a986cd19f3f8d222efe5dca69a7129ac1d1782b84a6246832fa1ea750d1019ff0faa054a0d84ba195cf79c99411b4a8be2277403380f9fa7c810b4ca6d189818f529c18f4f212e2c21530752549ae18b3662ad16ea409234620a76d9e62635ea88c1878cc86740bd09ce8704b2f4164b57a54603864a9f4f3786250b78a862fff71865bb29ac65c9bc0d76f80960f8b6fa1296e9c0c248e999febfac8bec083b2c70fcc367d75b221f9f6984e391f8920ef104be2093364db7d1ef3c1fc5dd0c81917c74fc83c54c61b0aa063a3725b4742464bfad742e55812e55288e72ef5e4275d95d4f4744e73b80193591ed6b104af30e9698713ea9b09daae3789ac5565269575f38a298e5b17f9966045a13a6056e83f349088d9f1555e0688fe34736013d6e645bb890af9f6861a498d65faf643e0bec6422140c2ec7a6aac4fe51ab75a8debc96e45c81a5b888c47658da62e0bee84eb421a4e70e28d90d3b6920ca4eb9345b41cdf6f633c02a0051ce4d57d21ceb2e7687d943d6a31f589cdfc56e30d92bd8c9f32dc80e065add59a7512150796efbb28cc2b04114459fee2ede7e8c985340993a68faca3529a5e84de8402000da944088d30b3d920af13783b92a7a83f9b9c1fa2cec70e6c56f4ee59c3310bad473a110f0c389b6d2d0e0de0df211b78347f575df70448db21586649b213202d72ad0ddf42a3546924b3986f0d9a2c436aeeb4e6bda74fa6692e7b7d629500944c280c4ab895cf8244e5eb54205865d880c016fc42b1b0d5538c8483a1c106d53a41d6c50497a316d5aba2c61fcd0991aa56453d2e730aac4df8752999e8876c9b8b5cb7a453737c7b4a4e3428615d5ee3a3a7d8b5aad762e0dbf8dabf77c813c2401348aa9d4a7b86580910ccfc8b9a3f73f63c261d41aa4ca8f77918b6a98435f7918e8677f4b4cf3022fb601 5c4bb6c2a5dd508d6274fe076b43e9e66772419f71d342ffc4f4db74966e05d1d5deb6d7b74dc738a62e9aaf4c27783587e71d49e76c14a88a6eee4f8466f0f8d9da41954ba691c065e81931033cc4883929aecd3330fe5864099e0db4e0be119372d91654877fae71e7f49e00cc2fcfefae8cc3a48b2ef727de6723d0fd245ae1708163765a6be31ea7c8351d2e969e4e7d184d2cf7f455191120c9fd6845960503db297c47a4561140fbb1ad098c9aa333c9d1dbccb50c9ac71844da024680460911c49d678b37068bec8ba863e3ce9b40e6244e6df51e25297f5a4edb55c4183fd85422516247175ef7ef0c1d219b01adfba2bd7d795ad4f0094b552cf3eec867901f1c88f5d6f27b3274a5682a16ef0887d2fd7ceeae7c2d6be340ee8cee6d0e2e1db4e7f442dcd2e86bec744e0a73b7dad5e12aad05a17185b54a181ae07f8b81dfd16d467a790e2c5dd242d5785b70efbdd0d37efa621e9d58ba9eb76dc4d360fcdaaf4c9a330c94847f120e08e2acbeb9066aad8bd0a6159ad045b6ce47d90e194074eb39644a35dbd83bbacf86321edc690eb8cac1f1f183ebe6be9aaa3bf5aa9c51827f3790655082172b00339574b9c52c13a85895b1b4c7f916cefa9154e8aff38b1fb1093b96f286dade6fcc9c4945a2467e84f84039ba0c2cc900b83ebe085fc33142b39c7bbff9b5b34332bdf7954d7d80369ff227d358cf5dff6a12a9cc6cc32e8bdfee36ad173864765fa8a6b5fa3b9ed0e427e267aa4c18f28aa2e261fc64f8cdd6cc99f0dab4a94390e732cd16f5e574627c8330271e41e22298161da6e6f3d36324ff9948ed198d3fb7f255405a23eae587af54086a92f8bc40fb050ade91121081a38402988f52737b1eff23f969d082f6ca9a2ca824642a44986e6d978a87c858252adeb498bfd85db868be2ee87969c929116cc01156f4bc8367c8d23238cfcf80f7e1297aa120e66cc92e742cc9f34c7a8fa4a50024a645998e9faec98189479006c428534e5e9a33894022e64459ab19dbb16b877635abac00d7b6d574278bf1feb52c4e6cced8ad807080716bb8c120ea2ec274c5023cb71f5fdea183cfe95deb4858a9e4e818cf0ea9583b95b06de5996c11dc48151f73fa14f128db5266ad7bd02d9821ae11e39d0d51e0bcc2df8982670b5f1a15b220a7aeb7de5780506adebea0c8193d298dbc17c21f15df0848b9b61c3bb86227853b9cc2455fd8ae6325e4c2c7197403fe13ac7e648d1fb80165899fa7f0d74ccdadc865da1860e8fd32dbce079cc916d4e737b83cec611a14e524cb68b5cfbe1b324446aea792b5663adbbe769224018d2ac620752b8726fcc1b20efb4ed81a1719201a9d4e5836f4c8040352c7a3a244aa6893e02fb487e2555ba9c571258cc3b749ea93457c45b2737d80292ca86015790c9661672f5ed52000481f9278c7a7af0496a7b70a7f09a5aef3b5c6349534dc8cc2fd24b580078a1fcbdb0d4a5c9620d3e1d912686d0e5ac278fb1d27f1318ebd6ac503e6b9915404c60b274673d33b822c456ceac95f9a013517ba06228ffa11ce3d83c2361f4d54725623b008f6193792cda2072306d9a0f3e60652c9a3c40d977a66632eccacb8042b5323a47d75a6989a26f6267d979f0aaa985d5ad92becfc5125fd358324017423d1335e29cd24ec078c9395fb1e1f7c6381521099f32428b9534cc100d36ba4effaa48e8367cd3ec92c847b8f28b2438c92f5393dfb5cf034bde28619576225058ddd3cb0d54b3c9f5b81c9619829abfcc1c070ba707f467fae35ba20747f0303cfb53316177a48e4dfb581ead59a3e00532cceffbf64638e68de886baf68120bde0e323481f075ca07d6d65c154918ac9b4510d3ad52ad0fde33d35af8c3aee0ba657e1dcf45d09aea5dbd08a07203f6e5e2df38fa94025344b652b7f6641238610cadcf30f50a79e43c3c15c985ad5b428af21cbd4e21895d2c0948f053182ed75716da62893b37d532479ecef82867f732065db460ac75c6391634ed84dc0ffa28b11cb202ebcbcdb140ae0183241f6ee7121cbb1d58af1bcfffd0c41415e1b41873f327fd9a814d8061920678b4aa5695def4f619f692df03122ea531a4f0782bde05b1ac5f10d0111f32757433ba69885834ef13659c017e3f5795f8e51bb83e5c4bd3a4442bffaf28ea2559d91886644fa26ecafa8907089853132e98a109736848f0bb50ce295453c44eb2541fa03b99bd44e62871f50bb848e0d0dfacc29d51028e738e9222d695cdbba47f2bea1800a95d9e57189233826d4f1dc02da0ce1e9a0c8cb4614e9a4c8faed4a0710d594a3afd688383aebef088202f57e560d1385540c6931e22e5f1eac3f9b510fcb3c3a8f0444e80c9508623b2af74e3a143da5208d1c803f7fc94de46eac580bfc78435b1a0222b2176dd838c3f0564a179b0589fb3a5f5759701e079679ea56acd46a4ad291b7171b2c5bf65cf6551b9504cd58fe8130c41dca879df479caee008a32ba769d73e1d8a8d78b6af7b72faa19013c91fc0352f819399686b1410ec146debca2ad5517b772f0dde083569fdc6028547bd775a0fa23b5e29c40b9993e2c3229cd433c92cf5583c81960480793b03310f277a00712cf74c894e59918e84560a02fe253bbe8e7fb36a40f4d4be0f6ff141b1a7692c1b3c7631988d1b101136c2de58602670a74678783e776cddda7c5b119faa150f1bd5541bdcf72d0e0b69b0ddb85cab35c180b899781575e5aa6161bd62f7a9af40b47fb266fbeb4d10f88d3e18ff7f6fdbc770418f9c3b199dea9d3b079a098735d163fcae1d75af2e87b2f7167620f2922e2d2fa9c95ac2cd60697c3889630cb09cf94aa897a8347bea705e539a7deae6dba9b96fabe42601ceed8e7336611d4923b3e1be35e685484f204a0dd680f8b42b79e3f1f4fcba804ad601c4c24e3ed67d973e413314fb35fbb54bf7e6a055a12b1f1dec9fecb8ecf3325234df95ecace3d81ef1ceac2a1a81d892b7743d6e14a9482764cc95fe6773222de21d84997e90668504b14dae8d37c77f1b405e2e2390683cec98b4bbb92779ba69ba0118d15f3d843c06de893e0c5f755c54c12451d357b660396208c9e705cbe177fa236de1294038be098b900b51f341976e9917b534e3e17e5cad7006d3bd22a1c98f5be8453c6d7c792b887d8e21f30d0ceb25974c406348e544fe08b631b78efc617e93c810ab896dfa1b835788c3fae6ed3b9d0372696fdf862fecc3232133b6e04cb755b77ca020bc441e0462c5365c9c1cf86ebdef1de90e1b212a5c5d65899196b5c5e0edf10006070a5c616d8494b1b6c0c8dbedf22a494b5560697183939cb5c5c8d0d6f7fa22234e4f535f809db6c4d1d5ee000000000000000000000000000000000000000f1f303d
Output:
Signature is valid.
Command:
li2fingerprint 6cb7df9d333e2eeed36e0e44406d1ba8afca195e1c8b2140a2897adfa5081687ffa1a1a0d0f86359bcefc4d4d03a66f4dd201a770b531b8f4fa7e2d33d327b5c3ee05fb8b577e86a003c8317e2d24c86b2d65555e960ea41b2e2bdc59358918757e26df0ec34c3e0475d5d3a86a960d7e9f457cc9e222b4e2bc43f067cbf9e42c63650c11a6b0ccc0061a50647224a7aa25c3109c4c49a49ba80244953e8ecbf64d143d0f8e2cbc498339d7f00fa4f83b65b1e750dcd954cd9dfedc4d90c880ff2499a637fb771ab9a27936d951609c206f6fdf04e6f61702a64f37f9a3e8167036e56e79b210b65ac567c4def2fbdb4e6b21c02e43186711ea991f4b538040800ac078f4ea60264c3e53d16f3180995695ee6c51a10e9f39d05bc27f82a7c0400ca7ae7a7033f731c1c06cd5217ab7efe4f733d10b4efe13ff43186b11ceec5ab0af6dfee9ebb55ee764379836c95b4510f43c675c44c795ff6b15adcd4165a65ec39482c583fac787553c83d17a4876faa9e90dfdccc293d6db1278fa7685a1e55bd33f2c4a26a1319956eb9ba695b3f37f515da8f7c45c05faabab86e93f73df6fb86e999ebcad6702687bfdb1426ef233ce86dc043da1776db823934f8777685a63437daad78f541046b6c6b28b3464fbf46807cc1e6863f7a0eaf0f0ba465300cdf6ba67b1bd3d9749b83035c6a021c64f3695bacaaf05331ab9d33a8480b35cbce2b109ca5ed5999c8a2e73c655a1283362136c5433c4bbe4dbe3f89b8f5bfe5430556c021dcdcd05d89936f7e0e029822b3f65a1e99ff6179db75ef8bd35a245d715da051ad2e3d034b904efe4352b531a09db322c1b116cecd7382c91ae6769ff38d571e9455cd527978b6d64e7580a1555a9fd7d3b674ee6e92bc62a986cd19f3f8d222efe5dca69a7129ac1d1782b84a6246832fa1ea750d1019ff0faa054a0d84ba195cf79c99411b4a8be2277403380f9fa7c810b4ca6d189818f529c18f4f212e2c21530752549ae18b3662ad16ea409234620a76d9e62635ea88c1878cc86740bd09ce8704b2f4164b57a54603864a9f4f3786250b78a862fff71865bb29ac65c9bc0d76f80960f8b6fa1296e9c0c248e999febfac8bec083b2c70fcc367d75b221f9f6984e391f8920ef104be2093364db7d1ef3c1fc5dd0c81917c74fc83c54c61b0aa063a3725b4742464bfad742e55812e55288e72ef5e4275d95d4f4744e73b80193591ed6b104af30e9698713ea9b09daae3789ac5565269575f38a298e5b17f9966045a13a6056e83f349088d9f1555e0688fe34736013d6e645bb890af9f6861a498d65faf643e0bec6422140c2ec7a6aac4fe51ab75a8debc96e45c81a5b888c47658da62e0bee84eb421a4e70e28d90d3b6920ca4eb9345b41cdf6f633c02a0051ce4d57d21ceb2e7687d943d6a31f589cdfc56e30d92bd8c9f32dc80e065add59a7512150796efbb28cc2b04114459fee2ede7e8c985340993a68faca3529a5e84de8402000da944088d30b3d920af13783b92a7a83f9b9c1fa2cec70e6c56f4ee59c3310bad473a110f0c389b6d2d0e0de0df211b78347f575df70448db21586649b213202d72ad0ddf42a3546924b3986f0d9a2c436aeeb4e6bda74fa6692e7b7d629500944c280c4ab895cf8244e5eb54205865d880c016fc42b1b0d5538c8483a1c106d53a41d6c50497a316d5aba2c61fcd0991aa56453d2e730aac4df8752999e8876c9b8b5cb7a453737c7b4a4e3428615d5ee3a3a7d8b5aad762e0dbf8dabf77c813c2401348aa9d4a7b86580910ccfc8b9a3f73f63c261d41aa4ca8f77918b6a98435f7918e8677f4b4cf3022fb601
Output:
AB2866 D227FC 057236 75F233 48C9AF 1B9C6C CB3E48
Original author: Ville Sundell (with the help of generative AI), released in the public domain under CC0.