twisterp2pblockchainnetworkbittorrentmicrobloggingipv6social-networkdhtdecentralizedtwisterarmyp2p-networktwister-servertwister-ipv6twister-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
14 years ago
|
#include "bitcoinaddressvalidator.h"
|
||
|
|
||
14 years ago
|
#include <QDebug>
|
||
|
|
||
|
/* Base58 characters are:
|
||
|
"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
|
||
|
|
||
|
This is:
|
||
|
- All numbers except for '0'
|
||
|
- All uppercase letters except for 'I' and 'O'
|
||
|
- All lowercase letters except for 'l'
|
||
|
|
||
|
User friendly Base58 input can map
|
||
|
- 'l' and 'I' to '1'
|
||
|
- '0' and 'O' to 'o'
|
||
|
*/
|
||
|
|
||
14 years ago
|
BitcoinAddressValidator::BitcoinAddressValidator(QObject *parent) :
|
||
14 years ago
|
QValidator(parent)
|
||
14 years ago
|
{
|
||
|
}
|
||
14 years ago
|
|
||
|
QValidator::State BitcoinAddressValidator::validate(QString &input, int &pos) const
|
||
|
{
|
||
14 years ago
|
/* Correction */
|
||
14 years ago
|
for(int idx=0; idx<input.size(); ++idx)
|
||
|
{
|
||
|
switch(input.at(idx).unicode())
|
||
|
{
|
||
|
case 'l':
|
||
|
case 'I':
|
||
|
input[idx] = QChar('1');
|
||
|
break;
|
||
|
case '0':
|
||
|
case 'O':
|
||
|
input[idx] = QChar('o');
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
14 years ago
|
}
|
||
|
|
||
|
/* Validation */
|
||
|
QValidator::State state = QValidator::Acceptable;
|
||
|
for(int idx=0; idx<input.size(); ++idx)
|
||
|
{
|
||
|
int ch = input.at(idx).unicode();
|
||
14 years ago
|
|
||
14 years ago
|
if(((ch >= '0' && ch<='9') ||
|
||
|
(ch >= 'a' && ch<='z') ||
|
||
|
(ch >= 'A' && ch<='Z')) &&
|
||
|
ch != 'l' && ch != 'I' && ch != '0' && ch != 'O')
|
||
|
{
|
||
|
/* Alphanumeric and not a 'forbidden' character */
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
state = QValidator::Invalid;
|
||
|
}
|
||
14 years ago
|
}
|
||
14 years ago
|
|
||
|
return state;
|
||
14 years ago
|
}
|