Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Brian Smith
nettle
Commits
22876238
Commit
22876238
authored
Oct 25, 2002
by
Niels Möller
Browse files
(base64_decode_single): Simplified, got rid of
the done variable. Rev: src/nettle/base64-decode.c:1.3
parent
094e3713
Changes
1
Hide whitespace changes
Inline
Side-by-side
base64-decode.c
View file @
22876238
...
...
@@ -31,6 +31,8 @@
#define TABLE_SPACE -2
#define TABLE_END -3
/* FIXME: Make sure that all whitespace characters, SPC, HT, VT, FF,
* CR and LF are ignored. */
static
const
signed
char
decode_table
[
0x100
]
=
{
...
...
@@ -74,42 +76,39 @@ base64_decode_single(struct base64_decode_ctx *ctx,
switch
(
data
)
{
default:
{
unsigned
done
=
0
;
assert
(
data
>=
0
&&
data
<
0x40
);
assert
(
data
>=
0
&&
data
<
0x40
);
if
(
ctx
->
status
!=
BASE64_DECODE_OK
)
goto
invalid
;
ctx
->
word
=
ctx
->
word
<<
6
|
data
;
ctx
->
bits
+=
6
;
if
(
ctx
->
bits
>=
8
)
{
ctx
->
bits
-=
8
;
dst
[
done
++
]
=
ctx
->
word
>>
ctx
->
bits
;
}
return
done
;
}
if
(
ctx
->
status
!=
BASE64_DECODE_OK
)
goto
invalid
;
ctx
->
word
=
ctx
->
word
<<
6
|
data
;
ctx
->
bits
+=
6
;
if
(
ctx
->
bits
>=
8
)
{
ctx
->
bits
-=
8
;
dst
[
0
]
=
ctx
->
word
>>
ctx
->
bits
;
return
1
;
}
else
return
0
;
case
TABLE_INVALID
:
invalid:
ctx
->
status
=
BASE64_DECODE_ERROR
;
/* Fall through */
case
TABLE_SPACE
:
return
0
;
case
TABLE_END
:
if
(
!
ctx
->
bits
)
goto
invalid
;
if
(
ctx
->
word
&
(
(
1
<<
ctx
->
bits
)
-
1
))
/* We shouldn't have any leftover bits */
goto
invalid
;
ctx
->
status
=
BASE64_DECODE_END
;
ctx
->
bits
-=
2
;
/* Fall through */
case
TABLE_SPACE
:
/* Ignore */
return
0
;
}
}
...
...
@@ -120,13 +119,13 @@ base64_decode_update(struct base64_decode_ctx *ctx,
unsigned
length
,
const
uint8_t
*
src
)
{
unsigned
done
=
0
;
unsigned
done
;
unsigned
i
;
if
(
ctx
->
status
==
BASE64_DECODE_ERROR
)
return
0
;
for
(
i
=
0
;
i
<
length
;
i
++
)
for
(
i
=
0
,
done
=
0
;
i
<
length
;
i
++
)
done
+=
base64_decode_single
(
ctx
,
dst
+
done
,
src
[
i
]);
assert
(
done
<=
BASE64_DECODE_LENGTH
(
length
));
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment