VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/Translations/Language.bg.xml
AgeCommit message (Expand)AuthorFilesLines
2018-03-20XML Languages files: remove unused entry.Mounir IDRASSI1-1/+0
2018-03-05Windows: Replace the text "TRIM operation" by "TRIM command" in UI and transl...Mounir IDRASSI1-1/+1
2018-03-05Windows: Add option to block TRIM command on system encryption SSD drives.Mounir IDRASSI1-0/+1
2018-03-05XML Languages files: Add translation entry for non-system TRIM configurationMounir IDRASSI1-0/+1
2017-12-09Increment version to 1.22-BETA4 (1.22.4)Mounir IDRASSI1-1/+1
2017-11-28Language XML files: remove references to GOST89 since it is not supported any...Mounir IDRASSI1-1/+0
2017-08-02Windows: Increment version to 1.22-BETA3Mounir IDRASSI1-1/+1
2017-07-23Windows: Increment version to 1.22-BETA2-Build1Mounir IDRASSI1-1/+1
2017-07-23Windows: display notice about creating new Rescue Disk at first boot after up...Mounir IDRASSI1-0/+1
2017-07-02Increment version to 1.21 (1.21.1)Mounir IDRASSI1-1/+1
2017-06-23Increment version to 1.20 (1.20.3)Mounir IDRASSI1-1/+1
2017-06-09Language XML files: Add new fields.Mounir IDRASSI1-0/+8
2017-05-15Replace Codeplex links by ones on veracrypt.frMounir IDRASSI1-2/+2
2016-12-30Increment version to 1.20 BETA2 (1.20.2)Mounir IDRASSI1-1/+1
2016-12-30Windows: Implement Secure Desktop for password entry. Add option and command ...Mounir IDRASSI1-0/+1
2016-12-08Increment version to 1.20 BETA1 (1.20.1)Mounir IDRASSI1-1/+1
2016-12-08Windows: use "Temporarily" instead of "Temporary" in the text of a preference...Mounir IDRASSI1-1/+1
2016-10-17Increment version to 1.19 (1.19.4)Mounir IDRASSI1-1/+1
2016-10-17Update documentation and increment version to 1.19 BETA3 (1.19.3)Mounir IDRASSI1-1/+1
2016-08-21Increment version to 1.19 BETA2 (1.19.2)Mounir IDRASSI1-1/+1
2016-08-16Increment version to 1.18. Update user guide PDF file.VeraCrypt_1.18_PreReleaseMounir IDRASSI1-1/+1
2016-08-15Language XML files: add new fields.Mounir IDRASSI1-0/+2
2016-08-15Language XML files: update XML files with new fields and some changes.Mounir IDRASSI1-5/+10
2016-08-15Language XML files: add new fields related to UEFI and newly added ciphers.Mounir IDRASSI1-1/+4
2016-06-17Language XML files: add new fields related to enhanced benchmark dialogMounir IDRASSI1-0/+3
2016-06-02Crypto: Add support for Japanese encryption standard Camellia, including for ...Mounir IDRASSI1-0/+1
2016-05-14Remove UTF8 BOM from language XML filesMounir IDRASSI1-1/+1
2016-05-10Normalize all line terminatorsDavid Foerster1-1455/+1455
2016-05-05Windows: Add option and command line switch to hide waiting dialog when perfo...Mounir IDRASSI1-0/+1
2016-05-05Windows: Add checkbox in "VeraCrypt Format" to skip Rescue Disk verification ...Mounir IDRASSI1-0/+1
2016-05-04Windows/Linux/MacOSX: Set maximum PIM value to 2147468 in order to avoid havi...Mounir IDRASSI1-0/+1
2016-04-28Language XML files: add new fields related to Volume ID feature.Mounir IDRASSI1-0/+8
2016-03-17Language XML files: correct some entries to match English versionMounir IDRASSI1-4/+4
2016-02-14Increment version to 1.17. Update user guide PDF file.Mounir IDRASSI1-1/+1
2016-01-31Language XML files: update XML files with newly added fieldMounir IDRASSI1-0/+1
2016-01-27Language XML files: update with new fields. Reoder node so that new additions...Mounir IDRASSI1-6/+8
2016-01-10Language XML files: update XML files with newly added fieldMounir IDRASSI1-0/+1
2016-01-04Language XML files: update XML files with newly added fields.Mounir IDRASSI1-2/+2
2015-12-21Language XML files: update XML files with newly added fields.Mounir IDRASSI1-0/+2
2015-11-26Windows Language files: update language XML files with added new fields.Mounir IDRASSI1-40/+42
2015-11-08Language XML files: harmonize XML language files ad solve few issues.Mounir IDRASSI1-18/+18
2015-10-18Language XML files: add some missing fieldsMounir IDRASSI1-0/+5
2015-10-18Language XML files: remove unused ID.Mounir IDRASSI1-1/+0
2015-10-07Increment version to 1.16. Update user guide PDF file.VeraCrypt_1.16Mounir IDRASSI1-1/+1
2015-10-07Windows Language files: update language XML files with added new fields.Mounir IDRASSI1-0/+2
2015-09-26Increment version to 1.15. Update user guide PDF file.VeraCrypt_1.15Mounir IDRASSI1-1/+1
2015-09-26Windows Language files: update language XML files with added new fields.Mounir IDRASSI1-2/+4
2015-09-16Increment version to 1.14. Update user guide PDF file.VeraCrypt_1.14Mounir IDRASSI1-1/+1
2015-09-16Windows Language files: update language XML files with added new fields.Mounir IDRASSI1-0/+12
2015-09-01Language files: update XML files with new fields.Mounir IDRASSI1-3/+5
ghlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
;
; GOST89 implementation x64
; 
; Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
;
; This program and the accompanying materials
; are licensed and made available under the terms and conditions
; of the Apache License, Version 2.0.  
;
; The full text of the license may be found at
; https://opensource.org/licenses/Apache-2.0
;
; Some ideas from article https://xakep.ru/2013/10/19/shifrovanie-gost-28147-89/
;

