- local -a f_seq
- local -a f_oid
- local -a f_ver
-
- f_seq=$(echo $fid | awk -F ':' '{print $1}')
- f_oid=$(echo $fid | awk -F ':' '{print $2}')
- f_ver=$(echo $fid | awk -F ':' '{print $3}')
-
- printf "%s/%04x/%04x/%04x/%04x/%04x/%04x/%s" \
- $hsm_root $(($f_oid & 0xFFFF)) \
- $(($f_oid >> 16 & 0xFFFF)) \
- $(($f_seq & 0xFFFF)) \
- $(($f_seq >> 16 & 0xFFFF)) \
- $(($f_seq >> 32 & 0xFFFF)) \
- $(($f_seq >> 48 & 0xFFFF)) $fid
+ local seq=$(echo $fid | awk -F ':' '{print $1}')
+ local oid=$(echo $fid | awk -F ':' '{print $2}')
+ local ver=$(echo $fid | awk -F ':' '{print $3}')
+
+ case "$HSMTOOL_ARCHIVE_FORMAT" in
+ v1)
+ printf "%s/%04x/%04x/%04x/%04x/%04x/%04x/%s" \
+ $hsm_root $((oid & 0xFFFF)) \
+ $((oid >> 16 & 0xFFFF)) \
+ $((seq & 0xFFFF)) \
+ $((seq >> 16 & 0xFFFF)) \
+ $((seq >> 32 & 0xFFFF)) \
+ $((seq >> 48 & 0xFFFF)) $fid
+ ;;
+ v2)
+ printf "%s/%04x/%s" $hsm_root $(((oid ^ seq) & 0xFFFF)) $fid
+ ;;
+ esac