Skip to content

Commit cbcfb9b

Browse files
committed
use base64
1 parent 52fbbe5 commit cbcfb9b

File tree

1 file changed

+12
-24
lines changed

1 file changed

+12
-24
lines changed

lnpos/lnpos.ino

+12-24
Original file line numberDiff line numberDiff line change
@@ -1600,10 +1600,11 @@ bool makeLNURL()
16001600

16011601
float total = amountToShow.toFloat() * multipler;
16021602

1603-
unsigned char iv_init[16];
1604-
unsigned char iv[16];
1603+
int iv_length = 16;
1604+
unsigned char iv_init[iv_length];
1605+
unsigned char iv[iv_length];
16051606

1606-
for (int i = 0; i < 16; i++) {
1607+
for (int i = 0; i < iv_length; i++) {
16071608
iv[i] = random(0, 255);
16081609
iv_init[i] = iv[i];
16091610
}
@@ -1618,36 +1619,23 @@ bool makeLNURL()
16181619
preparedURL = baseURLATM;
16191620
secret = secretATM;
16201621
}
1621-
preparedURL += "?p=";
16221622

16231623
randomPin = random(1000, 9999);
16241624
String payload = String(randomPin) + String(":") + String(total);
16251625
Serial.print("payload: ");
16261626
Serial.println(payload);
16271627
size_t payload_len = payload.length();
16281628
int padding = 16 - (payload_len % 16);
1629-
unsigned char encrypted[payload_len + padding] = {0};
1630-
String s = "";
1631-
encrypt(secret.c_str(), iv, payload_len + padding, payload.c_str(), encrypted);
1632-
1633-
for (int i = 0; i < sizeof(encrypted); i++) {
1634-
s = String(encrypted[i], HEX);
1635-
if (s.length() == 1) {
1636-
s = "0" + s;
1637-
}
1638-
preparedURL += s;
1639-
}
1640-
// append iv to the url
1629+
payload_len += padding;
1630+
unsigned char encrypted[payload_len] = {0};
1631+
encrypt(secret.c_str(), iv, payload_len, payload.c_str(), encrypted);
1632+
1633+
preparedURL += "?p=";
1634+
preparedURL += toBase64(encrypted, payload_len, BASE64_URLSAFE | BASE64_NOPADDING);
16411635
preparedURL += "&iv=";
1642-
for (int i = 0; i < sizeof(iv_init); i++) {
1643-
s = String(iv_init[i], HEX);
1644-
if (s.length() == 1) {
1645-
s = "0" + s;
1646-
}
1647-
preparedURL += s;
1648-
}
1649-
Serial.println();
1636+
preparedURL += toBase64(iv_init, iv_length, BASE64_URLSAFE | BASE64_NOPADDING);
16501637
Serial.println(preparedURL);
1638+
16511639
char Buf[200];
16521640
preparedURL.toCharArray(Buf, 200);
16531641
char *url = Buf;

0 commit comments

Comments
 (0)