[section .bss align=16]

;///////////////////////////////////////////////////////////////////
;// Win64 registers to save
;///////////////////////////////////////////////////////////////////
%macro SaveRegs 0
   sub rsp,8*8+10*16
   mov [rsp], rbx
   mov [rsp+8], rbp
   mov [rsp+8*2], rdi
   mov [rsp+8*3], rsi
   mov [rsp+8*4], r12
   mov [rsp+8*5], r13
   mov [rsp+8*6], r14
   mov [rsp+8*7], r15
%endmacro

%macro RestoreRegs 0
   mov rbx, [rsp]
   mov rbp, [rsp+8]
   mov rdi, [rsp+8*2]
   mov rsi, [rsp+8*3]
   mov r12, [rsp+8*4]
   mov r13, [rsp+8*5]
   mov r14, [rsp+8*6]
   mov r15, [rsp+8*7]
   add rsp,8*8+10*16
%endmacro

[section .text align=16]
;///////////////////////////////////////////////////////////////////
;// Crypting 2 blocks
;///////////////////////////////////////////////////////////////////
%macro gost_round2 2                               ; 1 - pos1, 2 - pos2
   ; 1st
   ; 1-2 byte
   add   ecx, r13d                                 ; add key
   movzx edi, cl
   movzx esi, ch
   xor   r14d, dword [r8 + 32 + 256*3*4 + rdi*4]
   xor   r14d, dword [r8 + 32 + 256*2*4 + rsi*4]
   shr   ecx, 16
   ; 3-4 ����
   movzx edi, cl
   xor   r14d, dword [r8 + 32 + 256*4 + rdi*4]
   movzx esi, ch
   xor   r14d, dword [r8 + 32 + rsi*4]
   mov   edx, [r8 + %1*4]                          ; read key for second step
   
   ; 2nd
   ; 1-2 byte
   add   eax, r10d                                 ; read key
   movzx r15d, al
   movzx ebp, ah
   xor   r11d, dword [r8 + 32 + 256*3*4 + r15*4]
   xor   r11d, dword [r8 + 32 + 256*2*4 + rbp*4]
   shr   eax, 16
   ; 3-4 ����
   movzx r15d, al
   xor   r11d, dword [r8 + 32 + 256*4 + r15*4]
   movzx ebp, ah
   xor   r11d, dword [r8 + 32 + rbp*4]
   mov   ebx, [r8 + %1*4]                          ; read key for second step
   
   ; second step
   ; 1st
   ; 1-2 byte
   add   edx, r14d                                 ; add key
   movzx edi, dl
   movzx esi, dh
   xor   r13d, dword [r8 + 32 + 256*3*4 + rdi*4]
   xor   r13d, dword [r8 + 32 + 256*2*4 + rsi*4]
   shr   edx, 16
   ; 3-4 ����
   movzx edi, dl
   xor   r13d, dword [r8 + 32 + 256*4 + rdi*4]
   movzx esi, dh
   xor   r13d, dword [r8 + 32 + rsi*4]
   mov   ecx, [r8 + %2*4]                          ; read key
   
   ; 2nd
   ; 1-2 byte
   add   ebx, r11d;                                ; add key
   movzx r15d, bl;
   movzx ebp, bh;
   xor   r10d, dword [r8 + 32 + 256*3*4 + r15*4]
   xor   r10d, dword [r8 + 32 + 256*2*4 + rbp*4]
   shr   ebx, 16
   ; 3-4 ����
   movzx r15d, bl
   xor   r10d, dword [r8 + 32 + 256*4 + r15*4]
   movzx ebp, bh
   xor   r10d, dword [r8 + 32 + rbp*4]
   mov   eax, [r8 + %2*4]                          ; read key
