FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
HttpClient/b64.cpp at master · honteng/HttpClient · GitHub
honteng
/
HttpClient
Public
forked from
amcewen/HttpClient
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
HttpClient
/
b64.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
70 lines (62 loc) · 1.98 KB
Breadcrumbs
HttpClient
/
b64.cpp
Copy path
File metadata and controls
70 lines (62 loc) · 1.98 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
//
Simple Base64 code
//
(c) Copyright 2010 MCQN Ltd.
//
Released under Apache License, version 2.0
#
include
"
b64.h
"
/*
Simple test program
#include <stdio.h>
void main()
{
char* in = "amcewen";
char out[22];
b64_encode(in, 15, out, 22);
out[21] = '\0';
printf(out);
}
*/
int
b64_encode
(
const
unsigned
char
* aInput,
int
aInputLen,
unsigned
char
* aOutput,
int
aOutputLen)
{
//
Work out if we've got enough space to encode the input
//
Every 6 bits of input becomes a byte of output
if
(aOutputLen < (aInputLen*
8
)/
6
)
{
//
FIXME Should we return an error here, or just the length
return
(aInputLen*
8
)/
6
;
}
//
If we get here we've got enough space to do the encoding
const
char
* b64_dictionary =
"
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
"
;
if
(aInputLen ==
3
)
{
aOutput[
0
] = b64_dictionary[aInput[
0
] >>
2
];
aOutput[
1
] = b64_dictionary[(aInput[
0
] &
0x3
)<<
4
|(aInput[
1
]>>
4
)];
aOutput[
2
] = b64_dictionary[(aInput[
1
]&
0x0F
)<<
2
|(aInput[
2
]>>
6
)];
aOutput[
3
] = b64_dictionary[aInput[
2
]&
0x3F
];
}
else
if
(aInputLen ==
2
)
{
aOutput[
0
] = b64_dictionary[aInput[
0
] >>
2
];
aOutput[
1
] = b64_dictionary[(aInput[
0
] &
0x3
)<<
4
|(aInput[
1
]>>
4
)];
aOutput[
2
] = b64_dictionary[(aInput[
1
]&
0x0F
)<<
2
];
aOutput[
3
] =
'
=
'
;
}
else
if
(aInputLen ==
1
)
{
aOutput[
0
] = b64_dictionary[aInput[
0
] >>
2
];
aOutput[
1
] = b64_dictionary[(aInput[
0
] &
0x3
)<<
4
];
aOutput[
2
] =
'
=
'
;
aOutput[
3
] =
'
=
'
;
}
else
{
//
Break the input into 3-byte chunks and process each of them
int
i;
for
(i =
0
; i < aInputLen/
3
; i++)
{
b64_encode
(&aInput[i*
3
],
3
, &aOutput[i*
4
],
4
);
}
if
(aInputLen %
3
>
0
)
{
//
It doesn't fit neatly into a 3-byte chunk, so process what's left
b64_encode
(&aInput[i*
3
], aInputLen %
3
, &aOutput[i*
4
], aOutputLen - (i*
4
));
}
}
}
Back
|
FazBrowse Home
|
New Git URL