1 /* 2 * Copyright 2019, Andrew Lindesay <apl@lindesay.co.nz>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 #ifndef CAPTCHA_H 6 #define CAPTCHA_H 7 8 9 #include <Archivable.h> 10 #include <String.h> 11 12 class BPositionIO; 13 14 /*! When a user has to perform some sensitive operation, it is necessary to make 15 sure that it is not a 'robot' or software system that is acting as if it 16 were a person. It is necessary to know that a real person is acting. In 17 this case a graphical puzzle is presented to the user that presumably only 18 a human operator could solve. This is called a Captcha. 19 */ 20 21 class Captcha : public BArchivable { 22 public: 23 Captcha(BMessage* from); 24 Captcha(); 25 virtual ~Captcha(); 26 27 const BString& Token() const; 28 BPositionIO* PngImageData() const; 29 30 void SetToken(const BString& value); 31 void SetPngImageData(const void* data, size_t len); 32 33 status_t Archive(BMessage* into, bool deep = true) const; 34 private: 35 BString fToken; 36 BMallocIO* fPngImageData; 37 }; 38 39 40 #endif // CAPTCHA_H 41