%endmacro

; input: r8 - &key, rcx - &IN
; returns: (r13) & (r10)
GostEncrypt2x64:
   ; 1st
   mov   r13d, [rcx]
   mov   r14,  [rcx]
   shr   r14, 32

   ; 2nd
   mov   r10d, [rcx + 16]
   mov   r11,  [rcx + 16]
   shr   r11, 32

   mov   ecx, [r8]
   mov   eax, ecx

   gost_round2 1, 2
   gost_round2 3, 4
   gost_round2 5, 6
   gost_round2 7, 0

   gost_round2 1, 2
   gost_round2 3, 4
   gost_round2 5, 6
   gost_round2 7, 0

   gost_round2 1, 2
   gost_round2 3, 4
   gost_round2 5, 6
   gost_round2 7, 7

   gost_round2 6, 5
   gost_round2 4, 3
   gost_round2 2, 1
   gost_round2 0, 0

   shl r13, 32                             ; combine
   or  r13, r14

   shl r10, 32                             ; combine
   or  r10, r11
   ret

; input: r8 - &key, rcx - &IN
; returns: (r13) & (r10)
GostDecrypt2x64:
   ; 1st
   mov   r13d, [rcx]
   mov   r14,  [rcx]
   shr   r14, 32

   ; 2nd
   mov   r10d, [rcx + 16]
   mov   r11,  [rcx + 16]
   shr   r11, 32

   mov   ecx, [r8]
   mov   eax, ecx

   gost_round2 1, 2
   gost_round2 3, 4
   gost_round2 5, 6
   gost_round2 7, 7

   gost_round2 6, 5
   gost_round2 4, 3
   gost_round2 2, 1
   gost_round2 0, 7

   gost_round2 6, 5
   gost_round2 4, 3
   gost_round2 2, 1
   gost_round2 0, 7

   gost_round2 6, 5
   gost_round2 4, 3
   gost_round2 2, 1
   gost_round2 0, 0

   shl r13, 32                             ; combine
   or  r13, r14

   shl r10, 32                             ; combine
   or  r10, r11
ret

