Skip to content

Commit e98bc42

Browse files
committed
Fix totp secret parsing
Now it supports both pre and post python 3.12 upgrade
1 parent 5897a66 commit e98bc42

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/main/java/io/cos/cas/osf/model/OsfTotp.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.Getter;
55
import lombok.NoArgsConstructor;
66
import lombok.ToString;
7+
import lombok.extern.slf4j.Slf4j;
78

89
import org.apache.commons.codec.binary.Base32;
910

@@ -28,6 +29,7 @@
2829
@NoArgsConstructor
2930
@Getter
3031
@ToString
32+
@Slf4j
3133
public class OsfTotp extends AbstractOsfModel {
3234

3335
@OneToOne
@@ -50,8 +52,14 @@ private boolean isDeleted() {
5052
}
5153

5254
public String getTotpSecretBase32() {
53-
final byte[] bytes = DatatypeConverter.parseHexBinary(totpSecret);
54-
return new Base32().encodeAsString(bytes);
55+
try {
56+
// Handle totpSecret generated before OSF Python 3.12 upgrade
57+
final byte[] bytes = DatatypeConverter.parseHexBinary(totpSecret);
58+
return new Base32().encodeAsString(bytes);
59+
} catch (final IllegalArgumentException e) {
60+
// Handle totpSecret generated after OSF Python 3.12 upgrade
61+
return new Base32().encodeAsString(totpSecret.getBytes());
62+
}
5563
}
5664

5765
public boolean isActive() {

0 commit comments

Comments
 (0)