...
1// Copyright 2016 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build !purego
6
7#include "textflag.h"
8
9// func cryptBlocks(c code, key, dst, src *byte, length int)
10TEXT ·cryptBlocks(SB),NOSPLIT,$0-40
11 MOVD key+8(FP), R1
12 MOVD dst+16(FP), R2
13 MOVD src+24(FP), R4
14 MOVD length+32(FP), R5
15 MOVD c+0(FP), R0
16loop:
17 KM R2, R4 // cipher message (KM)
18 BVS loop // branch back if interrupted
19 XOR R0, R0
20 RET
21
22// func cryptBlocksChain(c code, iv, key, dst, src *byte, length int)
23TEXT ·cryptBlocksChain(SB),NOSPLIT,$48-48
24 LA params-48(SP), R1
25 MOVD iv+8(FP), R8
26 MOVD key+16(FP), R9
27 MVC $16, 0(R8), 0(R1) // move iv into params
28 MVC $32, 0(R9), 16(R1) // move key into params
29 MOVD dst+24(FP), R2
30 MOVD src+32(FP), R4
31 MOVD length+40(FP), R5
32 MOVD c+0(FP), R0
33loop:
34 KMC R2, R4 // cipher message with chaining (KMC)
35 BVS loop // branch back if interrupted
36 XOR R0, R0
37 MVC $16, 0(R1), 0(R8) // update iv
38 RET
39
View as plain text