;///////////////////////////////////////////////////////////////////
;// Crypting 1 block
;///////////////////////////////////////////////////////////////////
%macro gost_round1 2                                     ; 1 - pos1, 2 - pos2
   ; 1-2 byte
   add   ecx, r13d                                 ; add key
   movzx edi, cl
   movzx esi, ch
   xor   r14d, dword [r8 + 32 + 256*3*4 + rdi*4]
   xor   r14d, dword [r8 + 32 + 256*2*4 + rsi*4]
   shr   ecx, 16
   ; 3-4 ����
   movzx edi, cl
   xor   r14d, dword [r8 + 32 + 256*4 + rdi*4]
   movzx esi, ch
   xor   r14d, dword [r8 + 32 + rsi*4]
   mov   edx, [r8 + %1*4]                          ; read key for second step
   
   ; second step
   ; 1-2 byte
   add   edx, r14d                                 ; add key
   movzx edi, dl
   movzx esi, dh
   xor   r13d, dword [r8 + 32 + 256*3*4 + rdi*4]
   xor   r13d, dword [r8 + 32 + 256*2*4 + rsi*4]
   shr   edx, 16
   ; 3-4 ����
   movzx edi, dl
   xor   r13d, dword [r8 + 32 + 256*4 + rdi*4]
   movzx esi, dh
   xor   r13d, dword [r8 + 32 + rsi*4]
   mov   ecx, [r8 + %2*4]                          ; read key
%endmacro

; input: r8 - &gost_kds rcx - &IN
; returns: r13
GostEncrypt1x64:
   mov   r13d, [rcx]
   mov   r14,  [rcx]
   shr   r14, 32
   mov   ecx, [r8]

   gost_round1 1, 2
   gost_round1 3, 4
   gost_round1 5, 6
   gost_round1 7, 0
   
   gost_round1 1, 2
   gost_round1 3, 4
   gost_round1 5, 6
   gost_round1 7, 0
   
   gost_round1 1, 2
   gost_round1 3, 4
   gost_round1 5, 6
   gost_round1 7, 7
   
   gost_round1 6, 5
   gost_round1 4, 3
   gost_round1 2, 1
   gost_round1 0, 0

   shl r13, 32                             ; combine
   or  r13, r14
ret

; input: r8 - &gost_kds rcx - IN
; returns: r13
GostDecrypt1x64:
   mov   r13d, [rcx]
   mov   r14, [rcx]
   shr   r14, 32
   mov   ecx, [r8]
   
   gost_round1 1, 2
   gost_round1 3, 4
   gost_round1 5, 6
   gost_round1 7, 7
   
   gost_round1 6, 5
   gost_round1 4, 3
   gost_round1 2, 1
   gost_round1 0, 7
   
   gost_round1 6, 5
   gost_round1 4, 3
   gost_round1 2, 1
   gost_round1 0, 7
   
   gost_round1 6, 5
   gost_round1 4, 3
   gost_round1 2, 1
   gost_round1 0, 0

   shl r13, 32                             ; combine
   or  r13, r14
ret

global gost_encrypt_128_CBC_asm                     ; gost_encrypt_128_CBC_asm(uint64* in, uint64* out, gost_kds* kds, uint64 count);
; rcx - &in
; rdx - &out
; r8  - &gost_kds
; r9  - count
gost_encrypt_128_CBC_asm:
   SaveRegs                                 ; Saving
   
   sub rsp, 32
   mov [rsp], rdx                             ; Save out addr
   mov [rsp + 8], rcx                         ; Save in addr
   mov [rsp + 16], r8                         ; key addr

.do:
   mov [rsp + 24], r9                      ; Save count
   cmp r9, 2
   jge .blk2
   cmp r9, 1
   jge .blk1
   jmp .end

; One 128 block encryption
.blk1:
   mov  rcx, [rsp + 8]                         ; set in addr
   call GostEncrypt1x64

   mov rdx, [rsp]                              ; Restore out
   mov rcx, [rsp + 8]                          ; restore in

   mov [rdx], r13
   mov rax, [rcx + 8]
   xor rax, r13                              ; CBC

   add rdx, 8                                ;next 8 bytes
   mov [rdx], rax

   mov rcx, rdx
   call GostEncrypt1x64

   mov rdx, [rsp]                             ; Restore out addr
   mov rcx, [rsp+8]                           ; Restore in addr

   mov [rdx + 8], r13

   add rdx,16
   mov [rsp], rdx

   add rcx, 16
   mov [rsp+8], rcx

   mov r9, [rsp + 24]
   dec r9

   jmp .do

.blk2:
   mov  rcx, [rsp + 8]                         ; set in addr
   call GostEncrypt2x64

   mov rdx, [rsp]                              ; Restore out
   mov rcx, [rsp + 8]                          ; restore in

   mov [rdx], r13

   mov rax, [rcx + 8]
   xor rax, r13                              ; CBC

   mov [rdx + 16], r10

   mov rbx, [rcx + 24]
   xor rbx, r10                              ; CBC

   mov [rdx + 8], rax
   mov [rdx + 24], rbx

   add rdx, 8                                ;next 8 bytes

   mov rcx, rdx
   call GostEncrypt2x64

   mov rdx, [rsp]                             ; Restore out addr
   mov rcx, [rsp+8]                           ; Restore in addr

   mov [rdx + 8], r13
   mov [rdx + 24], r10

   add rdx,32
   mov [rsp], rdx

   add rcx, 32
   mov [rsp+8], rcx

   mov r9, [rsp + 24]
   sub r9, 2

   jmp .do

.end:
   add rsp, 32                              ; Load out addr
   RestoreRegs                              ; Load
ret

global gost_decrypt_128_CBC_asm                     ; gost_decrypt_128_CBC_asm(uint64* in, uint64* out, const gost_kds* kds, uint64 count);
; rcx - &in
; rdx - &out
; r8  - &gost_kds
; r9  - count
gost_decrypt_128_CBC_asm:
   SaveRegs                                 ; Saving
   
   sub rsp, 32
   mov [rsp], rdx                           ; Save out addr
   mov [rsp+8], rcx                         ; Save in addr
   mov [rsp+16], r8                         ; key addr

.do:
   mov [rsp + 24], r9                      ; Save count
   cmp r9, 2
   jge .blk2
   cmp r9, 1
   jge .blk1
   jmp .end

; One 128 block decryption
.blk1:
   add  rcx, 8
   call GostDecrypt1x64
   mov rdx, [rsp]                              ; Restore out
   mov rcx, [rsp + 8]                          ; Restore in
   mov rax, [rcx]
   xor rax, r13                                ; CBC
   mov [rdx + 8], rax

   call GostDecrypt1x64

   mov rdx, [rsp]                             ; Restore out addr
   mov rcx, [rsp+8]                           ; Restore in addr

   mov [rdx], r13

   add rdx,16
   mov [rsp], rdx

   add rcx, 16
   mov [rsp+8], rcx

   mov r9, [rsp + 24]
   dec r9

   jmp .do

.blk2:
   add  rcx, 8
   call GostDecrypt2x64
   mov rdx, [rsp]                              ; Restore out
   mov rcx, [rsp + 8]                          ; Restore in

   mov rax, [rcx]
   xor rax, r13                                ; CBC
   mov [rdx + 8], rax

   mov rbx, [rcx+16]
   xor rbx, r10                                ; CBC
   mov [rdx + 24], rbx

   call GostDecrypt2x64

   mov rdx, [rsp]                             ; Restore out addr
   mov rcx, [rsp+8]                           ; Restore in addr

   mov [rdx], r13
   mov [rdx+16], r10

   add rdx,32
   mov [rsp], rdx

   add rcx,32
   mov [rsp+8], rcx

   mov r9, [rsp + 24]
   sub r9, 2

   jmp .do

.end:
   add rsp, 32                              ; Load out addr
   RestoreRegs                              ; Load
ret